1.2 - Configure SSO with OIDC
W&B Server の OpenID Connect (OIDC) 互換アイデンティティプロバイダーのサポートにより、Okta、Keycloak、Auth0、Google、Entra などの外部アイデンティティプロバイダーを介したユーザーアイデンティティとグループメンバーシップの管理が可能になります。
OpenID Connect (OIDC)
W&B Server は、外部 Identity Provider (IdP) との統合のために、以下の OIDC 認証フローをサポートしています。
フォームポストによる暗黙的フロー
Proof Key for Code Exchange (PKCE) を使用した認証コードフロー
これらのフローはユーザーを認証し、アクセス制御を管理するために必要なアイデンティティ情報 (ID トークンの形式) を W&B Server に提供します。
ID トークンは、ユーザーの名前、ユーザー名、メール、グループメンバーシップなどのユーザーのアイデンティティ情報を含む JWT です。W&B Server はこのトークンを使用してユーザーを認証し、システム内の適切なロールまたはグループにマップします。
W&B Server のコンテキストでは、アクセス トークンはユーザーに代わって API へのリクエストを承認しますが、W&B Server の主な関心事はユーザー認証とアイデンティティであるため、ID トークンのみが必要です。
環境変数を使用して、IAM オプションを設定 して、専用クラウド または Self-managed インスタンスを構成できます。
専用クラウド または Self-managed W&B Server インストール用に Identity Provider を構成するには、次のガイドラインに従って、さまざまな IdP に従ってください。W&B の SaaS バージョンを使用している場合は、support@wandb.com に連絡して、組織の Auth0 テナントの構成を支援してください。
認証に AWS Cognito を設定するには、以下の手順に従ってください。
まず、AWS アカウントにサインインし、AWS Cognito アプリケーションに移動します。
IdP でアプリケーションを構成するために、許可されたコールバック URL を指定します。
コールバック URL として http(s)://YOUR-W&B-HOST/oidc/callback
を追加します。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 は、デフォルトで form_post
応答タイプによる implicit
付与 を使用します。
PKCE Code Exchange フローを使用する authorization_code
付与を実行するように wandb/local を構成することもできます。
AWS Cognito がトークンをアプリに配信する方法を構成するために、1 つ以上の OAuth 付与タイプを選択します。
W&B には特定の OpenID Connect (OIDC) スコープが必要です。AWS Cognito アプリから以下を選択します。
“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
で利用可能である必要があります。
たとえば、ユーザープール セクション内の アプリの統合 タブから Cognito IdP URL にユーザープール ID を追加して、発行者 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) の両方を選択します
Sign-in redirect URIs: https://YOUR_W_AND_B_URL/oidc/callback
Sign-out redirect URIs: https://YOUR_W_AND_B_URL/logout
Assignments: Skip group assignment for now を選択します
作成した Okta アプリケーションの概要画面で、General タブの Client Credentials の下の Client ID をメモします。
Okta OIDC Issuer URL を識別するには、左側の Settings を選択し、次に Account を選択します。
Okta UI には、Organization Contact の下に会社名が表示されます。
OIDC 発行者 URL の形式は https://COMPANY.okta.com
です。COMPANY を対応する値に置き換えます。メモしておいてください。
Azure ポータル (https://portal.azure.com/ ) にログインします。
「Microsoft Entra ID」サービスを選択します。
左側で、「App registrations」を選択します。
上部で、「New registration」をクリックします。
「Register an application」という画面で、以下の値を入力します。
名前を指定します(例: “Weights and Biases application”)
デフォルトでは、選択されているアカウントの種類は「Accounts in this organizational directory only (Default Directory only - Single tenant)」です。必要に応じて変更します。
リダイレクト URI をタイプ Web で値 https://YOUR_W_AND_B_URL/oidc/callback
で構成します
「Register」をクリックします。
「Application (client) ID」と「Directory (tenant) ID」をメモします。
左側で、Authentication をクリックします。
左側で、「Certificates & secrets」をクリックします。
「Client secrets」をクリックし、次に「New client secret」をクリックします。
「Add a client secret」という画面で、以下の値を入力します。
説明を入力します(例: “wandb”)
「Expires」はそのままにするか、必要に応じて変更します。
「Add」をクリックします。
シークレットの「Value」をメモします。「Secret ID」は必要ありません。
これで、次の 3 つの値をメモしておく必要があります。
OIDC クライアント ID
OIDC クライアントシークレット
テナント ID は OIDC Issuer URL に必要です
OIDC 発行者 URL の形式は https://login.microsoftonline.com/${TenantID}/v2.0
です
W&B Server で SSO をセットアップする
SSO を設定するには、管理者権限と以下の情報が必要です。
OIDC クライアント ID
OIDC 認証方式 (implicit
または pkce
)
OIDC Issuer URL
OIDC クライアントシークレット (オプション、IdP の設定方法によって異なります)
IdP が OIDC クライアントシークレットを必要とする場合は、環境変数 OIDC_CLIENT_SECRET
で指定します。
W&B Server UI を使用するか、環境変数 を wandb/local
pod に渡すことによって、SSO を設定できます。環境変数は UI より優先されます。
SSO の設定後にインスタンスにログインできない場合は、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、コンテナログに一時パスワードが出力され、SSO が無効になります。SSO の問題を解決したら、その環境変数を削除して SSO を再度有効にする必要があります。
システムコンソールは、システム設定ページの後継です。W&B Kubernetes Operator ベースのデプロイで使用できます。
W&B 管理コンソールへのアクセス を参照してください。
Settings に移動し、次に Authentication に移動します。Type ドロップダウンで OIDC を選択します。
値を入力します。
Save をクリックします。
ログアウトし、再度ログインします。今回は IdP ログイン画面を使用します。
Weights&Biases インスタンスにサインインします。
W&B アプリケーションに移動します。
ドロップダウンから、System Settings を選択します。
発行者、クライアント ID、および認証方式を入力します。
Update settings を選択します。
SSO の設定後にインスタンスにログインできない場合は、LOCAL_RESTORE=true
環境変数を設定してインスタンスを再起動できます。これにより、コンテナログに一時パスワードが出力され、SSO がオフになります。SSO の問題を解決したら、その環境変数を削除して SSO を再度有効にする必要があります。
Security Assertion Markup Language (SAML)
W&B Server は SAML をサポートしていません。
1.3 - Use federated identities with SDK
Identity federation を使用して、W&B SDK 経由で組織の認証情報を使用してサインインします。W&B organization の管理者が organization 向けに SSO を設定している場合、すでに組織の認証情報を使用して W&B アプリの UI にサインインしているはずです。その意味で、identity federation は W&B SDK の SSO のようなものですが、JSON Web Tokens (JWT) を直接使用します。identity federation は、APIキー の代替として使用できます。
RFC 7523 は、SDK との identity federation の基礎を形成します。
Identity federation は、すべてのプラットフォームタイプ(SaaS Cloud、Dedicated Cloud、および Self-managed インスタンス)の Enterprise
プランで Preview
として利用できます。ご不明な点がございましたら、W&B チームにお問い合わせください。
このドキュメントでは、identity provider
と JWT issuer
という用語は同じ意味で使用されます。どちらも、この機能のコンテキストでは同じものを指します。
JWT issuer の設定
最初の手順として、organization の管理者は、W&B organization と公開されている JWT issuer の間の federation を設定する必要があります。
organization の ダッシュボード で Settings タブに移動します
Authentication オプションで、Set up JWT Issuer
を押します
テキストボックスに JWT issuer の URL を追加し、Create
を押します
W&B は、${ISSUER_URL}/.well-known/oidc-configuration
のパスで OIDC discovery document を自動的に検索し、discovery document 内の関連する URL で JSON Web Key Set (JWKS) を見つけようとします。JWKS は、JWT が関連する identity provider によって発行されたことを確認するために、JWT のリアルタイム検証に使用されます。
JWT を使用して W&B にアクセスする
JWT issuer が W&B organization 用に設定されると、ユーザーはその identity provider によって発行された JWT を使用して、関連する W&B プロジェクト へのアクセスを開始できます。JWT を使用するメカニズムは次のとおりです。
organization で利用可能なメカニズムのいずれかを使用して、identity provider にサインインする必要があります。一部のプロバイダーには、API または SDK を使用して自動化された方法でアクセスできますが、関連する UI を使用してのみアクセスできるプロバイダーもあります。詳細については、W&B organization の管理者または JWT issuer の所有者にお問い合わせください。
identity provider へのサインイン後に JWT を取得したら、安全な場所にファイルに保存し、環境変数 WANDB_IDENTITY_TOKEN_FILE
に絶対ファイルパスを設定します。
W&B SDK または CLI を使用して W&B project にアクセスします。SDK または CLI は、JWT を自動的に検出し、JWT が正常に検証された後、W&B access token と交換する必要があります。W&B access token は、AI ワークフローを有効にするための関連する API にアクセスするために使用されます。つまり、run、メトリクス、Artifacts などを ログ に記録します。access token は、デフォルトで ~/.config/wandb/credentials.json
のパスに保存されます。環境変数 WANDB_CREDENTIALS_FILE
を指定することで、そのパスを変更できます。
JWT は、APIキー、パスワードなどの有効期間の長い認証情報の欠点に対処するための有効期間の短い認証情報です。identity provider で設定された JWT の有効期限に応じて、JWT を継続的に更新し、環境変数 WANDB_IDENTITY_TOKEN_FILE
で参照されるファイルに保存されていることを確認する必要があります。
W&B access token にもデフォルトの有効期限があり、その後、SDK または CLI は JWT を使用して自動的に更新を試みます。その時点でユーザー JWT も期限切れになり、更新されない場合、認証エラーが発生する可能性があります。可能であれば、JWT の取得と有効期限後の更新メカニズムは、W&B SDK または CLI を使用する AI ワークロードの一部として実装する必要があります。
JWT の検証
JWT を W&B access token と交換し、project にアクセスする ワークフロー の一部として、JWT は次の検証を受けます。
JWT 署名は、W&B organization レベルで JWKS を使用して検証されます。これは最初の防御線であり、これが失敗した場合、JWKS または JWT の署名方法に問題があることを意味します。
JWT の iss
クレームは、organization レベルで設定された issuer URL と同じである必要があります。
JWT の sub
クレームは、W&B organization で設定されているユーザーのメールアドレスと同じである必要があります。
JWT の aud
クレームは、AI ワークフローの一部としてアクセスしている project を収容する W&B organization の名前と同じである必要があります。Dedicated Cloud または Self-managed インスタンスの場合、インスタンスレベルの環境変数 SKIP_AUDIENCE_VALIDATION
を true
に設定して、オーディエンスクレームの検証をスキップするか、オーディエンスとして wandb
を使用できます。
JWT の exp
クレームは、トークンが有効かどうか、または期限切れで更新が必要かどうかを確認するためにチェックされます。
外部サービスアカウント
W&B は、有効期間の長い APIキー を持つ組み込みのサービスアカウントを長年サポートしてきました。SDK および CLI 向けの identity federation 機能を使用すると、organization レベルで設定されているのと同じ issuer によって発行されている限り、JWT を認証に使用できる外部サービスアカウントも導入できます。team 管理者は、組み込みのサービスアカウントと同様に、team のスコープ内で外部サービスアカウントを設定できます。
外部サービスアカウントを設定するには:
team の Service Accounts タブに移動します
New service account
を押します
サービスアカウントの名前を入力し、Authentication Method
として Federated Identity
を選択し、Subject
を入力して、Create
を押します
外部サービスアカウントの JWT の sub
クレームは、team 管理者が team レベルの Service Accounts タブでサブジェクトとして設定したものと同じである必要があります。そのクレームは、JWT の検証 の一部として検証されます。aud
クレームの要件は、ヒューマンユーザー JWT の要件と同様です。
外部サービスアカウントの JWT を使用して W&B にアクセスする 場合、通常は、初期 JWT を生成し、継続的に更新する ワークフロー を自動化する方が簡単です。外部サービスアカウントを使用して ログ に記録された run をヒューマンユーザーに帰属させたい場合は、組み込みのサービスアカウントの場合と同様に、AI ワークフローの環境変数 WANDB_USERNAME
または WANDB_USER_EMAIL
を設定できます。
W&B は、柔軟性と簡素さのバランスを取るために、データ感度のレベルが異なる AI ワークロード全体で、組み込みおよび外部サービスアカウントを組み合わせて使用することをお勧めします。
1.4 - Use service accounts to automate workflows
組織とチームのスコープを持つサービスアカウントを使用して、自動化された、または非インタラクティブな ワークフロー を管理します。
サービスアカウントは、チーム内またはチーム間で、プロジェクトを横断して共通タスクを自動的に実行できる、人間ではないまたは機械の ユーザー を表します。
組織の 管理者 は、組織の スコープ で サービスアカウント を作成できます。
チーム の 管理者 は、その チーム の スコープ で サービスアカウント を作成できます。
サービスアカウント の APIキー を使用すると、呼び出し元は サービスアカウント の スコープ 内の プロジェクト から読み取りまたは書き込みができます。
サービスアカウント を使用すると、複数の ユーザー または チーム による ワークフロー の集中管理、W&B Models の 実験管理 の自動化、または W&B Weave の トレース の ログ記録 が可能になります。 環境変数 WANDB_USERNAME
または WANDB_USER_EMAIL
のいずれかを使用することにより、人間の ユーザー の ID を サービスアカウント によって管理される ワークフロー に関連付けるオプションがあります。
組織スコープ の サービスアカウント
組織に スコープ された サービスアカウント は、 制限付き プロジェクト を除き、 チーム に関係なく、組織内のすべての プロジェクト で読み取りおよび書き込みの権限を持ちます。組織スコープ の サービスアカウント が 制限付き プロジェクト に アクセス するには、その プロジェクト の 管理者 が サービスアカウント を プロジェクト に明示的に追加する必要があります。
組織の 管理者 は、組織またはアカウント ダッシュボード の [ Service Accounts ] タブから、組織スコープ の サービスアカウント の APIキー を取得できます。
新しい組織スコープ の サービスアカウント を作成するには:
組織 ダッシュボード の [ Service Accounts ] タブにある [ New service account ] ボタンをクリックします。
[ Name ] を入力します。
サービスアカウント のデフォルト チーム を選択します。
[ Create ] をクリックします。
新しく作成された サービスアカウント の横にある [ Copy API key ] をクリックします。
コピーした APIキー を、シークレットマネージャーまたはその他の安全で アクセス 可能な場所に保存します。
組織スコープ の サービスアカウント には、組織内のすべての チーム が所有する制限のない プロジェクト に アクセス できる場合でも、デフォルト チーム が必要です。これにより、モデルトレーニング または 生成AI アプリ の 環境 で WANDB_ENTITY
変数 が 設定 されていない場合に、 ワークロード が失敗するのを防ぐことができます。別の チーム の プロジェクト で組織スコープ の サービスアカウント を使用するには、WANDB_ENTITY
環境変数 をその チーム に設定する必要があります。
チームスコープ の サービスアカウント
チームスコープ の サービスアカウント は、その チーム 内のすべての プロジェクト で読み取りおよび書き込みができます。ただし、その チーム 内の 制限付き プロジェクト は除きます。チームスコープ の サービスアカウント が 制限付き プロジェクト に アクセス するには、その プロジェクト の 管理者 が サービスアカウント を プロジェクト に明示的に追加する必要があります。
チーム の 管理者 として、チームスコープ の サービスアカウント の APIキー を <WANDB_HOST_URL>/<your-team-name>/service-accounts
で取得できます。または、チーム の [ 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
変数 を使用した ユーザー 属性は、参照される ユーザー が サービスアカウント の親 チーム の一部である場合を除き、機能しません 。
外部 サービスアカウント
Built-in サービスアカウント に加えて、W&B は、JSON Web Tokens (JWT) を発行できる ID プロバイダー (IdP) との Identity federation を使用して、W&B SDK および CLI を使用した チーム スコープ の External service accounts もサポートしています。
2 - Access management
組織内の ユーザー と Teams を管理する
一意の組織ドメインで W&B に最初にサインアップした ユーザー は、その組織の インスタンス管理者ロール として割り当てられます。組織管理者は、特定の ユーザー に チーム 管理者ロールを割り当てます。
W&B では、組織内に複数のインスタンス管理者を持つことを推奨します。これは、プライマリアドミンが利用できない場合でも、管理業務を継続できるようにするためのベストプラクティスです。
チーム管理者 は、 チーム 内で管理権限を持つ組織内の ユーザー です。
組織管理者は、https://wandb.ai/account-settings/
で組織のアカウント 設定 にアクセスして使用し、 ユーザー の招待、 ユーザー のロールの割り当てまたは更新、 Teams の作成、組織からの ユーザー の削除、請求管理者の割り当てなどを行うことができます。詳細については、ユーザー の追加と管理 を参照してください。
組織管理者が チーム を作成すると、インスタンス管理者または チーム 管理者は次のことができます。
デフォルトでは、管理者のみがその チーム に ユーザー を招待したり、 チーム から ユーザー を削除したりできます。この 振る舞い を変更するには、チーム の 設定 を参照してください。
チームメンバー のロールを割り当てるか、更新します。
新しい ユーザー が組織に参加したときに、自動的に ユーザー を チーム に追加します。
組織管理者と チーム 管理者の両方が、https://wandb.ai/<your-team-name>
の チーム ダッシュボード を使用して Teams を管理します。詳細、および チーム のデフォルトのプライバシー 設定 の構成については、Teams の追加と管理 を参照してください。
特定の Projects への可視性を制限する
W&B の Project のスコープを定義して、誰が W&B の Runs を表示、編集、および送信できるかを制限します。 チーム が機密 データ を扱う場合、 Project を表示できる ユーザー を制限すると特に役立ちます。
組織管理者、 チーム 管理者、または Project のオーナーは、 Project の可視性を 設定 および編集できます。
詳細については、Project の可視性 を参照してください。
2.1 - Manage your organization
組織の管理者として、組織内の 個々のユーザーを管理 したり、Teams を管理 したりできます。
Team の管理者として、Teams を管理 できます。
以下のワークフローは、インスタンス管理者のロールを持つユーザーに適用されます。インスタンス管理者権限が必要と思われる場合は、組織の管理者に連絡してください。
組織内のユーザー管理を簡素化したい場合は、ユーザーと Team の管理の自動化 を参照してください。
組織名の変更
以下のワークフローは、W&B Multi-tenant SaaS Cloud にのみ適用されます。
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンの アカウント セクションで、設定 を選択します。
設定 タブ内で、一般 を選択します。
名前の変更 ボタンを選択します。
表示されるモーダル内で、組織の新しい名前を入力し、名前を保存 ボタンを選択します。
ユーザーの追加と管理
管理者として、組織のダッシュボードを使用して以下を行います。
ユーザーの招待または削除。
ユーザーの組織ロールの割り当てまたは更新、およびカスタムロールの作成。
課金管理者の割り当て。
組織管理者が組織にユーザーを追加する方法はいくつかあります。
招待によるメンバー追加
SSO による自動プロビジョニング
ドメインキャプチャ
シートと料金
以下の表は、Models と Weave のシートの仕組みをまとめたものです。
製品
シート
料金の基準
Models
セットごとに支払い
Models の有料シートの数と、発生した使用量によって、全体のサブスクリプション料金が決まります。各ユーザーには、フル、ビューアー、アクセスなしの 3 種類のシートタイプのうち 1 つを割り当てることができます
Weave
無料
使用量ベース
ユーザーの招待
管理者は、ユーザーを組織、および組織内の特定の Team に招待できます。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンの アカウント セクションで、ユーザー を選択します。
新しいユーザーを招待 を選択します。
表示されるモーダルで、メールアドレスまたはユーザー名 フィールドにユーザーのメールアドレスまたはユーザー名を入力します。
(推奨) Team を選択 ドロップダウンメニューから、ユーザーを Team に追加します。
ロールを選択 ドロップダウンから、ユーザーに割り当てるロールを選択します。ユーザーのロールは後で変更できます。可能なロールの詳細については、ロールの割り当て に記載されている表を参照してください。
招待を送信 ボタンを選択します。
W&B は、招待を送信 ボタンを選択した後、サードパーティのメールサーバーを使用して、ユーザーのメールアドレスに招待リンクを送信します。ユーザーは招待を承諾すると、組織にアクセスできます。
https://<org-name>.io/console/settings/
に移動します。<org-name>
を組織名に置き換えます。
ユーザーを追加 ボタンを選択します。
表示されるモーダルで、メールアドレス フィールドに新しいユーザーのメールアドレスを入力します。
ロール ドロップダウンから、ユーザーに割り当てるロールを選択します。ユーザーのロールは後で変更できます。可能なロールの詳細については、ロールの割り当て に記載されている表を参照してください。
W&B がサードパーティのメールサーバーを使用して、ユーザーのメールアドレスに招待リンクを送信する場合は、ユーザーに招待メールを送信 ボックスをオンにします。
新しいユーザーを追加 ボタンを選択します。
ユーザーの自動プロビジョニング
SSO を構成し、SSO プロバイダーが許可している場合、一致するメールアドレスドメインを持つ W&B ユーザーは、シングルサインオン (SSO) で W&B Organization にサインインできます。SSO は、すべてのエンタープライズライセンスで利用できます。
認証に SSO を有効にする W&B は、シングルサインオン (SSO) を使用して認証することを強く推奨および推奨します。組織の SSO を有効にするには、W&B Team にお問い合わせください。
Dedicated cloud または Self-managed インスタンスで SSO を設定する方法の詳細については、OIDC での SSO または LDAP での SSO を参照してください。
W&B は、自動プロビジョニングユーザーにデフォルトで「メンバー」ロールを割り当てます。自動プロビジョニングされたユーザーのロールはいつでも変更できます。
SSO を使用したユーザーの自動プロビジョニングは、Dedicated cloud インスタンスと Self-managed デプロイメントではデフォルトでオンになっています。自動プロビジョニングはオフにすることができます。自動プロビジョニングをオフにすると、特定のユーザーを選択的に W&B 組織に追加できます。
以下のタブでは、デプロイメントタイプに基づいて SSO をオフにする方法について説明します。
Dedicated cloud
Self-managed
Dedicated cloud インスタンスを使用している場合に、SSO での自動プロビジョニングをオフにする場合は、W&B Team にお問い合わせください。
W&B Console を使用して、SSO での自動プロビジョニングをオフにします。
https://<org-name>.io/console/settings/
に移動します。<org-name>
を組織名に置き換えます。
セキュリティ を選択します
SSO プロビジョニングを無効にする を選択して、SSO での自動プロビジョニングをオフにします。
SSO での自動プロビジョニングは、組織管理者が個々のユーザー招待状を生成する必要がないため、大規模にユーザーを組織に追加する場合に役立ちます。
カスタムロールの作成
Dedicated cloud または Self-managed デプロイメントでカスタムロールを作成または割り当てるには、エンタープライズライセンスが必要です。
組織管理者は、表示のみまたはメンバーロールに基づいて新しいロールを作成し、追加の権限を追加して、きめ細かいアクセス制御を実現できます。Team 管理者は、Team メンバーにカスタムロールを割り当てることができます。カスタムロールは組織レベルで作成されますが、Team レベルで割り当てられます。
カスタムロールを作成するには:
Multi-tenant SaaS Cloud
Dedicated or Self-managed
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンの アカウント セクションで、設定 を選択します。
ロール をクリックします。
カスタムロール セクションで、ロールを作成 をクリックします。
ロールの名前を入力します。オプションで説明を入力します。
カスタムロールのベースにするロールを選択します (ビューアー または メンバー )。
権限を追加するには、権限を検索 フィールドをクリックし、追加する 1 つ以上の権限を選択します。
カスタムロールの権限 セクションを確認します。ここには、ロールが持つ権限がまとめられています。
ロールを作成 をクリックします。
W&B Console を使用して、SSO での自動プロビジョニングをオフにします。
https://<org-name>.io/console/settings/
に移動します。<org-name>
を組織名に置き換えます。
カスタムロール セクションで、ロールを作成 をクリックします。
ロールの名前を入力します。オプションで説明を入力します。
カスタムロールのベースにするロールを選択します (ビューアー または メンバー )。
権限を追加するには、権限を検索 フィールドをクリックし、追加する 1 つ以上の権限を選択します。
カスタムロールの権限 セクションを確認します。ここには、ロールが持つ権限がまとめられています。
ロールを作成 をクリックします。
これで、Team 管理者は Team の設定 から Team のメンバーにカスタムロールを割り当てることができます。
ドメインキャプチャ
ドメインキャプチャは、従業員が会社組織に参加するのに役立ち、新しいユーザーが会社の管轄外で資産を作成しないようにします。
ドメインは一意である必要があります ドメインは一意の識別子です。つまり、別の組織ですでに使用されているドメインは使用できません。
Multi-tenant SaaS Cloud
Dedicated or Self-managed
ドメインキャプチャを使用すると、@example.com
などの会社のメールアドレスを持つユーザーを W&B SaaS cloud organization に自動的に追加できます。これにより、すべての従業員が適切な組織に参加し、新しいユーザーが会社の管轄外で資産を作成しないようにします。
以下の表は、ドメインキャプチャが有効な場合と無効な場合における、新規および既存のユーザーの振る舞いをまとめたものです。
ドメインキャプチャあり
ドメインキャプチャなし
新規ユーザー
検証済みのドメインから W&B にサインアップしたユーザーは、自動的に組織のデフォルト Team のメンバーとして追加されます。Team への参加を有効にすると、サインアップ時に参加する追加の Team を選択できます。招待状があれば、他の組織や Team にも参加できます。
ユーザーは、利用可能な集中管理された組織があることを知らずに、W&B アカウントを作成できます。
招待されたユーザー
招待されたユーザーは、招待を承諾すると自動的に組織に参加します。招待されたユーザーは、自動的に組織のデフォルト Team のメンバーとして追加されるわけではありません。招待状があれば、他の組織や Team にも参加できます。
招待されたユーザーは、招待を承諾すると自動的に組織に参加します。招待状があれば、他の組織や Team にも参加できます。
既存のユーザー
ドメインからの検証済みのメールアドレスを持つ既存のユーザーは、W&B App 内で組織の Team に参加できます。既存のユーザーが組織に参加する前に作成したすべてのデータは保持されます。W&B は既存のユーザーのデータを移行しません。
既存の W&B ユーザーは、複数の組織や Team に分散している可能性があります。
招待されていない新規ユーザーが組織に参加するときに、デフォルトの Team に自動的に割り当てるには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、設定 を選択します。
設定 タブ内で、一般 を選択します。
ドメインキャプチャ 内の ドメインの要求 ボタンを選択します。
新しいユーザーが自動的に参加する Team を デフォルト Team ドロップダウンから選択します。利用可能な Team がない場合は、Team の設定を更新する必要があります。Team の追加と管理 の手順を参照してください。
メールアドレスドメインの要求 ボタンをクリックします。
招待されていない新しいユーザーを Team に自動的に割り当てるには、Team の設定内でドメイン一致を有効にする必要があります。
https://wandb.ai/<team-name>
で Team のダッシュボードに移動します。<team-name>
は、ドメイン一致を有効にする Team の名前です。
Team のダッシュボードの左側にあるグローバルナビゲーションで Team の設定 を選択します。
プライバシー セクション内で、“サインアップ時に、一致するメールアドレスドメインを持つ新しいユーザーにこの Team への参加を推奨する” オプションを切り替えます。
ドメインキャプチャを構成するには、Dedicated または Self-managed デプロイメントタイプを使用している場合は、W&B アカウント Team にお問い合わせください。構成が完了すると、W&B SaaS インスタンスは、会社のメールアドレスで W&B アカウントを作成するユーザーに、Dedicated または Self-managed インスタンスへのアクセスを要求するために管理者に連絡するように自動的に促します。
ドメインキャプチャあり
ドメインキャプチャなし
新規ユーザー
検証済みのドメインから SaaS cloud で W&B にサインアップしたユーザーは、カスタマイズしたメールアドレスで管理者に連絡するように自動的に促されます。SaaS cloud で組織を作成して、製品をトライアルできます。
ユーザーは、会社に集中管理された Dedicated インスタンスがあることを知らずに、W&B SaaS cloud アカウントを作成できます。
既存のユーザー
既存の W&B ユーザーは、複数の組織や Team に分散している可能性があります。
既存の W&B ユーザーは、複数の組織や Team に分散している可能性があります。
ユーザーのロールの割り当てまたは更新
Organization のすべてのメンバーは、W&B Models と Weave の両方に対して組織ロールとシートを持っています。シートのタイプによって、課金ステータスと各製品ラインで実行できるアクションが決まります。
最初にユーザーを組織に招待するときに、ユーザーに組織ロールを割り当てます。ユーザーのロールは後で変更できます。
組織内のユーザーは、次のいずれかのロールを持つことができます。
ロール
説明
admin
他のユーザーを組織に追加または削除したり、ユーザーロールを変更したり、カスタムロールを管理したり、Team を追加したりできるインスタンス管理者。W&B は、管理者が不在の場合に備えて、複数の管理者がいることを推奨します。
Member
インスタンス管理者によって招待された、組織の通常のユーザー。組織メンバーは、他のユーザーを招待したり、組織内の既存のユーザーを管理したりすることはできません。
Viewer (エンタープライズ限定機能)
インスタンス管理者によって招待された、組織の表示専用ユーザー。ビューアーは、組織とメンバーである基盤となる Team への読み取りアクセスのみを持っています。
カスタムロール (エンタープライズ限定機能)
カスタムロールを使用すると、組織管理者は、上記の表示専用またはメンバーロールから継承し、追加の権限を追加して、きめ細かいアクセス制御を実現することで、新しいロールを作成できます。Team 管理者は、これらのカスタムロールをそれぞれの Team のユーザーに割り当てることができます。
ユーザーのロールを変更するには:
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
ユーザーの名前の横にある TEAM ROLE ドロップダウンからロールを選択します。
ユーザーのアクセスの割り当てまたは更新
組織内のユーザーは、フル、ビューアー、またはアクセスなしのいずれかのモデルシートまたは Weave アクセスタイプを持っています。
シートタイプ
説明
Full
このロールタイプのユーザーは、Models または Weave のデータを書き込み、読み取り、エクスポートするための完全な権限を持っています。
Viewer
組織の表示専用ユーザー。ビューアーは、組織と所属する基盤となる Team への読み取りアクセスのみを持ち、Models または Weave への表示のみのアクセスを持っています。
No access
このロールのユーザーは、Models または Weave 製品にアクセスできません。
モデルシートタイプと Weave アクセスタイプは組織レベルで定義され、Team に継承されます。ユーザーのシートタイプを変更する場合は、組織の設定に移動し、次の手順に従ってください。
SaaS ユーザーの場合は、https://wandb.ai/account-settings/<organization>/settings
で組織の設定に移動します。山かっこ (<>
) で囲まれた値を組織名に置き換えてください。他の Dedicated および Self-managed デプロイメントの場合は、https://<your-instance>.wandb.io/org/dashboard
に移動します。
ユーザー タブを選択します。
ロール ドロップダウンから、ユーザーに割り当てるシートタイプを選択します。
組織のロールとサブスクリプションタイプによって、組織内で利用できるシートタイプが決まります。
ユーザーの削除
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
表示されたら、省略記号または 3 つのドットのアイコン (… ) を選択します。
ドロップダウンから、メンバーを削除 を選択します。
課金管理者の割り当て
https://wandb.ai/home に移動します。
ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから、ユーザー を選択します。
検索バーにユーザーの名前またはメールアドレスを入力します。
課金管理者 列で、課金管理者として割り当てるユーザーを選択します。
Team の追加と管理
組織のダッシュボードを使用して、組織内に Team を作成および管理します。組織管理者または Team 管理者は次のことができます。
ユーザーを Team に招待したり、Team からユーザーを削除したりします。
Team メンバーのロールを管理します。
組織に参加するときに、ユーザーを Team に自動的に追加します。
https://wandb.ai/<team-name>
の Team のダッシュボードで Team のストレージを管理します。
Team の作成
組織のダッシュボードを使用して Team を作成します。
https://wandb.ai/home に移動します。
左側のナビゲーションパネルの Team の下にある コラボレーションする Team を作成 を選択します。
表示されるモーダルの Team 名 フィールドに Team の名前を入力します。
ストレージタイプを選択します。
Team を作成 ボタンを選択します。
Team を作成 ボタンを選択すると、W&B は https://wandb.ai/<team-name>
の新しい Team ページにリダイレクトします。<team-name>
は、Team の作成時に入力した名前で構成されます。
Team を作成したら、その Team にユーザーを追加できます。
Team へのユーザーの招待
組織内の Team にユーザーを招待します。Team のダッシュボードを使用して、メールアドレスまたは W&B のユーザー名を使用してユーザーを招待します (すでに W&B アカウントを持っている場合)。
https://wandb.ai/<team-name>
に移動します。
ダッシュボードの左側にあるグローバルナビゲーションで Team の設定 を選択します。
ユーザー タブを選択します。
新しいユーザーを招待 を選択します。
表示されるモーダルで、メールアドレスまたはユーザー名 フィールドにユーザーのメールアドレスを入力し、Team ロールを選択 ドロップダウンからユーザーに割り当てるロールを選択します。ユーザーが Team で持つことができるロールの詳細については、Team ロール を参照してください。
招待を送信 ボタンを選択します。
デフォルトでは、Team またはインスタンス管理者のみが Team にメンバーを招待できます。この振る舞いを変更するには、Team の設定 を参照してください。
メールでの招待を使用して手動でユーザーを招待するだけでなく、新しいユーザーの メールが組織のドメインと一致する 場合、新しいユーザーを Team に自動的に追加できます。
サインアップ時にメンバーを Team 組織に一致させる
組織内の新しいユーザーがサインアップ時に組織内の Teams を見つけられるようにします。新しいユーザーは、組織の検証済みメールアドレスドメインと一致する検証済みのメールアドレスドメインを持っている必要があります。検証済みの新しいユーザーは、W&B アカウントにサインアップするときに、組織に属する検証済みの Team のリストを表示できます。
組織管理者は、ドメインの要求を有効にする必要があります。ドメインキャプチャを有効にするには、ドメインキャプチャ に記載されている手順を参照してください。
Team メンバーのロールの割り当てまたは更新
Team メンバーの名前の横にあるアカウントタイプのアイコンを選択します。
ドロップダウンから、Team メンバーに持たせるアカウントタイプを選択します。
次の表に、Team のメンバーに割り当てることができるロールを示します。
ロール
定義
admin
Team 内で他のユーザーを追加および削除したり、ユーザーロールを変更したり、Team の設定を構成したりできるユーザー。
Member
Team の通常のユーザー。Team 管理者によってメールまたは組織レベルのユーザー名で招待されます。メンバーユーザーは、他のユーザーを Team に招待することはできません。
View-Only (エンタープライズ限定機能)
Team の表示専用ユーザー。Team 管理者によってメールまたは組織レベルのユーザー名で招待されます。表示専用ユーザーは、Team とそのコンテンツへの読み取りアクセスのみを持っています。
Service (エンタープライズ限定機能)
サービスワーカーまたはサービスアカウントは、run 自動化ツールで W&B を利用するのに役立つ APIキーです。Team のサービスアカウントから APIキーを使用する場合は、環境変数 WANDB_USERNAME
を設定して、run を適切なユーザーに正しく帰属させるようにしてください。
カスタムロール (エンタープライズ限定機能)
カスタムロールを使用すると、組織管理者は、上記の表示専用またはメンバーロールから継承し、追加の権限を追加して、きめ細かいアクセス制御を実現することで、新しいロールを作成できます。Team 管理者は、これらのカスタムロールをそれぞれの Team のユーザーに割り当てることができます。詳細については、この記事 を参照してください。
Dedicated cloud または Self-managed デプロイメントのエンタープライズライセンスのみが、Team のメンバーにカスタムロールを割り当てることができます。
Team からのユーザーの削除
Team のダッシュボードを使用して Team からユーザーを削除します。run を作成したメンバーがその Team にいなくなった場合でも、W&B は Team で作成された run を保持します。
https://wandb.ai/<team-name>
に移動します。
左側のナビゲーションバーで Team の設定 を選択します。
ユーザー タブを選択します。
削除するユーザーの名前の横にマウスを移動します。表示されたら、省略記号または 3 つのドットのアイコン (… ) を選択します。
ドロップダウンから、ユーザーを削除 を選択します。
2.2 - Manage access control for projects
可視性スコープと プロジェクト レベルのロールを使用して、 プロジェクト の アクセス を管理します。
W&B のプロジェクトのスコープを定義して、誰が W&B の run を表示、編集、送信できるかを制限します。
いくつかのコントロールを組み合わせて、W&B の Teams 内のプロジェクトに対するアクセスレベルを設定できます。可視性スコープ は、より高レベルなメカニズムです。これを使用して、どのユーザーグループがプロジェクト内の run を表示または送信できるかを制御します。Team または Restricted の可視性スコープを持つプロジェクトの場合、プロジェクトレベルのロール を使用して、各 ユーザー がプロジェクト内で持つアクセスレベルを制御できます。
プロジェクトのオーナー、 Team 管理者、または組織管理者は、プロジェクトの可視性を設定または編集できます。
可視性スコープ
選択できるプロジェクトの可視性スコープは 4 つあります。最も公開されているものから最もプライベートなものの順に示します。
スコープ
説明
Open
プロジェクトについて知っている人なら誰でも、それを表示し、 run または Report を送信できます。
Public
プロジェクトについて知っている人なら誰でも、それを表示できます。あなたの Team のみが、 run または Report を送信できます。
Team
親 Team のメンバーのみが、プロジェクトを表示し、 run または Report を送信できます。 Team 外部の人は、プロジェクトにアクセスできません。
Restricted
親 Team から招待されたメンバーのみが、プロジェクトを表示し、 run または Report を送信できます。
機密 データ に関連する ワークフロー で共同作業する場合は、プロジェクトのスコープを Restricted に設定します。 Team 内に制限付きプロジェクトを作成する場合、関連する 実験 、 Artifacts 、 Reports などで共同作業するために、 Team から特定のメンバーを招待または追加できます。
他のプロジェクトスコープとは異なり、 Team のすべてのメンバーが制限付きプロジェクトへの暗黙的なアクセス権を取得するわけではありません。同時に、 Team 管理者は必要に応じて制限付きプロジェクトに参加できます。
新規または既存のプロジェクトに可視性スコープを設定する
プロジェクトの可視性スコープは、プロジェクトの作成時、または後で編集するときに設定します。
プロジェクトのオーナーまたは Team 管理者のみが、その可視性スコープを設定または編集できます。
Team 管理者が Team のプライバシー設定内で 将来のすべての Team プロジェクトを非公開にする (公開共有は許可されません) を有効にすると、その Team の Open および Public プロジェクトの可視性スコープが無効になります。この場合、 Team は Team および Restricted スコープのみを使用できます。
新しいプロジェクトを作成するときに可視性スコープを設定する
SaaS Cloud、 専用クラウド 、またはセルフマネージドインスタンスで、W&B 組織に移動します。
左側のサイドバーの My projects セクションにある Create a new project ボタンをクリックします。または、 Team の Projects タブに移動し、右上隅にある Create new project ボタンをクリックします。
親 Team を選択し、プロジェクトの名前を入力したら、Project Visibility ドロップダウンから目的のスコープを選択します。
Restricted の可視性スコープを選択した場合は、次の手順を完了してください。
Invite team members フィールドに、1 人または複数の W&B の チームメンバー の名前を入力します。プロジェクトで共同作業するために不可欠なメンバーのみを追加してください。
制限付きプロジェクトのメンバーは、後で Users タブから追加または削除できます。
既存のプロジェクトの可視性スコープを編集する
W&B の プロジェクト に移動します。
左側の列で Overview タブを選択します。
右上隅にある Edit Project Details ボタンをクリックします。
Project Visibility ドロップダウンから、目的のスコープを選択します。
Restricted の可視性スコープを選択した場合は、次の手順を完了してください。
プロジェクトの Users タブに移動し、Add user ボタンをクリックして、特定の ユーザー を制限付きプロジェクトに招待します。
Team のメンバーをプロジェクトに必要な チームメンバー として招待しない限り、 Team のすべてのメンバーは、可視性スコープを Team から Restricted に変更すると、プロジェクトへのアクセスを失います。
可視性スコープを Restricted から Team に変更すると、 Team のすべてのメンバーがプロジェクトへのアクセス権を取得します。
制限付きプロジェクトの ユーザー リストから チームメンバー を削除すると、その チームメンバー はそのプロジェクトへのアクセスを失います。
制限付きスコープに関するその他の重要な注意事項
制限付きプロジェクトで Team レベルの サービス アカウント を使用する場合は、その サービス アカウント をプロジェクトに明示的に招待または追加する必要があります。そうしないと、 Team レベルの サービス アカウント はデフォルトで制限付きプロジェクトにアクセスできません。
制限付きプロジェクトから run を移動することはできませんが、制限されていないプロジェクトから制限付きプロジェクトに run を移動することはできます。
Team のプライバシー設定 将来のすべての Team プロジェクトを非公開にする (公開共有は許可されません) に関係なく、制限付きプロジェクトの可視性を Team スコープのみに変換できます。
制限付きプロジェクトのオーナーが親 Team の一部でなくなった場合、 Team 管理者はプロジェクトのシームレスな運用を確保するためにオーナーを変更する必要があります。
プロジェクトレベルのロール
Team 内の Team または Restricted スコープのプロジェクトの場合、 ユーザー に特定のロールを割り当てることができます。これは、その ユーザー の Team レベルのロールとは異なる場合があります。たとえば、 ユーザー が Team レベルで Member ロールを持っている場合、その Team 内の Team または Restricted スコープのプロジェクト内で、その ユーザー に View-Only 、Admin 、または使用可能なカスタムロールを割り当てることができます。
プロジェクトレベルのロールは、SaaS Cloud、 専用クラウド 、およびセルフマネージドインスタンスでプレビュー中です。
ユーザー にプロジェクトレベルのロールを割り当てる
W&B の プロジェクト に移動します。
左側の列で Overview タブを選択します。
プロジェクトの Users タブに移動します。
Project Role フィールドで、関係する ユーザー に現在割り当てられているロールをクリックします。これにより、他の使用可能なロールを一覧表示するドロップダウンが開きます。
ドロップダウンから別のロールを選択します。すぐに保存されます。
ユーザー のプロジェクトレベルのロールを Team レベルのロールとは異なるように変更すると、プロジェクトレベルのロールに * が含まれて、違いを示します。
プロジェクトレベルのロールに関するその他の重要な注意事項
デフォルトでは、Team または Restricted スコープのプロジェクト内のすべての ユーザー のプロジェクトレベルのロールは、それぞれの Team レベルのロールを 継承 します。
Team レベルで View-only ロールを持っている ユーザー のプロジェクトレベルのロールを 変更することはできません 。
特定のプロジェクト内の ユーザー のプロジェクトレベルのロールが Team レベルのロール と同じである 場合、 Team 管理者が Team レベルのロールを変更すると、関連するプロジェクトロールは Team レベルのロールを追跡するように自動的に変更されます。
特定のプロジェクト内の ユーザー のプロジェクトレベルのロールを、Team レベルのロール とは異なる ように変更した場合、 Team 管理者が Team レベルのロールを変更しても、関連するプロジェクトレベルのロールはそのままになります。
プロジェクトレベルのロールが Team レベルのロールと異なる場合に、 ユーザー を restricted プロジェクトから削除し、しばらくしてからその ユーザー をプロジェクトに再度追加すると、デフォルトの動作により Team レベルのロールを継承します。必要に応じて、プロジェクトレベルのロールを再度変更して、 Team レベルのロールと異なるようにする必要があります。
3 - Automate user and team management
SCIM API
SCIM API を使用して、ユーザーと、ユーザーが所属する Teams を効率的かつ反復可能な方法で管理します。SCIM API を使用して、カスタムロールを管理したり、W&B organization 内の Users にロールを割り当てることもできます。ロールエンドポイントは、公式の SCIM スキーマの一部ではありません。W&B は、カスタムロールの自動管理をサポートするために、ロールエンドポイントを追加します。
SCIM API は、特に次のような場合に役立ちます。
大規模なユーザーのプロビジョニングとプロビジョニング解除を管理する
SCIM をサポートする Identity Provider で Users を管理する
SCIM API には、大きく分けて User 、Group 、Roles の 3 つのカテゴリがあります。
User SCIM API
User SCIM API を使用すると、User の作成、非アクティブ化、詳細の取得、または W&B organization 内のすべての Users の一覧表示が可能です。この API は、定義済みまたはカスタムロールを organization 内の Users に割り当てることもサポートしています。
DELETE User
エンドポイントを使用して、W&B organization 内の User を非アクティブ化します。非アクティブ化された Users は、サインインできなくなります。ただし、非アクティブ化された Users は、organization の User リストに引き続き表示されます。
非アクティブ化された User を User リストから完全に削除するには、organization から User を削除する 必要があります。
必要に応じて、非アクティブ化された User を再度有効にすることができます。
Group SCIM API
Group SCIM API を使用すると、organization 内の Teams の作成や削除など、W&B Teams を管理できます。PATCH Group
を使用して、既存の Team に Users を追加または削除します。
W&B には、同じロールを持つ Users のグループ
という概念はありません。W&B の Team はグループによく似ており、異なるロールを持つ多様なペルソナが、関連する Projects のセットで共同作業を行うことができます。Teams は、異なるグループの Users で構成できます。Team の各 User に、Team 管理者、メンバー、閲覧者、またはカスタムロールを割り当てます。
W&B は、グループと W&B Teams の類似性から、Group SCIM API エンドポイントを W&B Teams にマッピングします。
Custom role API
Custom role SCIM API を使用すると、organization 内のカスタムロールの作成、一覧表示、または更新など、カスタムロールを管理できます。
カスタムロールを削除する場合は注意してください。
DELETE Role
エンドポイントを使用して、W&B organization 内のカスタムロールを削除します。カスタムロールが継承する定義済みのロールは、操作前にカスタムロールが割り当てられているすべての Users に割り当てられます。
PUT Role
エンドポイントを使用して、カスタムロールの継承されたロールを更新します。この操作は、カスタムロール内の既存の、つまり継承されていないカスタム権限には影響しません。
W&B Python SDK API
SCIM API で User と Team の管理を自動化できるのと同じように、W&B Python SDK API で利用できる メソッド の一部もその目的に使用できます。次の メソッド に注意してください。
Method name
Purpose
create_user(email, admin=False)
organization に User を追加し、オプションで organization 管理者にします。
user(userNameOrEmail)
organization 内の既存の User を返します。
user.teams()
User の Teams を返します。user(userNameOrEmail) メソッド を使用して User オブジェクトを取得できます。
create_team(teamName, adminUserName)
新しい Team を作成し、オプションで organization レベルの User を Team 管理者にします。
team(teamName)
organization 内の既存の Team を返します。
Team.invite(userNameOrEmail, admin=False)
Team に User を追加します。team(teamName) メソッド を使用して Team オブジェクトを取得できます。
Team.create_service_account(description)
Team にサービスアカウントを追加します。team(teamName) メソッド を使用して Team オブジェクトを取得できます。
Member.delete()
Team からメンバー User を削除します。team オブジェクトの members
属性を使用して、Team 内のメンバー オブジェクトのリストを取得できます。また、team(teamName) メソッド を使用して Team オブジェクトを取得できます。
4 - Manage users, groups, and roles with SCIM
System for Cross-domain Identity Management(SCIM)API を使用すると、インスタンスまたは organization の管理者は、W&B organization 内の user、グループ、およびカスタムロールを管理できます。SCIM グループは W&B の Teams にマッピングされます。
SCIM API は <host-url>/scim/
でアクセスでき、RC7643 プロトコル にあるフィールドのサブセットを使用して、/Users
および /Groups
エンドポイントをサポートします。さらに、公式の SCIM スキーマにはない /Roles
エンドポイントが含まれています。W&B は、W&B organization でのカスタムロールの自動管理をサポートするために、/Roles
エンドポイントを追加します。
複数のエンタープライズ SaaS Cloud organization の管理者である場合は、SCIM API リクエストの送信先となる organization を構成する必要があります。プロフィール画像をクリックし、User Settings をクリックします。設定の名前は Default API organization です。これは、Dedicated Cloud , Self-managed instances , および SaaS Cloud を含む、すべてのホスティングオプションで必要です。SaaS Cloud では、organization 管理者は、SCIM API リクエストが正しい organization に送信されるように、user 設定でデフォルトの organization を構成する必要があります。
選択したホスティングオプションによって、このページの例で使用される <host-url>
プレースホルダーの value が決定されます。
さらに、例では user ID(abc
や def
など)を使用します。実際のリクエストとレスポンスでは、user ID にハッシュ value が設定されます。
認証
organization またはインスタンスの管理者は、 APIキー を使用して基本認証で SCIM API にアクセスできます。HTTP リクエストの Authorization
ヘッダーを文字列 Basic
に設定し、その後にスペース、次に username:API-KEY
の形式で base-64 エンコードされた文字列を設定します。つまり、username と APIキー を :
文字で区切られた value に置き換え、その結果を base-64 エンコードします。たとえば、demo:p@55w0rd
として認証するには、ヘッダーを Authorization: Basic ZGVtbzpwQDU1dzByZA==
にする必要があります。
User リソース
SCIM の user リソースは W&B の Users にマッピングされます。
User を取得
{
"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"
}
Users をリスト表示
{
"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
}
User を作成
エンドポイント : <host-url>/scim/Users
メソッド : POST
説明 : 新しい user リソースを作成します。
サポートされているフィールド :
フィールド
タイプ
必須
emails
複数値の配列
はい(primary
メールが設定されていることを確認してください)
userName
文字列
はい
{
"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"
}
User を削除
エンドポイント : <host-url>/scim/Users/{id}
メソッド : DELETE
説明 : user の一意の ID を指定して、SaaS Cloud organization または Dedicated Cloud あるいは Self-managed インスタンスから user を完全に削除します。必要に応じて、User を作成 API を使用して、user を organization またはインスタンスに再度追加します。
リクエストの例 :
User を一時的に非アクティブ化するには、
PATCH
エンドポイントを使用する
User を非アクティブ化 API を参照してください。
User を非アクティブ化
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
value
オブジェクト
User を非アクティブ化することを示すオブジェクト {"active": false}
。
User の非アクティブ化および再アクティブ化の操作は、
SaaS Cloud ではサポートされていません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : false }
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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"
}
User を再アクティブ化
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : user の一意の ID を指定して、Dedicated Cloud または Self-managed インスタンス内の非アクティブ化された user を再アクティブ化します。
サポートされているフィールド :
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
value
オブジェクト
User を再アクティブ化することを示すオブジェクト {"active": true}
。
User の非アクティブ化および再アクティブ化の操作は、
SaaS Cloud ではサポートされていません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"value" : {"active" : true }
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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"
}
User に organization レベルのロールを割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : user に organization レベルのロールを割り当てます。ロールは、こちら で説明されているように、admin
、viewer
、または member
のいずれかになります。SaaS Cloud の場合は、user 設定で SCIM API 用に正しい organization を構成していることを確認してください。
サポートされているフィールド :
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
path
文字列
ロールの割り当て操作が有効になるスコープ。許可される value は organizationRole
のみです。
value
文字列
user に割り当てる定義済みの organization レベルのロール。admin
、viewer
、または member
のいずれかになります。このフィールドでは、定義済みのロールの大文字と小文字は区別されません。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "organizationRole" ,
"value" : "admin" // user の organization スコープのロールを admin に設定します
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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" : [ // user が所属するすべての Teams における user のロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // organization スコープにおける user のロールを返します
}
User に Team レベルのロールを割り当てる
エンドポイント : <host-url>/scim/Users/{id}
メソッド : PATCH
説明 : user に Team レベルのロールを割り当てます。ロールは、こちら で説明されているように、admin
、viewer
、member
、またはカスタムロールのいずれかになります。SaaS Cloud の場合は、user 設定で SCIM API 用に正しい organization を構成していることを確認してください。
サポートされているフィールド :
フィールド
タイプ
必須
op
文字列
操作のタイプ。許可される value は replace
のみです。
path
文字列
ロールの割り当て操作が有効になるスコープ。許可される value は teamRoles
のみです。
value
オブジェクト配列
オブジェクトが teamName
および roleName
属性で構成される 1 オブジェクト配列。teamName
は user がロールを保持する Team の名前で、roleName
は admin
、viewer
、member
、またはカスタムロールのいずれかになります。このフィールドでは、定義済みのロールの大文字と小文字は区別されず、カスタムロールの大文字と小文字は区別されます。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "replace" ,
"path" : "teamRoles" ,
"value" : [
{
"roleName" : "admin" , // 定義済みのロールの場合、ロール名の大文字と小文字は区別されず、カスタムロールの場合は大文字と小文字が区別されます
"teamName" : "team1" // Team team1 における user のロールを admin に設定します
}
]
}
]
}
レスポンスの例 :
これにより、User オブジェクトが返されます。
{
"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" : [ // user が所属するすべての Teams における user のロールを返します
{
"teamName" : "team1" ,
"roleName" : "admin"
}
],
"organizationRole" : "admin" // organization スコープにおける user のロールを返します
}
Group リソース
SCIM のグループリソースは W&B の Teams にマッピングされます。つまり、W&B デプロイメントで SCIM グループを作成すると、W&B の Team が作成されます。他のグループエンドポイントにも同じことが当てはまります。
Team を取得
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : GET
説明 : Team の一意の ID を指定して、Team 情報を取得します。
リクエストの例 :
{
"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"
]
}
Teams をリスト表示
エンドポイント : <host-url>/scim/Groups
メソッド : GET
説明 : Teams のリストを取得します。
リクエストの例 :
{
"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
}
Team を作成
エンドポイント : <host-url>/scim/Groups
メソッド : POST
説明 : 新しい Team リソースを作成します。
サポートされているフィールド :
フィールド
タイプ
必須
displayName
文字列
はい
members
複数値の配列
はい(value
サブフィールドは必須で、user ID にマッピングされます)
dev-user2
をメンバーとして、wandb-support
という Team を作成します。
{
"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"
]
}
Team を更新
エンドポイント : <host-url>/scim/Groups/{id}
メソッド : PATCH
説明 : 既存の Team のメンバーシップリストを更新します。
サポートされている操作 : メンバーの add
、メンバーの remove
リクエストの例 :
dev-user2
を wandb-devs
に追加します
{
"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"
]
}
Team を削除
Team の削除は、Teams にリンクされている追加データがあるため、現在 SCIM API ではサポートされていません。すべてを削除することを確認するには、アプリから Teams を削除します。
Role リソース
SCIM のロールリソースは W&B のカスタムロールにマッピングされます。前述のように、/Roles
エンドポイントは公式の SCIM スキーマの一部ではありません。W&B は、W&B organization でのカスタムロールの自動管理をサポートするために、/Roles
エンドポイントを追加します。
カスタムロールを取得
エンドポイント: <host-url>/scim/Roles/{id}
メソッド : GET
説明 : ロールの一意の ID を指定して、カスタムロールの情報を取得します。
リクエストの例 :
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // indicates the predefined role
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}
カスタムロールをリスト表示
エンドポイント: <host-url>/scim/Roles
メソッド : GET
説明 : W&B organization 内のすべてのカスタムロールの情報を取得します
リクエストの例 :
{
"Resources" : [
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // indicates the predefined role that the custom role inherits from
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
},
{
"description" : "Another sample custom role for example" ,
"id" : "Um9sZToxMg==" ,
"inheritedFrom" : "viewer" , // indicates the predefined role that the custom role inherits from
"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 // inherited from viewer predefined role
},
...
...
{
"name" : "run:stop" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}
],
"itemsPerPage" : 9999 ,
"schemas" : [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"startIndex" : 1 ,
"totalResults" : 2
}
カスタムロールを作成
エンドポイント : <host-url>/scim/Roles
メソッド : POST
説明 : W&B organization に新しいカスタムロールを作成します。
サポートされているフィールド :
フィールド
タイプ
必須
name
文字列
カスタムロールの名前
description
文字列
カスタムロールの説明
permissions
オブジェクト配列
各オブジェクトに w&bobject:operation
の形式の value を持つ name
文字列フィールドが含まれる、権限オブジェクトの配列。たとえば、W&B の Runs に対する削除操作の権限オブジェクトには、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" , // indicates the predefined role
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}
カスタムロールを削除
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : DELETE
説明 : W&B organization 内のカスタムロールを削除します。使用には注意してください 。カスタムロールが継承した定義済みのロールが、操作前にカスタムロールを割り当てられていたすべての Users に割り当てられるようになりました。
リクエストの例 :
カスタムロールの権限を更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PATCH
説明 : W&B organization のカスタムロールで、カスタム権限を追加または削除します。
サポートされているフィールド :
フィールド
タイプ
必須
operations
オブジェクト配列
操作オブジェクトの配列
op
文字列
操作オブジェクト内の操作のタイプ。add
または remove
のいずれかになります。
path
文字列
操作オブジェクト内の静的フィールド。許可される value は permissions
のみです。
value
オブジェクト配列
各オブジェクトに w&bobject:operation
の形式の value を持つ name
文字列フィールドが含まれる、権限オブジェクトの配列。たとえば、W&B の Runs に対する削除操作の権限オブジェクトには、name
として run:delete
が設定されます。
{
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations" : [
{
"op" : "add" , // indicates the type of operation, other possible value being `remove`
"path" : "permissions" ,
"value" : [
{
"name" : "project:delete"
}
]
}
]
}
{
"description" : "A sample custom role for example" ,
"id" : "Um9sZTo3" ,
"inheritedFrom" : "member" , // indicates the predefined role
"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 // inherited from member predefined role
},
...
...
{
"name" : "project:update" ,
"isInherited" : false // existing custom permission added by admin before the update
},
{
"name" : "project:delete" ,
"isInherited" : false // new custom permission added by admin as part of the update
}
],
"schemas" : [
""
]
}
カスタムロールのメタデータを更新
エンドポイント : <host-url>/scim/Roles/{id}
メソッド : PUT
説明 : W&B organization のカスタムロールの名前、説明、または継承されたロールを更新します。この操作は、カスタムロールの既存の(つまり、継承されていない)カスタム権限には影響しません。
サポートされているフィールド :
フィールド
タイプ
必須
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" , // changed the descripton per the request
"id" : "Um9sZTo3" ,
"inheritedFrom" : "viewer" , // indicates the predefined role which is changed per the request
"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 // inherited from viewer predefined role
},
... // Any permissions that are in member predefined role but not in viewer will not be inherited post the update
{
"name" : "project:update" ,
"isInherited" : false // custom permission added by admin
},
{
"name" : "project:delete" ,
"isInherited" : false // custom permission added by admin
}
],
"schemas" : [
""
]
}