主なメリット
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): チーム管理者が作成し、特定のチームのみに制限された アクセス 権を持ちます。
- 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:- 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.
- Click Create service account.
- Provide a name and select a default team.
- Click Create.
- Find the service account you just created.
- Click the action menu (
...), then click Create API key. - Provide a name for the API key, then click Create.
- Copy the API key and store it securely.
- Click Done.
組織スコープのサービスアカウントは、組織内のすべてのチームが所有する非制限プロジェクトへの アクセス 権を持っていますが、デフォルトのチームを設定する必要があります。これは、モデルトレーニング や生成 AI アプリの 環境 で
WANDB_ENTITY 変数が設定されていない場合に、ワークロードが失敗するのを防ぐためです。別のチームの プロジェクト で組織スコープのサービスアカウントを使用する場合は、WANDB_ENTITY 環境変数をそのチームに設定する必要があります。チームスコープのサービスアカウント
チームスコープのサービスアカウントは、そのチーム内の 制限付きプロジェクト を除き、チーム内のすべての プロジェクト で読み書きが可能です。チームスコープのサービスアカウントが制限付きプロジェクトに アクセス するには、その プロジェクト の管理者が明示的にサービスアカウントを プロジェクト に追加する必要があります。チームスコープのサービスアカウントを作成する
To create a new team-scoped service account and API key:- In your team’s settings, click Service Accounts.
- Click New Team Service Account.
- Provide a name for the service account.
- Set Authentication Method to Generate API key (default). If you select Federated Identity, the service account cannot own API keys.
- Click Create.
- Find the service account you just created.
- Click the action menu (
...), then click Create API key. - Provide a name for the API key, then click Create.
- Copy the API key and store it securely.
- Click Done.
サービスアカウントに予備の APIキー を作成する
To create an API key owned by a service account:- Navigate to the Service Accounts tab in your team or organization settings.
- Find the service account in the list.
- Click the action menu (
...), then click Create API key. - Provide a name for the API key, then click Create.
- Copy the displayed API key immediately and store it securely.
- Click Done.
サービスアカウントの APIキー を削除する
To delete an API key owned by an organization or team service account:- Go to Organization settings, then click API Keys.
- 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.
- Click the delete button.
WANDB_USERNAME または WANDB_USER_EMAIL 変数を使用したユーザー属性の紐付けは、参照されるユーザーがサービスアカウントの親チームに所属していない限り 機能しません。
外部サービスアカウント
組み込みのサービスアカウントに加えて、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 をトリガーしたかを追跡できるようにします。 -
環境設定: チームスコープのサービスアカウントの場合、Run が正しいチームに ログ 記録されるように、常に
WANDB_ENTITYを設定してください。 - エラーハンドリング: 認証失敗に対する適切なエラーハンドリングとアラートを実装し、サービスアカウントの資格情報の問題を迅速に特定できるようにします。
-
ドキュメント化: 以下の情報を文書化して維持してください。
- どのサービスアカウントが存在し、その目的は何か
- どのシステムや ワークフロー が各サービスアカウントを使用しているか
- 各アカウントを担当するチームの連絡先情報
トラブルシューティング
一般的な問題と解決策:- “Unauthorized” エラー: APIキー が正しく 設定 されているか、およびサービスアカウントがターゲット プロジェクト への アクセス 権を持っているかを確認してください。
- Run が表示されない:
WANDB_ENTITYが正しいチーム名に 設定 されているか確認してください。 - ユーザー属性の紐付けが機能しない:
WANDB_USERNAMEで指定された ユーザー がチームのメンバーであることを確認してください。 - 制限付きプロジェクトへのアクセスが拒否される: 制限付きプロジェクトの アクセス リストにサービスアカウントを明示的に追加してください。