主なメリット
サービスアカウントの主な利点:- ライセンスを消費しない: サービスアカウントはユーザーシートやライセンスを消費しません。
- 専用のAPIキー: 自動化ワークフロー向けの安全な認証情報。
- ユーザー属性の付与: 自動化されたrunを必要に応じて人間のユーザーに紐付けできます。
- エンタープライズ対応: 大規模な本番自動化向けに構築されています。
- 委任された操作: サービスアカウントは、作成元のユーザーまたは組織に代わって動作します。
概要
サービスアカウントを使用すると、個人のユーザー認証情報やハードコードされた認証情報を使わずに、W&B のワークフローを安全に自動化できます。2 つのスコープで作成できます。- 組織スコープ: 組織管理者が作成し、すべての チーム にアクセスできます。
- チームスコープ: チーム管理者が作成し、特定のチームのみにアクセスできます。
組織スコープのサービスアカウントは、組織 APIキーとは異なります。サービスアカウントは、独自のキーを保持する非人間のアイデンティティです。組織 APIキーは個人に属し、単一の組織内でその個人を認証します。
- CI/CDパイプライン: GitHub Actions、GitLab CI、Jenkins からモデル トレーニング run を自動的にログする。
- Scheduled jobs: 夜間のモデル再トレーニング、定期的な評価 run、またはデータ検証ワークフロー。
- Production monitoring: 本番システムから推論メトリクスやモデル性能をログする。
- Jupyter notebooks: JupyterHub や Google Colab 環境内の共有ノートブック。
- Kubernetes jobs: Kubernetes クラスターで実行される自動化ワークフロー。
- Airflow/Prefect/Dagster: ML パイプラインのオーケストレーションツール。
サービスアカウントは、専用クラウド、Enterprise ライセンスを持つセルフマネージド インスタンス、および Multi-tenant Cloud のエンタープライズアカウントで利用できます。
組織スコープのサービスアカウント
オートメーションで複数のチームにまたがるプロジェクト全体の読み取りまたは書き込みが必要な場合は、組織スコープのサービスアカウントを使用します。組織スコープのサービスアカウントには、制限付きプロジェクトを除き、チームに関係なく、その組織内のすべてのプロジェクトに対する読み取りおよび書き込み権限があります。組織スコープのサービスアカウントが制限付きプロジェクトにアクセスするには、そのプロジェクトの管理者が当該サービスアカウントを明示的にプロジェクトへ追加する必要があります。組織スコープのサービスアカウントを作成する
新しい組織スコープのサービスアカウントと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 をクリックします。
組織スコープのサービスアカウントは、組織内のすべてのチームが所有する非制限のプロジェクトにアクセスできる場合でも、デフォルトのチームが必要です。これは、モデル トレーニングや生成 AI アプリの環境で
WANDB_ENTITY 変数が設定されていない場合に、ワークロードの失敗を防ぐためです。別のチームのプロジェクトで組織スコープのサービスアカウントを使用するには、WANDB_ENTITY 環境変数をそのチームに設定する必要があります。チームスコープのサービスアカウント
最小権限の原則に従って、オートメーションの対象を単一のチームのprojectに限定したい場合は、チームスコープのサービスアカウントを使用してください。チームスコープのサービスアカウントは、そのチーム内のすべてのprojectに対して読み書きできます。ただし、そのチーム内の制限付きprojectにはアクセスできません。チームスコープのサービスアカウントが制限付きprojectにアクセスするには、そのprojectの管理者が当該サービスアカウントを明示的にprojectへ追加する必要があります。専用クラウドおよびセルフマネージド v0.83.0+ では、管理者はインスタンスで
GORILLA_DISABLE_TEAM_SERVICE_ACCOUNT_CREATION 環境変数を true に設定することで、チームスコープのサービスアカウントの作成を防止できます。高度な IAM 設定を参照してください。チームスコープのサービスアカウントを作成
新しいチームスコープのサービスアカウントとAPIキーを作成するには、次の手順に従います。- チームの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キーを追加で作成する
サービスアカウントに紐づくAPIキーを作成するには、次の手順に従います。- チームまたは組織の設定で、Service Accounts タブに移動します。
- 一覧からサービスアカウントを検索します。
- action () メニューをクリックし、Create API key をクリックします。
- APIキーの名を入力し、Create をクリックします。
- 表示されたAPIキーをすぐにコピーして、安全な場所に保管します。
- Done をクリックします。
サービスアカウントのAPIキーを削除する
組織またはチームのサービスアカウントが所有するAPIキーを削除するには、次の手順を実行します。- 組織の設定に移動し、APIキーをクリックします。
- 対象のAPIキーを探します。一覧には、組織およびチームのサービスアカウントが所有するすべてのAPIキーが表示されます。キー名またはIDで検索やフィルターを行い、任意の列で並べ替えます。
- 削除ボタンをクリックします。
WANDB_USERNAME または WANDB_USER_EMAIL 変数を使用したユーザー属性の付与は、参照先のユーザーがサービスアカウントの親チームに属していない限り、機能しません。
外部サービスアカウント
W&B ネイティブの APIキー を管理する代わりに、独自のアイデンティティプロバイダを通じて認証情報を発行したい場合は、外部サービスアカウントを使用します。組み込みのサービスアカウントに加えて、W&B は、JWT (JSON Web Token) を発行できる identity provider (IdP) を使用した アイデンティティ フェデレーション により、W&B SDK と CLI でチームスコープの外部サービスアカウントもサポートしています。ベストプラクティス
必要なサービスアカウントを作成したら、組織内でサービスアカウントを安全かつ効率的に使用するために、以下の推奨事項に従ってください。- シークレットマネージャーを使用する: サービスアカウントのAPIキーは、プレーンテキストの設定ファイルではなく、安全なシークレット管理システム (例: AWS Secrets Manager、HashiCorp Vault、Azure Key Vault) に保存してください。
- 最小権限の原則: アクセスを必要な project のみに制限するため、可能であれば組織スコープのアカウントではなく、チームスコープのサービスアカウントを作成してください。
- ユースケースごとに固有のサービスアカウントを使用する: 監査しやすくし、きめ細かなアクセス制御を可能にするため、オートメーションワークフローごとに個別のサービスアカウントを作成してください (例: 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 を誰がトリガーしたかをトラッキングしてください: -
環境設定: チームスコープのサービスアカウントでは、Runs が正しいチームにログされるよう、必ず
WANDB_ENTITYを設定してください: - エラー処理: サービスアカウント認証情報に関する問題をすばやく特定できるよう、認証失敗に対する適切なエラー処理とアラートを実装してください。
-
ドキュメント: 次の内容を文書化して維持してください:
- どのサービスアカウントが存在し、それぞれの用途は何か。
- 各サービスアカウントをどのシステムまたはワークフローが使用しているか。
- 各アカウントの担当チームの連絡先情報。
トラブルシューティング
サービスアカウントが想定どおりに動作しない場合は、以下のよくある問題と解決策を確認してください:- 「Unauthorized」エラー: APIキーが正しく設定されており、サービスアカウントに対象プロジェクトへのアクセス権があることを確認します。
- Runs が表示されない:
WANDB_ENTITYに正しいチーム名が設定されていることを確認します。 - ユーザー属性の付与が機能しない:
WANDB_USERNAMEで指定したユーザーがチームのメンバーであることを確認します。 - 制限付きプロジェクトへのアクセスが拒否される: 制限付きプロジェクトのアクセスリストにサービスアカウントを明示的に追加します。