アイデンティティフェデレーションは、すべてのプラットフォームタイプ(SaaS Cloud、Dedicated Cloud、Self-Managed インスタンス)の
Enterprise プランで Preview として利用できます。ご不明な点がある場合は、担当の W&B チームにお問い合わせください。本ドキュメントでは、
identity provider と JWT issuer という用語は同じ意味で使用します。この機能のコンテキストでは、どちらも同一の対象を指します。JWT issuer のセットアップ
- 組織のダッシュボードで Settings タブに移動します
- Authentication オプションで
Set up JWT Issuerをクリックします - テキストボックスに JWT issuer の URL を入力し、
Createをクリックします
${ISSUER_URL}/.well-known/openid-configuration パスにある OIDC ディスカバリードキュメントを探し、そのディスカバリードキュメント内の該当する URL から JSON Web Key Set (JWKS) を取得しようとします。JWKS は、JWT が該当するアイデンティティプロバイダ (IdP) によって発行されたものであることをリアルタイムに検証するために使用されます。
JWT を使用して W&B にアクセスする
- 組織で利用可能ないずれかの方法を用いて、アイデンティティプロバイダーにサインインする必要があります。プロバイダーによっては、API や SDK を用いて自動的にアクセスできるものもあれば、対応する UI を用いてのみアクセスできるものもあります。詳細については、W&B 組織の管理者または JWT issuer のオーナーに問い合わせてください。
- アイデンティティプロバイダーへのサインイン後に JWT を取得したら、それを安全な場所にあるファイルに保存し、その絶対ファイルパスを環境変数
WANDB_IDENTITY_TOKEN_FILEに設定します。 - W&B SDK または CLI を使用して W&B プロジェクトにアクセスします。SDK または CLI は JWT を自動的に検出し、JWT が正常に検証された後に、それを W&B アクセストークンに交換します。W&B アクセストークンは、run、メトリクス、アーティファクトなどを記録することで AI ワークフローを有効化するために、関連する API にアクセスする際に使用されます。アクセストークンはデフォルトでは
~/.config/wandb/credentials.jsonパスに保存されます。環境変数WANDB_CREDENTIALS_FILEを指定することでそのパスを変更できます。
JWT は、APIキーやパスワードなどの長期認証情報の問題点に対処するための、短期認証情報として設計されています。アイデンティティプロバイダーで設定された JWT の有効期限に応じて、JWT を継続的に更新し、環境変数
WANDB_IDENTITY_TOKEN_FILE で参照されているファイルに保存されていることを必ず確認する必要があります。W&B アクセストークンにもデフォルトの有効期限があり、その期限が切れると、SDK または CLI は JWT を使用して自動的に更新を試みます。その時点でユーザーの JWT も期限切れで更新されていない場合、認証エラーが発生する可能性があります。可能であれば、JWT の取得および有効期限切れ後の更新の仕組みを、W&B SDK または CLI を使用する AI ワークロードの一部として実装することを推奨します。JWT 検証
- JWT の署名は、W&B の組織レベルで設定された JWKS を使って検証されます。これは第一の防御線であり、ここで失敗する場合は、JWKS に問題があるか、JWT の署名方法に問題があることを意味します。
- JWT 内の
issクレームは、組織レベルで設定された issuer URL と一致している必要があります。 - JWT 内の
subクレームは、W&B 組織で設定されているユーザーのメールアドレスと一致している必要があります。 - JWT 内の
audクレームは、AI ワークフローの一部としてアクセスしているプロジェクトが属している W&B 組織の名前と一致している必要があります。Dedicated Cloud または Self-Managed インスタンスの場合、インスタンスレベルの環境変数SKIP_AUDIENCE_VALIDATIONをtrueに設定して audience クレームの検証をスキップするか、audience としてwandbを使用できます。 - JWT 内の
expクレームは、トークンが有効かどうか、または期限切れでリフレッシュが必要かどうかを確認するためにチェックされます。
外部サービスアカウント
- チームの Service Accounts タブに移動します
New service accountをクリックします- サービスアカウントの名前を入力し、
Authentication MethodとしてFederated Identityを選択し、Subjectを指定してCreateをクリックします
sub クレームは、チーム管理者がチームレベルの Service Accounts タブでサブジェクトとして設定する値と同じである必要があります。そのクレームは JWT validation の一部として検証されます。aud クレームの要件は、人間のユーザー用の JWT と同様です。
外部サービスアカウントの JWT を使って W&B にアクセスする 場合、初回の JWT の生成と継続的な更新を自動化する方が、一般的には簡単です。外部サービスアカウントを使用して記録された run を人間のユーザーに帰属させたい場合は、組み込みサービスアカウントの場合と同様に、AI ワークフロー向けに環境変数 WANDB_USERNAME または WANDB_USER_EMAIL を設定できます。
W&B は、柔軟性とシンプルさのバランスを取るために、データの機微度が異なる AI ワークロード全体で、組み込みサービスアカウントと外部サービスアカウントを組み合わせて使用することを推奨します。