主なメリット
サービスアカウントの主な利点:- ライセンスを消費しない: サービスアカウントはユーザーシートやライセンスを消費しません。
- 専用のAPIキー: 自動化されたワークフロー向けの安全な認証情報を使用できます。
- ユーザー属性の付与: 必要に応じて、自動化された run を実際のユーザーに関連付けることができます。
- エンタープライズ対応: 大規模な本番オートメーション向けに設計されています。
- 委譲された操作: サービスアカウントは、作成したユーザーまたは組織に代わって操作を実行します。
概要
サービスアカウントを使用すると、個人のユーザー認証情報やハードコードされた認証情報に頼ることなく、W&B のワークフローを安全に自動化できます。サービスアカウントは 2 つのスコープで作成できます。- 組織スコープ: 組織管理者が作成し、すべてのチームにアクセスできます。
- チームスコープ: チーム管理者が作成し、アクセスは特定のチームに限定されます。
組織スコープのサービスアカウントは、組織 APIキー とは異なります。サービスアカウントは独自のキーを持つ、人間以外のアイデンティティです。一方、組織 APIキーは個人に紐づくもので、単一の組織内でその個人を認証します。
- CI/CD パイプライン: GitHub Actions、GitLab CI、Jenkins からモデル トレーニング run を自動的にログします。
- スケジュールされたジョブ: 夜間のモデル再トレーニング、定期的な評価 run、データ検証のワークフローなど。
- 本番モニタリング: 本番システムから推論メトリクスやモデル性能をログします。
- Jupyter ノートブック: JupyterHub や Google Colab 環境での共有ノートブック。
- Kubernetes ジョブ: Kubernetes クラスターで実行される自動化ワークフロー。
- Airflow/Prefect/Dagster: ML パイプラインのオーケストレーションツール。
サービスアカウントは、専用クラウド、Enterprise ライセンスを持つセルフマネージドインスタンス、および Multi-tenant Cloud のエンタープライズアカウントで利用できます。
組織スコープのサービスアカウント
オートメーションが複数のチームの project にわたって読み書きする必要がある場合、組織スコープのサービスアカウントを使用します。組織にスコープされたサービスアカウントは、チームに関係なく、組織内のすべての project で読み書きする権限を持ちます。ただし、制限付きプロジェクト を除きます。組織スコープのサービスアカウントが制限付きプロジェクトにアクセスするには、その project の管理者が明示的にサービスアカウントを project に追加する必要があります。組織スコープのサービスアカウントを作成する
組織スコープのサービスアカウントとAPIキーを新規作成するには、次の手順に従います。- W&B にログインします。
- ユーザープロフィールアイコンをクリックし、Service Accounts に移動します。
- 専用クラウド または セルフマネージド: Organization Dashboard をクリックし、Service Accounts をクリックします。
- Multi-tenant Cloud: Service Accounts をクリックします。
- Create service account をクリックします。
- 名前を入力し、デフォルトのチームを選択します。
- Create をクリックします。
- 作成したサービスアカウントを検索し、action () メニューから Create API key をクリックします。
- APIキーの名前を入力し、Create をクリックします。
- APIキーをコピーし、安全な場所に保管します。
- Done をクリックします。
組織スコープのサービスアカウントは、組織内のすべてのチームが所有する制限なしの project にアクセスできる場合でも、デフォルトのチームが必要です。これは、モデル トレーニングや生成 AI アプリの環境で
WANDB_ENTITY 変数が設定されていない場合に、ワークロードが失敗するのを防ぐのに役立ちます。別のチームの project で組織スコープのサービスアカウントを使用するには、WANDB_ENTITY 環境変数をそのチームに設定する必要があります。チームスコープのサービスアカウント
オートメーションを単一のチームの project に限定したい場合、最小権限の原則に従ってチームスコープのサービスアカウントを使用します。チームスコープのサービスアカウントは、そのチーム内のすべての project で読み書きできますが、そのチーム内の制限付きプロジェクト を除きます。チームスコープのサービスアカウントが制限付きプロジェクトにアクセスするには、その project の管理者が明示的にサービスアカウントを project に追加する必要があります。専用クラウド および セルフマネージド v0.83.0+ では、管理者はインスタンス上で
GORILLA_DISABLE_TEAM_SERVICE_ACCOUNT_CREATION 環境変数を true に設定することで、チームスコープのサービスアカウントの作成を防止できます。高度な IAM 設定 を参照してください。チームスコープのサービスアカウントを作成する
新しいチームスコープのサービスアカウントと APIキーを作成するには、次の手順に従います。- チームの設定で Service Accounts をクリックします。
- New Team Service Account をクリックします。
- サービスアカウントの名を入力します。
- Authentication Method を Generate API key (デフォルト) に設定します。Federated Identity を選択した場合、サービスアカウントは APIキーを所有できません。
- Create をクリックします。
- 作成したサービスアカウントを検索し、その action () メニューをクリックして、Create API key をクリックします。
- APIキーの名を入力し、Create をクリックします。
- APIキーをコピーし、安全に保管します。
- Done をクリックします。
サービスアカウントの追加のAPIキーを作成する
サービスアカウントが所有するAPIキーを作成するには、次の手順を実行します。- チーム設定または組織設定で、Service Accounts タブに移動します。
- 一覧から対象のサービスアカウントを検索します。
- action () メニューをクリックし、Create API key をクリックします。
- APIキーの名を入力し、Create をクリックします。
- 表示されたAPIキーをすぐにコピーし、安全な場所に保管してください。
- Done をクリックします。
サービスアカウントのAPIキーを削除する
組織サービスアカウントまたはチームサービスアカウントが所有するAPIキーを削除するには、次の手順に従います。- 組織設定に移動し、API Keys をクリックします。
- 対象のAPIキーを検索します。一覧には、組織サービスアカウントとチームサービスアカウントが所有するすべてのAPIキーが表示されます。キー名または ID で検索やフィルターを行えるほか、任意の列で並べ替えることもできます。
- 削除ボタンをクリックします。
WANDB_USERNAME または WANDB_USER_EMAIL 変数によるユーザー属性の付与は_機能しません_。
外部サービスアカウント
W&B ネイティブの APIキーを管理する代わりに、ご自身のアイデンティティプロバイダを通じて認証情報を発行したい場合は、外部サービスアカウントを使用します。組み込みのサービスアカウントに加えて、W&B は W&B SDK および CLI を使用して、JSON Web Token (JWT) を発行するアイデンティティプロバイダとの アイデンティティ フェデレーション を用いたチームスコープの外部サービスアカウントもサポートします。ベストプラクティス
サービスアカウントを作成したら、組織内でのサービスアカウントの安全かつ効率的な使用を確保するため、以下の推奨事項に従ってください。- シークレットマネージャーの使用: サービスアカウントのAPIキーを平文の設定ファイルではなく、安全なシークレット管理システム (例: AWS Secrets Manager、HashiCorp Vault、Azure Key Vault) に保存します。
- 最小権限の原則: 組織スコープのアカウントではなく、チームスコープのサービスアカウントを可能な限り作成し、必要な project のみにアクセスを制限します。
- ユースケースごとの一意のサービスアカウント: 異なるオートメーションワークフローごとに個別のサービスアカウントを作成します (例: CI/CD用、定期的な再トレーニング用) 。これにより監査可能性が向上し、きめ細かなアクセス制御が可能になります。
- 定期的な監査: アクティブなサービスアカウントを定期的に確認し、使用しなくなったものを削除します。監査ログを確認してサービスアカウントのアクティビティを監視します。
-
APIキーの安全な処理:
- APIキーをバージョン管理にコミットしない。
- 環境変数を使用してアプリケーションにキーを渡す。
- 誤って公開された場合はキーをローテーションする。
-
命名規則: サービスアカウントの目的を示す説明的な名前を使用します。
- 推奨:
ci-model-training、nightly-eval-pipeline、prod-inference-monitor - 非推奨:
service-account-1、test-sa、temp
- 推奨:
-
ユーザー属性の付与: 複数のチームメンバーが同じオートメーションワークフローを使用する場合、
WANDB_USERNAMEまたはWANDB_USER_EMAILを設定して、どのユーザーが各 run をトリガーしたかをトラッキングします。 -
環境設定: チームスコープのサービスアカウントの場合、必ず
WANDB_ENTITYを設定して、run が正しいチームにログされるようにします。 - エラー処理: 認証の失敗に対する適切なエラー処理とアラートを実装し、サービスアカウントの認証情報に関する問題を迅速に特定できるようにします。
-
ドキュメント: 以下のドキュメントを維持します。
- 存在するサービスアカウントとその目的。
- 各サービスアカウントを使用するシステムまたはワークフロー。
- 各アカウントを担当するチームの連絡先情報。
トラブルシューティング
サービスアカウントが期待どおりに動作しない場合は、以下のよくある問題と解決策を確認してください。- 「Unauthorized」エラー: APIキーが正しく設定されていること、およびサービスアカウントが対象の project へのアクセス権を持っていることを確認します。
- run が表示されない:
WANDB_ENTITYが正しいチーム名に設定されていることを確認します。 - ユーザー属性の付与が機能しない:
WANDB_USERNAMEで指定したユーザーがチームのメンバーであることを確認します。 - 制限付きプロジェクトへのアクセスが拒否される: 制限付きプロジェクトのアクセスリストにサービスアカウントを明示的に追加します。