主なメリット
- ライセンスを消費しない: サービスアカウントはユーザーシートやライセンスを消費しません
- 専用のAPIキー: 自動化ワークフロー向けの安全な認証情報
- ユーザー属性の付与: 自動化されたrunを必要に応じて人間のユーザーに紐付けできます
- エンタープライズ対応: 大規模な本番自動化向けに構築されています
- 委任された操作: サービスアカウントは、作成元のユーザーまたは組織に代わって動作します
概要
- Organization-scoped: 組織管理者が作成し、すべての Teams にアクセスできます。
- Team-scoped: チーム管理者が作成し、特定のチームのみにアクセスできます
- CI/CD pipelines: GitHub Actions、GitLab CI、Jenkins からモデル トレーニング run を自動的にログする
- Scheduled jobs: 夜間のモデル再トレーニング、定期的な評価 run、またはデータ検証ワークフロー
- Production monitoring: 本番システムから推論メトリクスやモデル性能をログする
- Jupyter notebooks: JupyterHub や Google Colab 環境内の共有ノートブック
- Kubernetes jobs: K8s クラスターで実行される自動化ワークフロー
- Airflow/Prefect/Dagster: ML パイプラインのオーケストレーションツール
サービスアカウントは、専用クラウド、エンタープライズライセンスを持つセルフマネージド インスタンス、および Multi-tenant Cloud のエンタープライズアカウントで利用できます。
組織スコープのサービスアカウント
組織スコープのサービスアカウントを作成する
- W&B にログインし、ユーザープロフィールアイコンをクリックして、次のいずれかを行います。
- 専用クラウド または セルフマネージド: Organization Dashboard をクリックし、次に Service Accounts をクリックします。
- Multi-tenant Cloud: Service Accounts をクリックします。
- Create service account をクリックします。
- 名前を入力し、デフォルトのチームを選択します。
- Create をクリックします。
- 作成したサービスアカウントを探します。
- action () メニューをクリックし、次に Create API key をクリックします。
- APIキーの名前を入力し、Create をクリックします。
- APIキーをコピーし、安全な場所に保管します。
- Done をクリックします。
組織スコープのサービスアカウントは、組織内のすべてのチームが所有する非制限のプロジェクトにアクセスできる場合でも、デフォルトのチームが必要です。これは、モデル トレーニングや生成 AI アプリの環境で
WANDB_ENTITY 変数が設定されていない場合に、ワークロードの失敗を防ぐためです。別のチームのプロジェクトで組織スコープのサービスアカウントを使用するには、WANDB_ENTITY 環境変数をそのチームに設定する必要があります。チームスコープのサービスアカウント
チームスコープのサービスアカウントを作成
- チームのSettingsで、Service Accounts をクリックします。
- New Team Service Account をクリックします。
- サービスアカウントの名を入力します。
- Authentication Method を Generate API key (デフォルト) に設定します。Federated Identity を選択した場合、そのサービスアカウントはAPIキーを所有できません。
- Create をクリックします。
- 先ほど作成したサービスアカウントを検索します。
- action () メニューをクリックし、Create API key をクリックします。
- APIキーの名を入力し、Create をクリックします。
- APIキーをコピーして、安全な場所に保管します。
- Done をクリックします。
サービスアカウントのAPIキーを追加で作成する
- チームまたは組織の設定で、Service Accounts タブにアクセスします。
- 一覧からサービスアカウントを検索します。
- action () メニューをクリックし、Create API key をクリックします。
- APIキーの名を入力し、Create をクリックします。
- 表示されたAPIキーをすぐにコピーして、安全な場所に保管します。
- Done をクリックします。
サービスアカウントのAPIキーを削除する
- 組織の設定に移動し、APIキーをクリックします。
- 対象のAPIキーを探します。一覧には、組織およびチームのサービスアカウントが所有するすべてのAPIキーが表示されます。キー名またはIDで検索やフィルターを行え、任意の列で並べ替えることもできます。
- 削除ボタンをクリックします。
WANDB_USERNAME または WANDB_USER_EMAIL 変数を使用したユーザー属性の付与は、参照先のユーザーがサービスアカウントの親チームに属していない限り、機能しません。
外部サービスアカウント
ベストプラクティス
- シークレットマネージャーを使用する: サービスアカウントのAPIキーは、平文の設定ファイルではなく、安全なシークレット管理システム (例: AWS Secrets Manager、HashiCorp Vault、Azure Key Vault) に保存してください。
- 最小権限の原則: 必要なプロジェクトにのみアクセスを制限するため、可能であれば組織スコープのアカウントではなく、チームスコープのサービスアカウントを作成してください。
- ユースケースごとに固有のサービスアカウントを使用する: 監査性を高め、きめ細かなアクセス制御を可能にするため、用途ごとに個別のサービスアカウントを作成してください (例: CI/CD用、定期的な再トレーニング用) 。
- 定期的な監査: アクティブなサービスアカウントを定期的に見直し、不要になったものは削除してください。サービスアカウントのアクティビティを監視するためにaudit logsを確認してください。
-
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キーが正しく設定されており、サービスアカウントに対象プロジェクトへのアクセス権があることを確認します
- Runs が表示されない:
WANDB_ENTITYに正しいチーム名が設定されていることを確認します - ユーザー属性の付与が機能しない:
WANDB_USERNAMEで指定したユーザーがチームのメンバーであることを確認します - 制限付きプロジェクトへのアクセスが拒否される: 制限付きプロジェクトのアクセスリストにサービスアカウントを明示的に追加します