1.1 - SDK でフェデレーテッドアイデンティティを使用する
W&B SDKを使用して、組織の資格情報を使用したサインインにアイデンティティ連携を利用します。W&Bの組織管理者が組織向けにSSOを設定している場合、すでに組織の資格情報を使用してW&BアプリのUIにサインインしています。この意味で、アイデンティティ連携はW&B SDKのためのSSOに似ていますが、JSON Web Tokens (JWTs) を直接使用しています。APIキーの代わりにアイデンティティ連携を使用できます。
RFC 7523 は、SDKを使用したアイデンティティ連携の基盤を形成しています。
アイデンティティ連携は、すべてのプラットフォームタイプの Enterprise
プランで Preview
として利用可能です - SaaS Cloud、Dedicated Cloud、およびセルフマネージドインスタンス。ご質問がある場合は、W&Bチームにお問い合わせください。
このドキュメントの目的のために、identity provider
と JWT issuer
という用語は交換可能に使われています。この機能のコンテキストでは、両方とも同じものを指します。
JWTイシュア設定
最初のステップとして、組織管理者はW&B組織とアクセス可能なJWTイシュアの間で連携を設定しなければなりません。
組織ダッシュボードの Settings タブに移動します。
Authentication オプションで Set up JWT Issuer
をクリックします。
テキストボックスにJWTイシュアのURLを追加し、Create
を押します。
W&Bは、${ISSUER_URL}/.well-known/oidc-configuration
パスでOIDCディスカバリードキュメントを自動的に探し、ディスカバリードキュメント内の関連URLでJSON Web Key Set (JWKS) を見つけようとします。JWKSは、JWTが関連するアイデンティティプロバイダーによって発行されたものであることを確認するために使用されるリアルタイム検証に利用されます。
W&BへのJWTを使用
JWTイシュアがW&B組織のために設定されると、ユーザーはそのアイデンティティプロバイダーによって発行されたJWTを使用して関連するW&B Projectsへのアクセスを開始できます。JWTを使用するメカニズムは次の通りです:
組織内で利用可能なメカニズムの1つを使用して、アイデンティティプロバイダーにサインインする必要があります。一部のプロバイダーはAPIやSDKを使用して自動化された方法でアクセスでき、他のプロバイダーは関連するUIを使用してのみアクセス可能です。詳細については、W&B組織管理者やJWTイシュアの所有者にお問い合わせください。
アイデンティティプロバイダーにサインインした後、JWTをセキュアな場所に保存し、環境変数 WANDB_IDENTITY_TOKEN_FILE
に絶対ファイルパスを設定してください。
W&B SDKやCLIを使用してW&Bプロジェクトにアクセスします。SDKやCLIは自動的にJWTを検出し、JWTが正常に検証された後にそれをW&Bアクセストークンと交換します。W&Bアクセストークンは、AIワークフローを有効にするためにrun、メトリクス、アーティファクトのログを記録するための関連するAPIにアクセスするために使用されます。アクセストークンはデフォルトで ~/.config/wandb/credentials.json
のパスに保存されます。環境変数 WANDB_CREDENTIALS_FILE
を指定することでそのパスを変更することができます。
JWTは、APIキー、パスワードなどの長期間の資格情報の欠点に対処するための短期間の資格情報として意図されています。あなたのアイデンティティプロバイダーで設定されたJWTの有効期限に応じて、JWTを継続的にリフレッシュし、環境変数 WANDB_IDENTITY_TOKEN_FILE
で参照されるファイルに保存されていることを確認する必要があります。
W&Bアクセストークンにもデフォルトの有効期限があり、SDKまたはCLIは、それがあなたのJWTを使用して自動的にリフレッシュしようとします。その時点でユーザーJWTが期限切れになってリフレッシュされていない場合、認証に失敗する可能性があります。可能であれば、W&B SDKやCLIを使用したAIワークロードの一部として、JWTの取得と有効期限後のリフレッシュメカニズムを実装するべきです。
JWT検証
JWTをW&Bアクセストークンと交換し、プロジェクトにアクセスするためのワークフローの一環として、JWTは以下の検証を受けます:
JWT署名はW&B組織レベルでJWKSを使用して検証されます。これが最初の防御線であり、これが失敗した場合、あなたのJWKSやJWTの署名に問題があることを意味します。
JWT内の iss
クレームは、組織レベルで設定されたイシュアURLと等しいものである必要があります。
JWT内の sub
クレームは、W&B組織で設定されたユーザーのメールアドレスと等しいものである必要があります。
JWT内の aud
クレームは、AIワークフローの一部としてアクセスしているプロジェクトを保有しているW&B組織の名前と同じである必要があります。Dedicated Cloud または セルフマネージド インスタンスの場合、インスタンスレベルの環境変数 SKIP_AUDIENCE_VALIDATION
を true
に設定してオーディエンスクレームの検証をスキップするか、wandb
をオーディエンスとして使用します。
JWT内の exp
クレームは、トークンが有効で期限が切れていないか、リフレッシュが必要であるかを確認するためにチェックされます。
外部サービスアカウント
W&Bは長期間のAPIキーを持つ組み込みのサービスアカウントを長年にわたりサポートしてきました。SDKとCLIのアイデンティティ連携機能を使用すると、外部サービスアカウントを持ち込むことができ、JWTを使用して認証することも可能です。ただし、それらが組織レベルで設定されている同じイシュアによって発行されている限りです。チーム管理者は、組み込みのサービスアカウントのように、チームの範囲内で外部サービスアカウントを設定することができます。
外部サービスアカウントを設定するには:
チームの Service Accounts タブに移動します。
New service account
を押します。
サービスアカウントの名前を入力し、Authentication Method
として Federated Identity
を選択し、Subject
を提供して Create
を押します。
外部サービスアカウントのJWT内の sub
クレームは、チーム管理者がチームレベルの Service Accounts タブでそのサブジェクトとして設定したものと同じである必要があります。このクレームは、JWT検証 の一環として検証されます。aud
クレームの要件は、人間のユーザーJWTと同様です。
W&Bへの外部サービスアカウントのJWTを使用するとき 、通常、初期JWTを生成し、継続的にリフレッシュするワークフローを自動化する方が簡単です。外部サービスアカウントを使用してログに記録されたrunを人間ユーザーに帰属させる場合、組み込みサービスアカウントと同様に、AIワークフローのために環境変数 WANDB_USERNAME
または WANDB_USER_EMAIL
を設定することができます。
W&Bは、データの機密性が異なるAIワークロード全体で、柔軟性と簡潔さのバランスを取るために、組み込みおよび外部サービスアカウントの組み合わせを使用することをお勧めします。
1.3 - SSO を OIDC で設定
W&B サーバーは、OpenID Connect (OIDC) 互換のアイデンティティ プロバイダーをサポートしており、Okta、Keycloak、Auth0、Google、および Entra などの外部アイデンティティ プロバイダーを通じてユーザー アイデンティティとグループ メンバーシップを管理できます。
OpenID Connect (OIDC)
W&B サーバーは、外部アイデンティティプロバイダー (IdP) とのインテグレーションのために、次の OIDC 認証フローをサポートします。
フォームポストを使用したインプリシットフロー
コードエクスチェンジのための証明キーを使用した認可コードフロー (PKCE)
これらのフローはユーザーを認証し、必要なアイデンティティ情報 (ID トークンの形式) を W&B サーバーに提供してアクレス制御を管理します。
ID トークンは、ユーザーの名前、ユーザー名、メール、およびグループメンバーシップなど、ユーザーのアイデンティティ情報を含む JWT です。W&B サーバーはこのトークンを使用してユーザーを認証し、システム内で適切なロールやグループにマッピングします。
W&B サーバーのコンテキストでは、アクセストークンはユーザーを代表して API へのリクエストを認可しますが、W&B サーバーの主な関心はユーザー認証とアイデンティティであるため、ID トークンのみが必要です。
環境変数を使用して、Dedicated cloud の IAM オプションを設定 するか、Self-managed インスタンスを設定することができます。
Dedicated cloud または Self-managed W&B サーバーインストールのためにアイデンティティ プロバイダーを設定する際は、さまざまな IdP に関するこれらのガイドラインに従ってください。SaaS バージョンの W&B を使用している場合は、組織の Auth0 テナントを設定するための支援を求めるには support@wandb.com に連絡してください。
AWS Cognito を認証に設定する手順は以下の通りです:
最初に AWS アカウントにサインインし、AWS Cognito アプリに移動します。
IdP にアプリケーションを設定するための許可されたコールバック URL を入力します:
http(s)://YOUR-W&B-HOST/oidc/callback
をコールバック URL として追加します。 YOUR-W&B-HOST
を W&B ホストパスに置き換えます。
IdP がユニバーサルログアウトをサポートしている場合は、ログアウト URL を http(s)://YOUR-W&B-HOST
に設定します。 YOUR-W&B-HOST
を W&B ホストパスに置き換えます。
たとえば、アプリケーションが https://wandb.mycompany.com
で実行されている場合、YOUR-W&B-HOST
を wandb.mycompany.com
に置き換えます。
下の画像は、AWS Cognito で許可されたコールバックとサインアウト URL を提供する方法を示しています。
wandb/local はデフォルトで implicit
grant with the form_post
response type を使用します。
また、wandb/local を設定して、PKCE Code Exchange フローを使用する authorization_code
grant を実行することもできます。
アプリにトークンを届ける方法を AWS Cognito で設定するために、1 つ以上の OAuth グラントタイプを選択します。
W&B は特定の OpenID Connect (OIDC) スコープを要求します。AWS Cognito App から以下を選択してください:
“openid”
“profile”
“email”
たとえば、AWS Cognito アプリの UI は以下の画像のようになります:
設定ページで Auth Method を選択するか、OIDC_AUTH_METHOD
環境変数を設定して、どのグラントが wandb/local に適しているかを指定します。
Auth Method を pkce
に設定する必要があります。
クライアント ID および OIDC 発行者の URL が必要です。OpenID ディスカバリドキュメントは $OIDC_ISSUER/.well-known/openid-configuration
で利用可能でなければなりません。
たとえば、ユーザープール ID を User Pools セクションの App Integration タブから、Cognito IdP URL に追加することで発行者 URL を生成できます:
IDP URL には「Cognito ドメイン」を使用しないでください。Cognito は https://cognito-idp.$REGION.amazonaws.com/$USER_POOL_ID
でそのディスカバリドキュメントを提供します。
Okta を認証に設定する手順は以下の通りです:
https://login.okta.com/ で Okta ポータルにログインします。
左側のサイドバーで Applications 、そして再度 Applications を選択します。
“Create App integration” をクリックします。
“Create a new app integration” 画面で OIDC - OpenID Connect と Single-Page Application を選択し、次に「Next」をクリックします。
“New Single-Page App Integration” 画面で、次の内容を入力し「Save」をクリックします:
アプリ統合名、例として “Weights & Biases”
グラントタイプ: Authorization Code と Implicit (hybrid) の両方を選択
サインイン リダイレクト URI: https://YOUR_W_AND_B_URL/oidc/callback
サインアウト リダイレクト URI: https://YOUR_W_AND_B_URL/logout
割り当て: Skip group assignment for now を選択
作成したばかりの Okta アプリケーションの概要画面で、Client ID を Client Credentials の General タブの下に記録します:
Okta OIDC 発行者 URL を特定するには、左側のメニューで Settings そして Account を選択します。
Okta UI は Organization Contact の下に企業名を表示します。
OIDC 発行者 URL は https://COMPANY.okta.com
の形式です。該当する値で COMPANY を置き換えて、注意してください。
https://portal.azure.com/ で Azure ポータルにログインします。
「Microsoft Entra ID」サービスを選択します。
左側のサイドバーで「App registrations」を選択します。
上部で「New registration」をクリックします。
「アプリケーションの登録」画面で次の値を入力します:
名前を指定します。例として「Weights and Biases application」
デフォルトでは選択されたアカウントタイプは「この組織ディレクトリ内のアカウントのみ (デフォルトディレクトリのみ - シングルテナント)」です。必要に応じて修正してください。
リダイレクト URI を Web タイプで設定し、値は https://YOUR_W_AND_B_URL/oidc/callback
「登録」をクリックします。
「アプリケーション (client) ID」と「ディレクトリ (テナント) ID」をメモしておいてください。
左側のサイドバーで、Authentication をクリックします。
左側のサイドバーで「Certificates & secrets」をクリックします。
「Client secrets」をクリックし、「New client secret」をクリックします。
「クライアントシークレットの追加」画面で次の値を入力します:
これで次の 3 つの値をメモしておいてください:
OIDC クライアント ID
OIDC クライアントシークレット
OIDC 発行者 URL に必要なテナント ID
OIDC 発行者 URL は次の形式です:https://login.microsoftonline.com/${TenantID}/v2.0
W&B サーバーでの SSO 設定
SSO を設定するには、管理者権限と次の情報が必要です:
OIDC クライアント ID
OIDC 認証方法(implicit
または pkce
)
OIDC 発行者 URL
OIDC クライアントシークレット (オプション; IdP の設定方法に依存します)
IdP が OIDC クライアントシークレットを要求する場合、環境変数 OIDC_CLIENT_SECRET
で指定してください。
SSO の設定は、W&B サーバー UI を使用するか、wandb/local
pod に環境変数 を渡して設定することができます。環境変数が UI よりも優先されます。
SSO を設定した後でインスタンスにログインできない場合、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、一時的なパスワードがコンテナのログに出力され、SSO が無効になります。SSO の問題を解決したら、環境変数を削除して SSO を再度有効化する必要があります。
System Console
System settings
System Console は System Settings ページの後継です。これは W&B Kubernetes Operator ベースのデプロイメントで利用可能です。
Access the W&B Management Console を参照してください。
Settings に移動し、次に Authentication を選択します。Type ドロップダウンで OIDC を選択します。
値を入力します。
Save をクリックします。
ログアウトし、IdP ログイン画面を使用して再度ログインします。
Weights&Biases インスタンスにサインインします。
W&B アプリに移動します。
ドロップダウンから System Settings を選択します:
発行者、クライアント ID、および認証方法を入力します。
Update settings を選択します。
SSO を設定した後でインスタンスにログインできない場合、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、一時的なパスワードがコンテナのログに出力され、SSO がオフになります。SSO の問題を解決したら、環境変数を削除して SSO を再度有効化する必要があります。
セキュリティ・アサーション・マークアップ言語 (SAML)
W&B サーバーは SAML をサポートしていません。
1.4 - ワークフローを自動化するためにサービスアカウントを使用する
組織およびチームスコープのサービスアカウントを使用して、自動または非対話型のワークフローを管理する
サービスアカウントは、チーム内のプロジェクト全体または複数チームにわたって、一般的なタスクを自動で実行できる人間でない(または機械の)ユーザーを表します。
組織の管理者は、組織のスコープでサービスアカウントを作成することができます。
チームの管理者は、そのチームのスコープでサービスアカウントを作成することができます。
サービスアカウントの APIキー により、呼び出し元はサービスアカウントのスコープ内のプロジェクトを読み書きできます。
サービスアカウントは、W&B Modelsの実験管理を自動化したり、W&B Weaveのトレースをログ記録したりするために、複数のユーザーやチームによるワークフローを集中管理することを可能にします。また、WANDB_USERNAME
またはWANDB_USER_EMAIL
の環境変数 を使用することにより、サービスアカウントで管理されているワークフローに人間ユーザーのアイデンティティを関連付けるオプションもあります。
組織スコープのサービスアカウント
組織スコープのサービスアカウントは、チームに関係なく、組織内のすべてのプロジェクトを読み書きする権限を持ちます。ただし、制限付きプロジェクト は例外です。制限付きプロジェクトにアクセスする前に、そのプロジェクトの管理者は明示的にサービスアカウントをプロジェクトに追加する必要があります。
組織管理者は、組織またはアカウントダッシュボードの Service Accounts タブから組織スコープのサービスアカウントの APIキー を取得できます。
新しい組織スコープのサービスアカウントを作成するには:
組織ダッシュボードの Service Accounts タブで New service account ボタンをクリックします。
Name を入力します。
サービスアカウントのデフォルトチームを選択します。
Create をクリックします。
新しく作成されたサービスアカウントの横で Copy API key をクリックします。
コピーした APIキー を秘密管理マネージャーまたは他の安全でアクセス可能な場所に保存します。
組織スコープのサービスアカウントはデフォルトのチームが必要ですが、それでも組織内のすべてのチームが所有する非制限プロジェクトにアクセスできます。これは、 WANDB_ENTITY
変数が モデルトレーニング や生成AIアプリの環境に設定されていない場合に、ワークロードが失敗するのを防ぐのに役立ちます。異なるチームのプロジェクトに組織スコープのサービスアカウントを使用するには、そのチームに WANDB_ENTITY
環境変数を設定する必要があります。
チームスコープのサービスアカウント
チームスコープのサービスアカウントは、そのチーム内のすべてのプロジェクトを読み書きできますが、そのチーム内の制限付きプロジェクト は除きます。制限付きプロジェクトにアクセスする前に、そのプロジェクトの管理者は明示的にサービスアカウントをプロジェクトに追加する必要があります。
チームの管理者として、 <WANDB_HOST_URL>/<your-team-name>/service-accounts
でチームスコープのサービスアカウントの APIキー を取得できます。あるいは、チームの Team settings で Service Accounts タブを参照してください。
チーム用の新しいチームスコープのサービスアカウントを作成するには:
チームの Service Accounts タブで New service account ボタンをクリックします。
Name を入力します。
認証メソッドとして Generate API key (Built-in) を選択します。
Create をクリックします。
新しく作成されたサービスアカウントの横で Copy API key をクリックします。
コピーした APIキー を秘密管理マネージャーまたは他の安全でアクセス可能な場所に保存します。
チームスコープのサービスアカウントを使用する モデルトレーニング や生成AIアプリの環境でチームを設定しないと、モデルのrunやweaveトレースがサービスアカウントの親チーム内の指定されたプロジェクトにログ記録されます。このようなシナリオでは、参照されているユーザーがサービスアカウントの親チームの一部でない限り、WANDB_USERNAME
または WANDB_USER_EMAIL
変数を使用したユーザー帰属は 機能しません 。
チームスコープのサービスアカウントは、親チームとは異なるチーム内の
チームスコープか制限スコープのプロジェクト に runをログ記録することはできませんが、他のチーム内の公開範囲プロジェクトには runをログ記録できます。
外部サービスアカウント
Built-in サービスアカウントに加えて、W&B は アイデンティティのフェデレーション を使用して、JSON Web Tokens (JWTs) を発行できるアイデンティティプロバイダー (IdPs) とともに、W&B SDK と CLI を用いたチームスコープの 外部サービスアカウント もサポートしています。
2 - アクセス管理
組織内でのユーザーとチームの管理
ユニークな組織ドメインで W&B に初めてサインアップしたユーザーは、その組織のインスタンス管理者ロール に割り当てられます。組織管理者は特定のユーザーにチーム管理者ロールを割り当てます。
W&B は、組織に複数のインスタンス管理者を持つことを推奨しています。これは、主な管理者が不在の場合にも管理業務を継続できるようにするためのベストプラクティスです。
チーム管理者 は、チーム内で管理権限を持つ組織内のユーザーです。
組織管理者は、https://wandb.ai/account-settings/
の組織アカウント設定にアクセスして、ユーザーを招待したり、ユーザーの役割を割り当てたり更新したり、チームを作成したり、組織からユーザーを削除したり、請求管理者を割り当てたりすることができます。詳細については、ユーザーの追加と管理 を参照してください。
組織管理者がチームを作成すると、インスタンス管理者またはチーム管理者は次のことができます:
デフォルトでは、管理者のみがそのチームにユーザーを招待したり、チームからユーザーを削除したりできます。この振る舞いを変更するには、チーム設定 を参照してください。
チームメンバーの役割を割り当てたり更新したりします。
組織に参加した際に自動的に新しいユーザーをチームに追加します。
組織管理者とチーム管理者は、https://wandb.ai/<your-team-name>
のチームダッシュボードを使用してチームを管理します。詳細とチームのデフォルトの公開範囲を設定するには、チームの追加と管理 を参照してください。
特定のプロジェクトへの公開範囲の制限
W&B プロジェクトの範囲を定義して、誰がそのプロジェクトを閲覧、編集、そして W&B の run をサブミットできるかを制限します。プロジェクトを閲覧できる人を制限することは、特にチームが機密または秘密のデータを扱う場合に役立ちます。
組織管理者、チーム管理者、またはプロジェクトの所有者は、プロジェクトの公開範囲を設定および編集することができます。
詳細については、プロジェクトの公開範囲 を参照してください。
2.1 - あなたの組織を管理する
組織の管理者として、組織内の個々のユーザーを管理 し、チームを管理 できます。
チーム管理者として、チームを管理 できます。
以下のワークフローは、インスタンス管理者の役割を持つユーザーに適用されます。インスタンス管理者の権限が必要だと思われる場合は、組織の管理者に問い合わせてください。
組織内のユーザー管理を簡素化したい場合は、ユーザーとチームの管理を自動化する を参照してください。
組織名の変更
以下のワークフローはW&BマルチテナントSaaSクラウドにのみ適用されます。
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで 設定 を選択します。
設定 タブ内で 一般 を選択します。
名前を変更 ボタンを選択します。
表示されるモーダル内に、新しい組織名を入力し、名前を保存 ボタンを選択します。
ユーザーの追加と管理
管理者として、組織のダッシュボードを使用して次のことを行います。
ユーザーを招待または削除する。
ユーザーの組織の役割を割り当てまたは更新し、カスタム役割を作成する。
請求管理者を割り当てる。
組織の管理者がユーザーを組織に追加する方法はいくつかあります。
招待によるメンバー
SSOによる自動プロビジョニング
ドメインキャプチャ
シートと価格
以下の表は、Models と Weave のシートの仕組みをまとめたものです。
製品
シート
費用基準
Models
セットごとの支払い
支払い済みの Models シートの数と、累積した使用量が総合的なサブスクリプション費用を決定します。各ユーザーには、3 つの利用可能なシートタイプのいずれかを割り当てることができます: Full, Viewer, No-Access
Weave
無料
使用量に基づく
ユーザーを招待する
管理者は、組織内の特定のチームに加えてユーザーを組織に招待できます。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで ユーザー を選択します。
新しいユーザーを招待する を選択します。
表示されるモーダルで、メールまたはユーザー名 フィールドにそのユーザーのメールまたはユーザー名を入力します。
(推奨) チームを選択 ドロップダウンメニューから、そのユーザーをチームに追加します。
役割を選択 ドロップダウンから、そのユーザーに割り当てる役割を選択します。ユーザーの役割は後で変更可能です。役割を割り当てる に記載されている表を参照して、可能な役割について更に詳しく知ってください。
招待を送信 ボタンを選択します。
W&Bはサードパーティのメールサーバーを使って、招待を送信 ボタンを選択した後にユーザーのメールに招待リンクを送信します。ユーザーが招待を受け入れると、あなたの組織にアクセスできるようになります。
https://<org-name>.io/console/settings/
に移動します。<org-name>
はあなたの組織の名前に置き換えてください。
ユーザーを追加 ボタンを選択します。
表示されるモーダルで、新しいユーザーのメールアドレスを メール フィールドに入力します。
役割 ドロップダウンからユーザーに割り当てる役割を選択します。ユーザーの役割は後で変更可能です。役割を割り当てる に記載されている表を参照して、可能な役割について更に詳しく知ってください。
ユーザーのメールにサードパーティのメールサーバーを使って招待リンクを送信したい場合は、招待メールをユーザーに送信 ボックスにチェックを入れます。
新しいユーザーを追加 ボタンを選択します。
ユーザーの自動プロビジョニング
一致するメールドメインを持つW&Bユーザーは、SSOを設定し、SSOプロバイダーが許可した場合、SSOを使ってW&B組織にサインインすることができます。SSOはすべてのエンタープライズライセンスに利用可能です。
認証にSSOを有効にする W&Bは、ユーザーがSSOを使って認証することを強く推奨しています。組織のSSOを有効にするためには、W&Bチームに連絡してください。
Dedicated cloudまたはSelf-managedインスタンスでSSOを設定する方法についての詳細は、SSO with OIDC またはSSO with LDAP を参照してください。
W&Bはデフォルトで自動プロビジョニングされたユーザーに「メンバー」役割を割り当てます。自動プロビジョニングされたユーザーの役割はいつでも変更可能です。
Dedicated cloudインスタンスおよびSelf-managedデプロイメントでは、SSOを使ったユーザーの自動プロビジョニングがデフォルトでオンになっています。自動プロビジョニングをオフにすることができ、特定のユーザーを選んでW&B組織に追加することができます。
以下のタブでは、デプロイメントタイプに基づいてSSOをオフにする方法を説明します:
Dedicated cloud
Self-managed
Dedicated cloudインスタンスを使用している場合で、自動プロビジョニングをオフにしたい場合は、W&Bチームに連絡してください。
W&Bコンソールを使用してSSOを使った自動プロビジョニングをオフにします。
https://<org-name>.io/console/settings/
に移動します。<org-name>
をあなたの組織名に置き換えてください。
セキュリティ を選択します。
SSOプロビジョニングを無効にする を選択して、SSOを使った自動プロビジョニングをオフにします。
SSOを使った自動プロビジョニングは、大規模にユーザーを組織に追加するのに役立ちます。なぜなら、組織の管理者が個別のユーザー招待を生成する必要がないからです。
カスタム役割を作成する
Dedicated cloudまたはSelf-managedデプロイメントでカスタム役割を作成または割り当てるには、エンタープライズライセンスが必要です。
組織の管理者は、View-Only または Member 役割に基づいて新しい役割を作成し、追加の許可を追加することで詳細なアクセス制御を実現できます。チーム管理者は、チームメンバーにカスタム役割を割り当てることができます。カスタム役割は組織レベルで作成され、チームレベルで割り当てられます。
カスタム役割を作成するには:
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで 設定 を選択します。
役割 をクリックします。
カスタム役割 セクションで 役割を作成 をクリックします。
役割の名前を入力します。必要に応じて説明を追加します。
カスタム役割のベースとする役割を Viewer または Member から選択します。
許可を追加するには、許可を検索 フィールドをクリックし、追加する1つ以上の許可を選択します。
役割が持つ許可を要約している カスタム役割の許可 セクションを確認します。
役割を作成 をクリックします。
W&Bコンソールを使ってカスタム役割を作成します:
https://<org-name>.io/console/settings/
に移動します。<org-name>
をあなたの組織名に置き換えてください。
カスタム役割 セクションで 役割を作成 をクリックします。
役割の名前を入力します。必要に応じて説明を追加します。
カスタム役割のベースとする役割を Viewer または Member から選択します。
許可を追加するには、許可を検索 フィールドをクリックし、追加する1つ以上の許可を選択します。
役割が持つ許可を要約している カスタム役割の許可 セクションを確認します。
役割を作成 をクリックします。
チーム管理者は、今後、チーム設定 からチームのメンバーにカスタム役割を割り当てることができます。
ドメインキャプチャ
ドメインキャプチャは、従業員があなたの会社の組織に参加する手助けをし、新しいユーザーが会社の管轄外で資産を作成することがないようにします。
ドメインはユニークである必要があります ドメインは一意の識別子です。つまり、他の組織ですでに使用されているドメインは使用できません。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
ドメインキャプチャを使用すると、@example.com
のような会社のメールアドレスを持つ人々を自動的にW&B SaaSクラウド組織に追加できます。これにより、すべての従業員が適切な組織に参加し、新しいユーザーが会社の管轄外で資産を作成することを防ぎます。
この表は、ドメインキャプチャが有効か無効かによる、新しいユーザーと既存のユーザーの振る舞いを要約したものです。
ドメインキャプチャあり
ドメインキャプチャなし
新しいユーザー
確認済みドメインからW&Bに登録したユーザーは自動的に組織のデフォルトチームにメンバーとして追加されます。チーム参加を有効にしている場合、登録時に追加のチームを選択することができます。招待を受け入れて他の組織やチームにも参加することができます。
ユーザーは、集中化された組織があることを知らずにW&Bアカウントを作成することができます。
招待されたユーザー
招待を受け入れたときに招待されたユーザーは自動的にあなたの組織に参加します。招待されたユーザーは組織のデフォルトチームに自動的にメンバーとして追加されません。招待を受けて他の組織やチームにも参加できます。
招待を受け入れたときに招待されたユーザーは自動的にあなたの組織に参加します。招待を受けて他の組織やチームにも参加できます。
既存のユーザー
あなたのドメインからの確認済みメールアドレスを持つ既存のユーザーは、W&Bアプリ内の組織のチームに参加できます。組織に参加する前に既存のユーザーが作成したすべてのデータは残ります。W&Bは既存ユーザーのデータを移行しません。
既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。
招待されていない新しいユーザーを組織に参加した際にデフォルトチームに自動的に割り当てるには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから 設定 を選択します。
設定 タブ内で 一般 を選択します。
ドメインキャプチャ 内の ドメインを請求する ボタンを選択します。
デフォルトチーム ドロップダウンから新しいユーザーが自動的に参加するチームを選択します。利用可能なチームがない場合は、チーム設定を更新する必要があります。チームを追加し管理する の指示を参照してください。
メールドメインを請求する ボタンをクリックします。
招待されていない新しいユーザーを自動的にそのチームに割り当てる前に、チームの設定でドメインマッチングを有効にする必要があります。
https://wandb.ai/<team-name>
にあるチームのダッシュボードに移動します。ここで <team-name>
はドメインマッチングを有効にしたいチームの名前です。
チームのダッシュボードの左側のグローバルナビゲーションで チーム設定 を選択します。
プライバシー セクションで、「一致するメールドメインを持つ新しいユーザーに、サインアップ時にこのチームに参加することを推奨する」オプションを切り替えます。
専用または自己管理のデプロイメントタイプを使用してドメインキャプチャを構成する際は、W&Bアカウントチームにご連絡ください。設定が完了すると、会社のメールアドレスでW&Bアカウントを作成したユーザーに対し、専用または自己管理のインスタンスへのアクセスを求めるために管理者に連絡するよう自動的に促されます。
ドメインキャプチャあり
ドメインキャプチャなし
新しいユーザー
確認済みドメインからSaaSクラウド上のW&Bにサインアップしたユーザーは、カスタマイズしたメールアドレスを持つ管理者に連絡するように自動的に促されます。プロダクトのトライアルのためにSaaSクラウド上に新しい組織を作成することもできます。
ユーザーは、会社に集中化された専用インスタンスがあることを知らないまま、W&B SaaSクラウドアカウントを作成することができます。
既存のユーザー
既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。
既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。
ユーザーの役割を割り当てまたは更新する
組織内のすべてのメンバーは、W&B Models および Weave のための組織役割とシートを持っています。彼らのシートタイプによって、彼らの請求状況と各製品ラインで取ることのできるアクションが決まります。
組織に招待する際に、ユーザーに組織の役割を初めて割り当てます。後でどのユーザーの役割も変更できます。
組織内のユーザーは、以下のいずれかの役割を持つことができます:
役割
説明
管理者
他のユーザーを組織に追加または削除し、ユーザーの役割を変更し、カスタム役割を管理し、チームを追加することができるインスタンス管理者。管理者が不在の場合に備えて、W&Bは複数の管理者がいることを推奨しています。
メンバー
インスタンス管理者によって招待された組織の通常のユーザー。組織メンバーは、他のユーザーを招待したり、組織内の既存のユーザーを管理したりすることはできません。
ビューアー (エンタープライズのみの機能)
インスタンス管理者によって招待された、組織のビュー専用ユーザー。ビューアーは、組織と彼らがメンバーである基盤となるチームに対して読み取り専用アクセスを持ちます。
カスタムロール (エンタープライズのみの機能)
カスタム役割は、組織の管理者が前述の View-Only または Member 役割を継承し、追加の許可を追加して微細かいアクセス制御を達成するために作成することができます。チーム管理者は、その役割をそれぞれのチーム内のユーザーに割り当てることができます。
ユーザーの役割を変更するには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
チーム役割 ドロップダウンからユーザー名の横にある役割を選択します。
ユーザーのアクセスを割り当てまたは更新する
組織内のユーザーは、以下のいずれかのモデルシートまたは Weave アクセスタイプを持っています:フル、ビューアー、またはアクセスなし。
シートタイプ
説明
フル
この役割タイプのユーザーは、Models または Weave のデータを書き込み、読み取り、およびエクスポートするための完全な権限を持ちます。
ビューアー
あなたの組織のビュー専用ユーザー。ビューアーは、組織とその基となるチームに対してのみ読み取りアクセスを持ち、Models または Weave に対してビュー専用アクセスを持ちます。
アクセスなし
この役割を持つユーザーは、Models または Weave 製品へのアクセスはありません。
モデルシートタイプと Weave アクセスタイプは組織レベルで定義され、チームに継承されます。ユーザーのシートタイプを変更したい場合は、組織の設定に移動し、次のステップに従ってください:
SaaS ユーザーの場合、https://wandb.ai/account-settings/<organization>/settings
にある組織の設定に移動します。角括弧(<>
)で囲まれた値を組織名に置き換えてください。他の専用または自己管理のデプロイメントの場合は、https://<your-instance>.wandb.io/org/dashboard
に移動します。
ユーザー タブを選択します。
役割 ドロップダウンからユーザーに割り当てたいシートタイプを選択します。
組織の役割とサブスクリプションタイプが、あなたの組織内で利用可能なシートタイプを決定します。
ユーザーを削除する
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを提供します。
表示されたら、三点リーダーまたは3つの点のアイコン(… )を選択します。
ドロップダウンから メンバーを削除 を選択します。
請求管理者を割り当てる
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
請求管理者 列の下で、請求管理者として割り当てたいユーザーを選択します。
チームを追加し管理する
組織のダッシュボードを使って、組織内でチームを作成し管理します。組織の管理者またはチーム管理者は、以下のことができます:
ユーザーをチームに招待したり、チームからユーザーを削除したりする。
チームメンバーの役割を管理する。
組織に参加した時にユーザーをチームに自動的に追加する。
https://wandb.ai/<team-name>
にあるチームのダッシュボードでチームストレージを管理する。
チームを作成する
組織のダッシュボードを使用してチームを作成します:
https://wandb.ai/home に移動します。
チーム の下の左側のナビゲーションパネルで コラボレーション用のチームを作成 を選択します。
表示されるモーダルで チーム名 フィールドにチームの名前を入力します。
ストレージタイプを選択します。
チームを作成 ボタンを選択します。
チームを作成 ボタンを選択すると、W&Bは https://wandb.ai/<team-name>
の新しいチームページにリダイレクトします。<team-name>
はチーム作成時に入力した名前を使用します。
チームを持ったら、そのチームにユーザーを追加することができます。
チームにユーザーを招待する
組織内のチームにユーザーを招待します。ユーザーがすでにW&Bアカウントを持っている場合は、メールアドレスまたはW&Bユーザー名を使用してチームのダッシュボードからユーザーを招待します。
https://wandb.ai/<team-name>
に移動します。
ダッシュボードの左側のグローバルナビゲーションで チーム設定 を選択します。
ユーザー タブを選択します。
新しいユーザーを招待する を選びます。
表示されるモーダルで、メールまたはユーザー名 フィールドにそのユーザーのメールを提供し、チームを選択する ドロップダウンからそのユーザーに割り当てる役割を選択します。チーム内でユーザーが持つことができる役割について詳しくは、チーム役割 を参照してください。
招待を送信 ボタンを選びます。
デフォルトでは、チームまたはインスタンスの管理者のみがメンバーをチームに招待できます。この動作を変更するには、チーム設定 を参照してください。
メール招待でユーザーを手動で招待することに加えて、新しいユーザーのメールがあなたの組織のドメインと一致する 場合は、自動的に新しいユーザーをチームに追加できます。
新メンバーを登録時にチーム組織と一致させる
新規ユーザーがサインアップ時に組織内のチームを発見できるようにします。新しいユーザーは、あなたの組織の確認済みメールドメインと一致する確認済みのメールドメインを持っている必要があります。確認済みの新規ユーザーは、W&Bアカウントに登録する際に組織に属する確認済みのチームの一覧を見ることができます。
組織の管理者はドメイン請求を有効にする必要があります。ドメインキャプチャを有効にするには、ドメインキャプチャ に記載されている手順を参照してください。
チームメンバーの役割を割り当てまたは更新する
チームメンバーの名前の横にあるアカウントタイプのアイコンを選択します。
ドロップダウンから、そのチームメンバーが持つことを望むアカウントタイプを選択します。
この表は、チームメンバーに割り当てることができる役割を示しています:
役割
定義
管理者
チーム内で他のユーザーを追加し削除したり、ユーザー役割を変更したり、チームの設定を構成できるユーザー。
メンバー
チーム管理者によってメールまたは組織レベルのユーザー名で招待された、チームの通常のユーザー。メンバー ユーザーは、他のユーザーをチームに招待できません。
ビュー専用 (エンタープライズのみの機能)
チーム管理者によってメールまたは組織レベルのユーザー名で招待された、チームのビュー専用ユーザー。ビュー専用ユーザーは、チームとそのコンテンツに対して読み取り専用アクセスしか持たない。
サービス (エンタープライズのみの機能)
サービスワーカーまたはサービスアカウントは、W&Bをあなたのrunオートメーションツールで利用するために役立つAPIキーです。チームのためにサービスアカウントからAPIキーを使用する場合は、環境変数 WANDB_USERNAME
を設定して正しいユーザーにrunを紐付けることを確認してください。
カスタムロール (エンタープライズのみの機能)
カスタム役割は、組織管理者が前述の View-Only または Member 役割を継承し、追加の許可を追加して微細かいアクセス制御を達成するために作成することができます。チーム管理者は、その役割をそれぞれのチーム内のユーザーに割り当てることができます。詳細については、この記事 を参照してください。
専用クラウドまたは自己管理デプロイメントのエンタープライズライセンスのみが、チームメンバーにカスタム役割を割り当てることができます。
チームからユーザーを削除する
チームのダッシュボードを使用してユーザーをチームから削除します。メンバーが作成したrunは、そのメンバーがそのチームにいなくなった場合でもW&Bに保存されます。
https://wandb.ai/<team-name>
に移動します。
左側のナビゲーションバーで チーム設定 を選択します。
ユーザー タブを選択します。
削除したいユーザーの名前の横にマウスをホバーします。表示されたら、三点リーダーまたは3つの点のアイコン(… )を選択します。
ドロップダウンから ユーザーを削除 を選択します。
2.2 - プロジェクトのアクセス制御を管理する
プロジェクトの公開範囲スコープとプロジェクトレベルの役割を使用してプロジェクトのアクセスを管理する
W&B プロジェクトの範囲を設定し、誰が W&B の run を表示、編集、提出できるかを制限します。
W&B チーム内の任意のプロジェクトに対するアクセスレベルを設定するために、いくつかのコントロールを組み合わせて使用できます。 公開範囲 は、上位レベルのメカニズムです。これを使用して、どのユーザーグループがプロジェクト内の run を表示または提出できるかを制御します。Team または Restricted の公開範囲を持つプロジェクトでは、プロジェクトレベルの役割 を使用して、各ユーザーのプロジェクト内でのアクセスレベルを制御できます。
プロジェクトのオーナーやチーム管理者、組織の管理者は、プロジェクトの公開範囲を設定または編集できます。
公開範囲
選択できるプロジェクトの公開範囲は4つあります。最も公開されているものから最もプライベートなものの順に、それらは次のとおりです:
範囲
説明
Open
プロジェクトを知っている人は誰でもプロジェクトを表示し、run やレポートを提出できます。
Public
プロジェクトを知っている人は誰でもプロジェクトを表示できます。run やレポートを提出できるのはプロジェクトのチームだけです。
Team
親チームのメンバーのみがプロジェクトを表示でき、run やレポートを提出できます。チーム外の人はプロジェクトにアクセスできません。
Restricted
親チームから招待されたメンバーのみがプロジェクトを表示し、run やレポートを提出できます。
機密性や機密データに関連するワークフローでコラボレーションしたい場合は、プロジェクトの範囲を Restricted に設定します。Restricted プロジェクトをチーム内に作成するとき、チーム内の特定のメンバーを実験、アーティファクト、レポートなどにコラボレーションするために招待または追加することができます。
他のプロジェクト範囲とは異なり、チームの全メンバーが暗黙のうちにリストリクションプロジェクトにアクセスできるわけではありません。同時に、チーム管理者は必要に応じてリストリクションプロジェクトに参加できます。
新規または既存のプロジェクトの公開範囲を設定する
プロジェクトを作成するとき、または後で編集するときに、プロジェクトの公開範囲を設定します。
プロジェクトのオーナーやチーム管理者のみが公開範囲を設定または編集できます。
チーム管理者がチームのプライバシー設定内で Make all future team projects private (public sharing not allowed) を有効にすると、そのチームの Open および Public プロジェクトの公開範囲がオフになります。この場合、チームは Team および Restricted の範囲のみを使用できます。
新しいプロジェクトを作成するときに公開範囲を設定する
SaaS クラウド、専用クラウド、または自己管理インスタンスで W&B 組織に移動します。
左側のサイドバーの My projects セクションで Create a new project ボタンをクリックします。代わりに、チームの Projects タブに移動し、右上のコーナーの Create new project ボタンをクリックします。
親チームを選択し、プロジェクトの名前を入力した後、プロジェクトの公開範囲 ドロップダウンから希望の範囲を選択します。
Restricted の公開範囲を選択した場合、次のステップを完了します。
プロジェクトでコラボレーションするために必要な W&B チームメンバーの名前を 招待チームメンバー フィールドに入力します。
Users タブから、後でリストリクションプロジェクトにメンバーを追加または削除できます。
既存のプロジェクトの公開範囲を編集する
W&B プロジェクトに移動します。
左の列で Overview タブを選択します。
右上のコーナーで Edit Project Details ボタンをクリックします。
Project Visibility ドロップダウンから希望の範囲を選択します。
Restricted の公開範囲を選択した場合、次のステップを完了します。
プロジェクトの Users タブに移動し、特定のユーザーをリストリクションプロジェクトに招待するために ユーザーを追加 ボタンをクリックします。
プロジェクトの公開範囲を Team から Restricted に変更した場合、必要なチームメンバーをプロジェクトに招待しない限り、すべてのチームメンバーがプロジェクトのアクセスを失います。
プロジェクトの公開範囲を Restricted から Team に変更すると、すべてのメンバーがプロジェクトにアクセスできます。
リストリクションプロジェクトからユーザーリストを削除すると、そのプロジェクトへのアクセスを失います。
リストリクション範囲についてのその他の重要な注意事項
チームレベルのサービスアカウントをリストリクションプロジェクトで使用したい場合は、そのアカウントをプロジェクトに特に招待または追加する必要があります。そうでないと、デフォルトではチームレベルのサービスアカウントはリストリクションプロジェクトにアクセスできません。
リストリクションプロジェクトから run を移動することはできませんが、非リストリクションプロジェクトからリストリクションプロジェクトに run を移動することはできます。
プロジェクトの公開範囲をチーム にのみ変換することができ、その際、チームのプライバシー設定 Make all future team projects private (public sharing not allowed) に依存しません。
リストリクションプロジェクトのオーナーが親チームの一員でなくなった場合、チーム管理者はスムーズなプロジェクト運営のためにオーナーを変更する必要があります。
プロジェクトレベルの役割
チーム内の Team または Restricted 範囲のプロジェクトでは、ユーザーに特定の役割を割り当てることができ、その役割はそのユーザーのチームレベルの役割と異なる場合があります。例えば、ユーザーがチームレベルで Member 役割を持っている場合、そのユーザーに View-Only 、Admin 、または利用可能なカスタム役割をそのチーム内の Team あるいは Restricted 範囲のプロジェクトで割り当てることができます。
プロジェクトレベルの役割は、SaaS クラウド、専用クラウド、自己管理インスタンスでプレビュー中です。
ユーザーにプロジェクトレベルの役割を割り当てる
W&B プロジェクトに移動します。
左の列で Overview タブを選択します。
プロジェクトの Users タブに進みます。
関連するユーザーの Project Role フィールドに現在割り当てられている役割をクリックすると、他の利用可能な役割がリストされているドロップダウンが開きます。
ドロップダウンから別の役割を選択します。それは即座に保存されます。
プロジェクトレベル役割をユーザーのチームレベル役割と異なるものに変更すると、プロジェクトレベル役割には*****が含まれ、違いを示します。
プロジェクトレベルの役割についてのその他の重要な注意事項
デフォルトでは、チーム_または_リストリクション のプロジェクトにおける全ユーザーのプロジェクトレベルの役割は、それぞれのチームレベルの役割を継承 します。
チームレベルで View-Only 役割を持つユーザーのプロジェクトレベルの役割を変更することはできません 。
特定のプロジェクト内でのユーザーのプロジェクトレベル役割がチームレベルの役割と同じ である場合、チーム管理者がいつかチームレベルの役割を変更した場合、関連するプロジェクト役割も自動的にチームレベルの役割に追随して変更されます。
特定のプロジェクト内のユーザーのプロジェクトレベル役割をチームレベルの役割と異なるもの に変更した場合、チーム管理者がいつかチームレベルの役割を変更しても、関連するプロジェクトレベルの役割はそのままとなります。
プロジェクトレベルの役割がチームレベルの役割と異なる場合に、リストリクション プロジェクトからユーザーを削除し、その後しばらくしてユーザーをプロジェクトに戻した場合、デフォルトの振る舞いによりそのチームレベルの役割を継承します。必要であれば、プロジェクトレベルの役割を再度チームレベルの役割と異なるものに変更する必要があります。
3 - ユーザーとチームの管理を自動化する
SCIM API
SCIM API を使用して、ユーザーやその所属するチームを効率的かつ再現可能な方法で管理します。また、SCIM API を使用してカスタムロールを管理したり、 W&B 組織内のユーザーにロールを割り当てたりすることもできます。ロールエンドポイントは公式の SCIM スキーマの一部ではありません。 W&B はカスタムロールの自動管理をサポートするためにロールエンドポイントを追加しています。
SCIM API は特に以下の場合に役立ちます:
大規模なユーザーのプロビジョニングおよびプロビジョニング解除の管理
SCIMサポートのアイデンティティプロバイダーを使用してユーザーを管理
SCIM API には大きく分けて 3 つのカテゴリがあります - User 、 Group 、および Roles 。
User SCIM API
User SCIM API を使用すると、ユーザーの作成、無効化、詳細の取得、または W&B 組織内の全ユーザーの一覧を表示できます。この API は、組織内のユーザーに事前定義されたロールまたはカスタムロールを割り当てることもサポートしています。
DELETE User
エンドポイントを使用して、W&B 組織内のユーザーを無効化します。無効化されたユーザーはサインインできなくなります。ただし、無効化されたユーザーは引き続き組織のユーザーリストに表示されます。
無効化されたユーザーをユーザーリストから完全に削除するには、 ユーザーを組織から削除 する必要があります。
必要に応じて無効化されたユーザーを再有効化することが可能です。
Group SCIM API
Group SCIM API は、組織内での W&B チームの作成や削除を含めた管理を行うことができます。 PATCH Group
を使用して、既存のチームにユーザーを追加または削除します。
W&B には、 グループ内のユーザーが同じロールを持つ
という概念はありません。 W&B チームはグループに非常に似ており、さまざまな役割を持った多様な個人が関連するプロジェクトで共同作業することができます。チームは異なるユーザーグループで構成されることができます。チーム内の各ユーザーに、チームの管理者、メンバー、閲覧者、またはカスタムロールのいずれかのロールを割り当てます。
グループと W&B チームの類似性のために、 W&B は Group SCIM API エンドポイントを W&B チームにマップしています。
Custom role API
Custom role SCIM API は、組織内でのカスタムロールの作成、一覧表示、更新を含めた管理を行うことができます。
カスタムロールを削除する際は注意してください。
DELETE Role
エンドポイントを使用して W&B 組織内でカスタムロールを削除します。カスタムロールが継承する事前定義ロールは、操作が実行される前にカスタムロールに割り当てられたすべてのユーザーに割り当てられます。
PUT Role
エンドポイントを使用してカスタムロールの継承ロールを更新します。この操作は、カスタムロールの既存の、つまり非継承のカスタム許可には影響しません。
W&B Python SDK API
SCIM API がユーザーとチームの管理を自動化するのと同様に、一部のメソッドを使用して W&B Python SDK API も同様の目的で使用できます。以下のメソッドに注意してください:
メソッド名
目的
create_user(email, admin=False)
ユーザーを組織に追加し、オプションで組織の管理者に設定します。
user(userNameOrEmail)
組織に既に存在するユーザーを返します。
user.teams()
ユーザーのチームを返します。ユーザーオブジェクトは user(userNameOrEmail) メソッドを使用して取得できます。
create_team(teamName, adminUserName)
新しいチームを作成し、オプションで組織レベルのユーザーをチーム管理者に設定します。
team(teamName)
組織に既に存在するチームを返します。
Team.invite(userNameOrEmail, admin=False)
ユーザーをチームに追加します。team(teamName) メソッドを使用してチームオブジェクトを取得できます。
Team.create_service_account(description)
サービスアカウントをチームに追加します。team(teamName) メソッドを使用してチームオブジェクトを取得できます。
Member.delete()
チームからメンバーを削除します。team オブジェクトの members
属性を使用してチーム内のメンバーオブジェクトのリストを取得できます。そして、 team(teamName) メソッドを使用してチームオブジェクトを取得できます。
4 - ユーザー、グループ、およびロールを SCIM で管理する
クロスドメイン・アイデンティティ管理システム (SCIM) API は、インスタンスまたは組織の管理者が W&B 組織内のユーザー、グループ、およびカスタムロールを管理できるようにします。SCIM グループは W&B のチームにマップされます。
SCIM API は <host-url>/scim/
でアクセス可能であり、RC7643 プロトコル に見られるフィールドのサブセットを持つ /Users
と /Groups
エンドポイントをサポートしています。さらに、公式の SCIM スキーマの一部ではない /Roles
エンドポイントを含んでいます。W&B は /Roles
エンドポイントを追加して、W&B 組織でのカスタムロールの自動管理をサポートしています。
複数の Enterprise SaaS Cloud 組織の管理者である場合、SCIM API リクエストが送信される組織を設定する必要があります。プロファイル画像をクリックし、User Settings をクリックします。設定名は Default API organization です。これは、Dedicated Cloud 、Self-managed instances 、および SaaS Cloud を含むすべてのホスティングオプションで必要です。SaaS Cloud では、組織の管理者は SCIM API リクエストが正しい組織に行くように、ユーザー設定でデフォルトの組織を設定する必要があります。
選択したホスティングオプションに応じて、このページの例で使用される <host-url>
プレースホルダーの値が決まります。
さらに、例では abc
や def
のようなユーザー ID が使用されています。実際のリクエストとレスポンスでは、ユーザー ID はハッシュ化された値を持っています。
認証
組織またはインスタンスの管理者は、自分の API キーを使用した基本認証を利用して SCIM API にアクセスできます。HTTP リクエストの Authorization
ヘッダーを文字列 Basic
の後にスペースを置き、その後のベース64エンコードされた文字列を username:API-KEY
形式に設定します。つまり、ユーザー名と API キーを :
文字で区切った後、その結果をベース64エンコードします。例えば、demo:p@55w0rd
として認証するには、ヘッダーは Authorization: Basic ZGVtbzpwQDU1dzByZA==
であるべきです。
ユーザーリソース
SCIM ユーザーリソースは W&B のユーザーにマップされます。
ユーザーの取得
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
ユーザーのリスト
{
"Resources" : [
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 1
}
ユーザーの作成
エンドポイント : <host-url>/scim/Users
メソッド : POST
説明 : 新しいユーザーリソースを作成します。
サポートされているフィールド :
フィールド
型
必要
emails
Multi-Valued Array
Yes (必ず primary
email を設定してください)
userName
文字列型
Yes
{
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"emails" : [
{
"primary" : true ,
"value" : "admin-user2@test.com"
}
],
"userName" : "dev-user2"
}
{
"active" : true ,
"displayName" : "Dev User 2" ,
"emails" : {
"Value" : "dev-user2@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "def" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"location" : "Users/def"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user2"
}
ユーザーの削除
ユーザーの無効化
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
value
オブジェクト型
オブジェクト {"active": false}
を示し、ユーザーが無効化されるべきことを示します。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : false }
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
ユーザーの再有効化
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : ユーザーの一意の ID を提供することにより、Dedicated Cloud または Self-managed インスタンス内で無効化されたユーザーを再有効化します。
サポートされているフィールド :
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
value
オブジェクト型
オブジェクト {"active": true}
を示し、ユーザーが再有効化されるべきことを示します。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : true }
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1"
}
組織レベルのロールをユーザーに割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : 組織レベルのロールをユーザーに割り当てます。このロールは、ここで説明されているように admin
、viewer
または member
のいずれかになります (こちらを参照 )。 SaaS Cloud では、ユーザー設定で SCIM API の正しい組織を設定することを確認してください。
サポートされているフィールド :
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
path
文字列型
ロール割り当て操作が影響を及ぼすスコープ。許可される唯一の値は organizationRole
です。
value
文字列型
ユーザーに割り当てる予定の定義済みの組織レベルのロール。それは admin
、viewer
または member
のいずれかです。このフィールドは定義済みロールに対して大文字小文字を区別しません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "organizationRole" ,
"value" : "admin" // ユーザーの組織スコープのロールを admin に設定
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1" ,
"teamRoles" : [ // ユーザーが所属するすべてのチームでのロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // 組織スコープでのユーザーのロールを返します
}
チームレベルのロールをユーザーに割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : チームレベルのロールをユーザーに割り当てます。このロールは、ここで説明されているように admin
、viewer
、member
またはカスタムロールのいずれかになります (こちらを参照 )。 SaaS Cloud では、ユーザー設定で SCIM API の正しい組織を設定することを確認してください。
サポートされているフィールド :
フィールド
型
必要
op
文字列型
操作のタイプ。許可される唯一の値は replace
です。
path
文字列型
ロール割り当て操作が影響を及ぼすスコープ。許可される唯一の値は teamRoles
です。
value
オブジェクト配列型
1つのオブジェクトを持つ配列で、そのオブジェクトは teamName
と roleName
属性を持ちます。teamName
はユーザーがそのロールを持つチームの名前であり、roleName
は admin
、viewer
、member
またはカスタムロールのいずれかです。このフィールドは定義済みロールに対して大文字小文字を区別しませんが、カスタムロールに対しては区別します。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "teamRoles" ,
"value" : [
{
"roleName" : "admin" , // 定義済みロールのロール名は大文字小文字を区別しませんが、カスタムロールでは区別します
"teamName" : "team1" // チームteam1でのユーザーのロールをadminに設定
}
]
}
]
}
レスポンス例 :
この操作はユーザーオブジェクトを返します。
{
"active" : true ,
"displayName" : "Dev User 1" ,
"emails" : {
"Value" : "dev-user1@test.com" ,
"Display" : "" ,
"Type" : "" ,
"Primary" : true
},
"id" : "abc" ,
"meta" : {
"resourceType" : "User" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Users/abc"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName" : "dev-user1" ,
"teamRoles" : [ // ユーザーが所属するすべてのチームでのロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // 組織スコープでのユーザーのロールを返します
}
グループリソース
SCIM グループリソースは W&B のチームにマップされます。つまり、W&B デプロイメントで SCIM グループを作成すると W&B チームが作成されます。その他のグループエンドポイントにも同様です。
チームの取得
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : GET
説明 : チームの一意の ID を提供してチーム情報を取得します。
リクエスト例 :
{
"displayName" : "wandb-devs" ,
"id" : "ghi" ,
"members" : [
{
"Value" : "abc" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user1"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Groups/ghi"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
チームのリスト
エンドポイント : <host-url>/scim/Groups
メソッド : GET
説明 : チームのリストを取得します。
リクエスト例 :
{
"Resources" : [
{
"displayName" : "wandb-devs" ,
"id" : "ghi" ,
"members" : [
{
"Value" : "abc" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user1"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Groups/ghi"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 1
}
チームの作成
エンドポイント : <host-url>/scim/Groups
メソッド : POST
説明 : 新しいチームリソースを作成します。
サポートされているフィールド :
フィールド
型
必要
displayName
文字列型
Yes
members
Multi-Valued Array
Yes (value
サブフィールドが必要で、ユーザー ID にマップされます)
wandb-support
というチームを作成し、そのメンバーとして dev-user2
を設定します。
{
"schemas" : ["urn:ietf:params:scim:schemas:core:2.0:Group" ],
"displayName" : "wandb-support" ,
"members" : [
{
"value" : "def"
}
]
}
{
"displayName" : "wandb-support" ,
"id" : "jkl" ,
"members" : [
{
"Value" : "def" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user2"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:00:00Z" ,
"location" : "Groups/jkl"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
チームの更新
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : PATCH
説明 : 既存のチームのメンバーシップリストを更新します。
サポートされている操作 : メンバーの追加
、メンバーの削除
リクエスト例 :
wandb-devs
に dev-user2
を追加する
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "add" ,
"path" : "members" ,
"value" : [
{
"value" : "def" ,
}
]
}
]
}
{
"displayName" : "wandb-devs" ,
"id" : "ghi" ,
"members" : [
{
"Value" : "abc" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user1"
},
{
"Value" : "def" ,
"Ref" : "" ,
"Type" : "" ,
"Display" : "dev-user2"
}
],
"meta" : {
"resourceType" : "Group" ,
"created" : "2023-10-01T00:00:00Z" ,
"lastModified" : "2023-10-01T00:01:00Z" ,
"location" : "Groups/ghi"
},
"schemas" : [
"urn:ietf:params:scim:schemas:core:2.0:Group"
]
}
チームの削除
SCIM API では、チームには追加データがリンクされているため、現在チームの削除はサポートされていません。削除を確認するにはアプリからチームを削除してください。
ロールリソース
SCIM ロールリソースは W&B のカスタムロールにマップされます。前述したように、/Roles
エンドポイントは公式 SCIM スキーマの一部ではありません。W&B は W&B
組織内のカスタムロールの自動管理をサポートするために /Roles
エンドポイントを追加しています。
カスタムロールの取得
エンドポイント: <host-url>/scim/Roles/{id}
メソッド : GET
説明 : ロールの一意の ID を提供し、カスタムロールの情報を取得します。
リクエスト例 :
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}
カスタムロールの一覧
エンドポイント: <host-url>/scim/Roles
メソッド : GET
説明 : W&B 組織のすべてのカスタムロールの情報を取得します
リクエスト例 :
{
"Resources" : [
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールからカスタムロールが継承されていることを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
},
{
"description" : "Another sample custom role for example" ,
"id" : "Um9sZToxMg==" ,
"inheritedFrom" : "viewer" , // 定義済みロールからカスタムロールが継承されていることを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-21T01:07:50Z" ,
"location" : "Roles/Um9sZToxMg=="
},
"name" : "Sample custom role 2" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "launchagent:read" ,
"isInherited" : true // viewer 定義済みロールから継承された
},
...
...
{
"name" : "run:stop" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 2
}
カスタムロールの作成
エンドポイント : <host-url>/scim/Roles
メソッド : POST
説明 : W&B 組織内で新しいカスタムロールを作成します。
サポートされているフィールド :
フィールド
型
必要
name
文字列型
カスタムロールの名前
description
文字列型
カスタムロールの説明
permissions
オブジェクト配列型
各オブジェクトが name
文字列フィールドを含む許可オブジェクトの配列で、そのフィールドは w&bobject:operation
の形式を持ちます。例えば、W&B Run に対する削除操作の許可オブジェクトは name
を run:delete
として持ちます。
inheritedFrom
文字列型
カスタムロールが継承する定義済みロール。それは member
または viewer
のいずれかになります。
{
"schemas" : ["urn:ietf:params:scim:schemas:core:2.0:Role" ],
"name" : "Sample custom role" ,
"description" : "A sample custom role for example" ,
"permissions" : [
{
"name" : "project:update"
}
],
"inheritedFrom" : "member"
}
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}
カスタムロールの削除
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : DELETE
説明 : W&B 組織内のカスタムロールを削除します。慎重に使用してください。 カスタムロールから継承される定義済みロールは、操作前にカスタムロールに割り当てられていたすべてのユーザーに再び割り当てられます。
リクエスト例 :
カスタムロールの権限の更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PATCH
説明 : W&B 組織内のカスタムロールにカスタム権限を追加または削除します。
サポートされているフィールド :
フィールド
型
必要
operations
オブジェクト配列型
操作オブジェクトの配列
op
文字列型
操作オブジェクト内の操作のタイプ。それは add
または remove
のいずれかになります。
path
文字列型
操作オブジェクト内の静的フィールド。許可される唯一の値は permissions
です。
value
オブジェクト配列型
各オブジェクトが name
文字列フィールドを含む許可オブジェクトの配列で、そのフィールドは w&bobject:operation
の形式を持ちます。例えば、W&B Run に対する削除操作の許可オブジェクトは name
を run:delete
として持ちます。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "add" , // 操作のタイプを示し、他の可能な値は `remove`
"path" : "permissions" ,
"value" : [
{
"name" : "project:delete"
}
]
}
]
}
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // 定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // member 定義済みロールから継承された
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // 更新前に管理者によって追加された既存のカスタム権限
},
{
"name" : "project:delete" ,
"isInherited" : false // 更新の一部として管理者によって追加された新規のカスタム権限
}
],
"schemas" : [
""
]
}
カスタムロールメタデータの更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PUT
説明 : W&B 組織内のカスタムロールの名前、説明、または継承ロールを更新します。この操作は、既存の、つまり非継承のカスタム権限には影響しません。
サポートされているフィールド :
フィールド
型
必要
name
文字列型
カスタムロールの名前
description
文字列型
カスタムロールの説明
inheritedFrom
文字列型
カスタムロールが継承する定義済みロール。それは member
または viewer
のいずれかになります。
{
"schemas" : ["urn:ietf:params:scim:schemas:core:2.0:Role" ],
"name" : "Sample custom role" ,
"description" : "A sample custom role for example but now based on viewer" ,
"inheritedFrom" : "viewer"
}
{
"description" : "A sample custom role for example but now based on viewer" , // リクエストに応じて説明を変更
"id" : "Um9sZTo3" ,
"inheritedFrom" : "viewer" , // リクエストに応じて変更された定義済みロールを示します
"meta" : {
"resourceType" : "Role" ,
"created" : "2023-11-20T23:10:14Z" ,
"lastModified" : "2023-11-20T23:31:23Z" ,
"location" : "Roles/Um9sZTo3"
},
"name" : "Sample custom role" ,
"organizationID" : "T3JnYW5pemF0aW9uOjE0ODQ1OA==" ,
"permissions" : [
{
"name" : "artifact:read" ,
"isInherited" : true // viewer 定義済みロールから継承された
},
... // 更新後に member 定義済みロールにあるが viewer にはない権限は継承されません
{
"name" : "project:update" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
},
{
"name" : "project:delete" ,
"isInherited" : false // 管理者によって追加されたカスタム権限
}
],
"schemas" : [
""
]
}