メインコンテンツへスキップ
サービスアカウントは、チーム内の プロジェクト 間やチームをまたいで一般的なタスクを自動的に実行できる、人間以外のユーザー(マシンユーザー)を表します。サービスアカウントは、CI/CD パイプライン、自動トレーニングジョブ、その他のマシン間の ワークフロー に最適です。

主なメリット

Key benefits of service accounts:
  • No license consumption: Service accounts do not consume user seats or licenses
  • Dedicated API keys: Secure credentials for automated workflows
  • User attribution: Optionally attribute automated runs to human users
  • Enterprise-ready: Built for production automation at scale
  • Delegated operations: Service accounts operate on behalf of the user or organization that creates them

概要

サービスアカウントは、個人のユーザー資格情報やハードコードされた資格情報を使用せずに、W&B の ワークフロー を安全に自動化する方法を提供します。サービスアカウントは以下の2つのスコープで作成できます。
  • 組織スコープ (Organization-scoped): 組織管理者が作成し、すべてのチームにわたる アクセス 権を持ちます。
  • チームスコープ (Team-scoped): チーム管理者が作成し、特定のチームのみに制限された アクセス 権を持ちます。
サービスアカウントの APIキー を使用することで、呼び出し元はそのスコープ内の プロジェクト に対してデータの読み書きが可能になります。これにより、W&B Models での 実験管理 や W&B Weave での トレース の ログ 記録など、自動化された ワークフロー を一元管理できます。 サービスアカウントは特に以下のようなケースで役立ちます。
  • CI/CD パイプライン: GitHub Actions、GitLab CI、Jenkins などから モデルトレーニング の Run を自動的に ログ 記録します。
  • スケジュールジョブ: 夜間の モデル 再トレーニング、定期的な評価 Run、データ バリデーションの ワークフロー など。
  • プロダクションモニタリング: プロダクション システムから推論 メトリクス や モデル パフォーマンスを ログ 記録します。
  • Jupyter ノートブック: JupyterHub や Google Colab 環境での共有 ノートブック。
  • Kubernetes ジョブ: K8s クラスター で実行される自動 ワークフロー。
  • Airflow/Prefect/Dagster: ML パイプライン の オーケストレーション ツール。
サービスアカウントは、Dedicated Cloud、エンタープライズライセンスの セルフマネージドインスタンス、および SaaS Cloud のエンタープライズアカウントで利用可能です。

組織スコープのサービスアカウント

組織スコープのサービスアカウントは、制限付きプロジェクト を除き、チームに関係なく組織内のすべての プロジェクト で読み書きの権限を持ちます。組織スコープのサービスアカウントが制限付きプロジェクトに アクセス するには、その プロジェクト の管理者が明示的にサービスアカウントを プロジェクト に追加する必要があります。

組織スコープのサービスアカウントを作成する

To create a new organization-scoped service account and API key:
  1. Log in to W&B, click your user profile icon, then:
    • Dedicated Cloud or Self-Managed: Click Organization Dashboard, then click Service Accounts.
    • Multi-tenant Cloud: Click Service Accounts.
  2. Click Create service account.
  3. Provide a name and select a default team.
  4. Click Create.
  5. Find the service account you just created.
  6. Click the action menu (...), then click Create API key.
  7. Provide a name for the API key, then click Create.
  8. Copy the API key and store it securely.
  9. Click Done.
The full API key is only shown once at creation time. After you close the dialog, you cannot view the full API key again. Only the key ID (first part of the key) is visible in your settings. If you lose the full API key, you must create a new API key.
組織スコープのサービスアカウントは、組織内のすべてのチームが所有する非制限プロジェクトへの アクセス 権を持っていますが、デフォルトのチームを設定する必要があります。これは、モデルトレーニング や生成 AI アプリの 環境 で WANDB_ENTITY 変数が設定されていない場合に、ワークロードが失敗するのを防ぐためです。別のチームの プロジェクト で組織スコープのサービスアカウントを使用する場合は、WANDB_ENTITY 環境変数をそのチームに設定する必要があります。

チームスコープのサービスアカウント

チームスコープのサービスアカウントは、そのチーム内の 制限付きプロジェクト を除き、チーム内のすべての プロジェクト で読み書きが可能です。チームスコープのサービスアカウントが制限付きプロジェクトに アクセス するには、その プロジェクト の管理者が明示的にサービスアカウントを プロジェクト に追加する必要があります。

チームスコープのサービスアカウントを作成する

To create a new team-scoped service account and API key:
  1. In your team’s settings, click Service Accounts.
  2. Click New Team Service Account.
  3. Provide a name for the service account.
  4. Set Authentication Method to Generate API key (default). If you select Federated Identity, the service account cannot own API keys.
  5. Click Create.
  6. Find the service account you just created.
  7. Click the action menu (...), then click Create API key.
  8. Provide a name for the API key, then click Create.
  9. Copy the API key and store it securely.
  10. Click Done.
The full API key is only shown once at creation time. After you close the dialog, you cannot view the full API key again. Only the key ID (first part of the key) is visible in your settings. If you lose the full API key, you must create a new API key.

サービスアカウントに予備の APIキー を作成する

To create an API key owned by a service account:
  1. Navigate to the Service Accounts tab in your team or organization settings.
  2. Find the service account in the list.
  3. Click the action menu (...), then click Create API key.
  4. Provide a name for the API key, then click Create.
  5. Copy the displayed API key immediately and store it securely.
  6. Click Done.
You can create multiple API keys for a single service account to support different environments or workflows.
The full API key is only shown once at creation time. After you close the dialog, you cannot view the full API key again. Only the key ID (first part of the key) is visible in your settings. If you lose the full API key, you must create a new API key.

サービスアカウントの APIキー を削除する

To delete an API key owned by an organization or team service account:
  1. Go to Organization settings, then click API Keys.
  2. Find the API key. The list includes all API keys owned by organization and team service accounts. You can search or filter by key name or ID, and you can sort by any column.
  3. Click the delete button.
チームスコープのサービスアカウントを使用する モデルトレーニング や生成 AI アプリの 環境 でチームを 設定 しない場合、モデル の Run や Weave の トレース は、サービスアカウントが所属する親チーム内の指定された プロジェクト に ログ 記録されます。このようなシナリオでは、WANDB_USERNAME または WANDB_USER_EMAIL 変数を使用したユーザー属性の紐付けは、参照されるユーザーがサービスアカウントの親チームに所属していない限り 機能しません
チームスコープのサービスアカウントは、親チーム以外のチームにある チームスコープまたは制限付きスコープのプロジェクト に Run を ログ 記録することはできませんが、他のチーム内の公開範囲が「オープン」な プロジェクト には Run を ログ 記録できます。

外部サービスアカウント

組み込みのサービスアカウントに加えて、W&B は JSON Web Token (JWT) を発行できる ID プロバイダー (IdP) との アイデンティティフェデレーション を使用して、W&B SDK および CLI でチームスコープの外部サービスアカウントもサポートしています。

ベストプラスティス

組織内でサービスアカウントを安全かつ効率的に使用するために、以下の推奨事項に従ってください。
  • シークレットマネージャーを使用する: サービスアカウントの APIキー は、プレーンテキストの設定ファイルではなく、安全なシークレット管理システム(例:AWS Secrets Manager、HashiCorp Vault、Azure Key Vault)に保存してください。
  • 最小権限の原則: アクセス 権を必要な プロジェクト のみに制限するため、可能な限り組織スコープではなく、チームスコープのサービスアカウントを作成してください。
  • ユースケース ごとに固有のサービスアカウントを作成する: 監査性を向上させ、きめ細かな アクセス 制御を可能にするために、異なる自動化 ワークフロー ごとに個別のサービスアカウントを作成してください(例:CI/CD 用に1つ、スケジュールされた再トレーニング用に別の1つ)。
  • 定期的な監査: アクティブなサービスアカウントを定期的に見直し、使用されていないものは削除してください。監査 ログ を確認して、サービスアカウントのアクティビティを監視してください。
  • 安全な APIキー の取り扱い:
    • APIキー を バージョン 管理システムにコミットしないでください。
    • アプリケーション に キー を渡す際は 環境 変数を使用してください。
    • キー が誤って漏洩した場合は、キー をローテーションしてください。
  • 命名規則: サービスアカウントの目的を示す説明的な名前を使用してください。
    • 良い例: ci-model-training, nightly-eval-pipeline, prod-inference-monitor
    • 避けるべき例: service-account-1, test-sa, temp
  • ユーザー属性の紐付け: 複数の チームメンバー が同じ自動化 ワークフロー を使用する場合、WANDB_USERNAME または WANDB_USER_EMAIL を設定して、誰が各 Run をトリガーしたかを追跡できるようにします。
    export WANDB_API_KEY="<service_account_key>"
    export WANDB_USERNAME="john.doe@company.com"
    
  • 環境設定: チームスコープのサービスアカウントの場合、Run が正しいチームに ログ 記録されるように、常に WANDB_ENTITY を設定してください。
    export WANDB_ENTITY="ml-team"
    export WANDB_PROJECT="production-models"
    
  • エラーハンドリング: 認証失敗に対する適切なエラーハンドリングとアラートを実装し、サービスアカウントの資格情報の問題を迅速に特定できるようにします。
  • ドキュメント化: 以下の情報を文書化して維持してください。
    • どのサービスアカウントが存在し、その目的は何か
    • どのシステムや ワークフロー が各サービスアカウントを使用しているか
    • 各アカウントを担当するチームの連絡先情報

トラブルシューティング

一般的な問題と解決策:
  • “Unauthorized” エラー: APIキー が正しく 設定 されているか、およびサービスアカウントがターゲット プロジェクト への アクセス 権を持っているかを確認してください。
  • Run が表示されない: WANDB_ENTITY が正しいチーム名に 設定 されているか確認してください。
  • ユーザー属性の紐付けが機能しない: WANDB_USERNAME で指定された ユーザー がチームのメンバーであることを確認してください。
  • 制限付きプロジェクトへのアクセスが拒否される: 制限付きプロジェクトの アクセス リストにサービスアカウントを明示的に追加してください。