これは、このセクションの複数ページの印刷可能なビューです。 印刷するには、ここをクリックしてください.

このページの通常のビューに戻る.

アイデンティティとアクセス管理 (IAM)

W&B プラットフォームには、W&B 内での 3 つの IAM スコープがあります: OrganizationsTeams、および Projects

Organization

Organization は、あなたの W&B アカウントまたはインスタンスのルートスコープです。ユーザー管理、チーム管理、チーム内のプロジェクト管理、使用状況の追跡など、アカウントまたはインスタンス内のすべてのアクションは、このルートスコープのコンテキスト内で行われます。

Multi-tenant Cloud を使用している場合、複数の組織を持っている可能性があります。それぞれが事業部門、個人のユーザー、他社との共同パートナーシップなどに対応する場合があります。

Dedicated Cloud または Self-managed instance を使用している場合、それは1つの組織に対応しています。あなたの会社は、異なる事業部門または部門に対応するために Dedicated Cloud または Self-managed インスタンスを複数持つことができますが、それは業務や部門全体にわたる AI 実践者を管理するためのオプションの方法に過ぎません。

詳細については、Manage organizations を参照してください。

Team

Team は、組織内のサブスコープであり、事業部門、機能、部門、または会社内のプロジェクトチームに対応する場合があります。デプロイメントタイプと価格プランに応じて、組織内に複数のチームを持つことができます。

AI プロジェクトはチームのコンテキスト内で編成されます。チーム内のアクセス制御は、親組織レベルで管理者であるかどうかに関係なく、チーム管理者によって管理されます。

詳細については、Add and manage teams を参照してください。

Project

Project は、特定の目標を持つ実際の AI プロジェクトに対応するチーム内のサブスコープです。チーム内に複数のプロジェクトを持つことができます。各プロジェクトには、誰がプロジェクトにアクセスできるかを決定する公開範囲モードがあります。

各プロジェクトは、WorkspacesReports で構成され、関連する ArtifactsSweeps、および Automations とリンクされています。

1 - 認証

1.1 - SDK でフェデレーテッドアイデンティティを使用する

W&B SDKを使用して、組織の資格情報を使用したサインインにアイデンティティ連携を利用します。W&Bの組織管理者が組織向けにSSOを設定している場合、すでに組織の資格情報を使用してW&BアプリのUIにサインインしています。この意味で、アイデンティティ連携はW&B SDKのためのSSOに似ていますが、JSON Web Tokens (JWTs) を直接使用しています。APIキーの代わりにアイデンティティ連携を使用できます。

RFC 7523は、SDKを使用したアイデンティティ連携の基盤を形成しています。

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検証

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_VALIDATIONtrue に設定してオーディエンスクレームの検証をスキップするか、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 を設定することができます。

1.2 - SSO を LDAP で設定

資格情報を W&B Server の LDAP サーバーで認証します。次のガイドは W&B Server の設定を行う方法を説明しています。必須およびオプションの設定、システム設定 UI から LDAP 接続を設定する手順をカバーしています。また、アドレス、ベース識別名、属性など、LDAP 設定のさまざまな入力についての情報を提供します。これらの属性は W&B アプリ UI から、または環境変数を使用して指定できます。匿名バインドを設定するか、管理者 DN とパスワードでバインドすることができます。

LDAP 接続の設定

  1. W&B アプリに移動します。
  2. 右上のプロフィールアイコンを選択します。ドロップダウンから System Settings を選択します。
  3. Configure LDAP Client を切り替えます。
  4. フォームに詳細を追加します。各入力の詳細は、Configuring Parameters セクションを参照してください。
  5. Update Settings をクリックして設定をテストします。これにより、W&B サーバーとのテストクライアント/接続が確立されます。
  6. 接続が検証されたら、Enable LDAP Authentication を切り替え、Update Settings ボタンを選択します。

次の環境変数を使用して LDAP 接続を設定します。

環境変数 必須
LOCAL_LDAP_ADDRESS はい ldaps://ldap.example.com:636
LOCAL_LDAP_BASE_DN はい email=mail,group=gidNumber
LOCAL_LDAP_BIND_DN いいえ cn=admin, dc=example,dc=org
LOCAL_LDAP_BIND_PW いいえ
LOCAL_LDAP_ATTRIBUTES はい email=mail, group=gidNumber
LOCAL_LDAP_TLS_ENABLE いいえ
LOCAL_LDAP_GROUP_ALLOW_LIST いいえ
LOCAL_LDAP_LOGIN いいえ

各環境変数の定義については Configuration parameters セクションを参照してください。明確さのために、環境変数の接頭辞 LOCAL_LDAP を定義名から省略しました。

設定パラメータ

以下の表には、必須およびオプションの LDAP 設定を一覧し説明しています。

環境変数 定義 必須
ADDRESS W&B Server をホストする VPC 内の LDAP サーバーのアドレスです。 はい
BASE_DN ディレクトリ内で検索を開始するルートパスであり、クエリを行うために必要です。 はい
BIND_DN LDAP サーバーに登録された管理者ユーザーのパスです。LDAP サーバーが未認証のバインドをサポートしていない場合、これが必要です。指定された場合、W&B Server はこのユーザーとして LDAP サーバーに接続します。指定されていない場合、W&B Server は匿名バインドを使用して接続します。 いいえ
BIND_PW 管理者ユーザーのパスワードで、バインドを認証するために使用されます。空白の場合、W&B Server は匿名バインドを使用して接続します。 いいえ
ATTRIBUTES メールとグループ ID 属性名をコンマ区切りの文字列値として提供します。 はい
TLS_ENABLE TLS を有効にします。 いいえ
GROUP_ALLOW_LIST グループ許可リスト。 いいえ
LOGIN W&B Server に LDAP を使用して認証するかどうかを指定します。True または False を設定します。オプションとして、LDAP の設定をテストするために false に設定することができます。LDAP 認証を開始するには true に設定します。 いいえ

1.3 - SSO を OIDC で設定

W&B サーバーは、OpenID Connect (OIDC) 互換のアイデンティティ プロバイダーをサポートしており、Okta、Keycloak、Auth0、Google、および Entra などの外部アイデンティティ プロバイダーを通じてユーザー アイデンティティとグループ メンバーシップを管理できます。

OpenID Connect (OIDC)

W&B サーバーは、外部アイデンティティプロバイダー (IdP) とのインテグレーションのために、次の OIDC 認証フローをサポートします。

  1. フォームポストを使用したインプリシットフロー
  2. コードエクスチェンジのための証明キーを使用した認可コードフロー (PKCE)

これらのフローはユーザーを認証し、必要なアイデンティティ情報 (ID トークンの形式) を W&B サーバーに提供してアクレス制御を管理します。

ID トークンは、ユーザーの名前、ユーザー名、メール、およびグループメンバーシップなど、ユーザーのアイデンティティ情報を含む JWT です。W&B サーバーはこのトークンを使用してユーザーを認証し、システム内で適切なロールやグループにマッピングします。

W&B サーバーのコンテキストでは、アクセストークンはユーザーを代表して API へのリクエストを認可しますが、W&B サーバーの主な関心はユーザー認証とアイデンティティであるため、ID トークンのみが必要です。

環境変数を使用して、Dedicated cloudIAM オプションを設定するか、Self-managed インスタンスを設定することができます。

Dedicated cloud または Self-managed W&B サーバーインストールのためにアイデンティティ プロバイダーを設定する際は、さまざまな IdP に関するこれらのガイドラインに従ってください。SaaS バージョンの W&B を使用している場合は、組織の Auth0 テナントを設定するための支援を求めるには support@wandb.com に連絡してください。

AWS Cognito を認証に設定する手順は以下の通りです:

  1. 最初に AWS アカウントにサインインし、AWS Cognito アプリに移動します。

    認証に OIDC を使用し認可に使用しない場合、パブリッククライアントはセットアップを簡素化します
  2. IdP にアプリケーションを設定するための許可されたコールバック URL を入力します:

    • http(s)://YOUR-W&B-HOST/oidc/callback をコールバック URL として追加します。 YOUR-W&B-HOST を W&B ホストパスに置き換えます。
  3. IdP がユニバーサルログアウトをサポートしている場合は、ログアウト URL を http(s)://YOUR-W&B-HOST に設定します。 YOUR-W&B-HOST を W&B ホストパスに置き換えます。

    たとえば、アプリケーションが https://wandb.mycompany.com で実行されている場合、YOUR-W&B-HOSTwandb.mycompany.com に置き換えます。

    下の画像は、AWS Cognito で許可されたコールバックとサインアウト URL を提供する方法を示しています。

    インスタンスが複数のホストからアクセス可能な場合は、ここにすべてを含めてください。

    wandb/local はデフォルトで implicit grant with the form_post response type を使用します。

    また、wandb/local を設定して、PKCE Code Exchange フローを使用する authorization_code grant を実行することもできます。

  4. アプリにトークンを届ける方法を AWS Cognito で設定するために、1 つ以上の OAuth グラントタイプを選択します。

  5. W&B は特定の OpenID Connect (OIDC) スコープを要求します。AWS Cognito App から以下を選択してください:

    • “openid”
    • “profile”
    • “email”

    たとえば、AWS Cognito アプリの UI は以下の画像のようになります:

    必須フィールド

    設定ページで Auth Method を選択するか、OIDC_AUTH_METHOD 環境変数を設定して、どのグラントが wandb/local に適しているかを指定します。

    Auth Method を pkce に設定する必要があります。

  6. クライアント ID および OIDC 発行者の URL が必要です。OpenID ディスカバリドキュメントは $OIDC_ISSUER/.well-known/openid-configuration で利用可能でなければなりません。

    たとえば、ユーザープール ID を User Pools セクションの App Integration タブから、Cognito IdP URL に追加することで発行者 URL を生成できます:

    AWS Cognito での発行者 URL のスクリーンショット

    IDP URL には「Cognito ドメイン」を使用しないでください。Cognito は https://cognito-idp.$REGION.amazonaws.com/$USER_POOL_ID でそのディスカバリドキュメントを提供します。

Okta を認証に設定する手順は以下の通りです:

  1. https://login.okta.com/ で Okta ポータルにログインします。

  2. 左側のサイドバーで Applications、そして再度 Applications を選択します。

  3. “Create App integration” をクリックします。

  4. “Create a new app integration” 画面で OIDC - OpenID ConnectSingle-Page Application を選択し、次に「Next」をクリックします。

  5. “New Single-Page App Integration” 画面で、次の内容を入力し「Save」をクリックします:

    • アプリ統合名、例として “Weights & Biases”
    • グラントタイプ: Authorization CodeImplicit (hybrid) の両方を選択
    • サインイン リダイレクト URI: https://YOUR_W_AND_B_URL/oidc/callback
    • サインアウト リダイレクト URI: https://YOUR_W_AND_B_URL/logout
    • 割り当て: Skip group assignment for now を選択
  6. 作成したばかりの Okta アプリケーションの概要画面で、Client IDClient CredentialsGeneral タブの下に記録します:

  7. Okta OIDC 発行者 URL を特定するには、左側のメニューで Settings そして Account を選択します。 Okta UI は Organization Contact の下に企業名を表示します。

OIDC 発行者 URL は https://COMPANY.okta.com の形式です。該当する値で COMPANY を置き換えて、注意してください。

  1. https://portal.azure.com/ で Azure ポータルにログインします。

  2. 「Microsoft Entra ID」サービスを選択します。

  3. 左側のサイドバーで「App registrations」を選択します。

  4. 上部で「New registration」をクリックします。

    「アプリケーションの登録」画面で次の値を入力します:

    • 名前を指定します。例として「Weights and Biases application」

    • デフォルトでは選択されたアカウントタイプは「この組織ディレクトリ内のアカウントのみ (デフォルトディレクトリのみ - シングルテナント)」です。必要に応じて修正してください。

    • リダイレクト URI を Web タイプで設定し、値は https://YOUR_W_AND_B_URL/oidc/callback

    • 「登録」をクリックします。

    • 「アプリケーション (client) ID」と「ディレクトリ (テナント) ID」をメモしておいてください。

  5. 左側のサイドバーで、Authentication をクリックします。

    • Front-channel logout URL の下に次を指定します: https://YOUR_W_AND_B_URL/logout

    • 「保存」をクリックします。

  6. 左側のサイドバーで「Certificates & secrets」をクリックします。

    • 「Client secrets」をクリックし、「New client secret」をクリックします。

    「クライアントシークレットの追加」画面で次の値を入力します:

    • 説明を入力します。例として「wandb」

    • 「有効期限」はそのままにしておくか、必要に応じて変更します。

    • 「追加」をクリックします。

    • シークレットの「値」をメモしておいてください。「シークレット ID」は不要です。

これで次の 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 の設定方法に依存します)

SSO の設定は、W&B サーバー UI を使用するか、wandb/local pod に環境変数 を渡して設定することができます。環境変数が UI よりも優先されます。

System Console は System Settings ページの後継です。これは W&B Kubernetes Operator ベースのデプロイメントで利用可能です。

  1. Access the W&B Management Console を参照してください。

  2. Settings に移動し、次に Authentication を選択します。Type ドロップダウンで OIDC を選択します。

  3. 値を入力します。

  4. Save をクリックします。

  5. ログアウトし、IdP ログイン画面を使用して再度ログインします。

  1. Weights&Biases インスタンスにサインインします。

  2. W&B アプリに移動します。

  3. ドロップダウンから System Settings を選択します:

  4. 発行者、クライアント ID、および認証方法を入力します。

  5. Update settings を選択します。

セキュリティ・アサーション・マークアップ言語 (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_HOST_URL>/<your-team-name>/service-accounts でチームスコープのサービスアカウントの APIキー を取得できます。あるいは、チームの Team settingsService 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 (JWTs) を発行できるアイデンティティプロバイダー (IdPs) とともに、W&B SDK と CLI を用いたチームスコープの 外部サービスアカウント もサポートしています。

2 - アクセス管理

組織内でのユーザーとチームの管理

ユニークな組織ドメインで W&B に初めてサインアップしたユーザーは、その組織のインスタンス管理者ロールに割り当てられます。組織管理者は特定のユーザーにチーム管理者ロールを割り当てます。

チーム管理者は、チーム内で管理権限を持つ組織内のユーザーです。

組織管理者は、https://wandb.ai/account-settings/ の組織アカウント設定にアクセスして、ユーザーを招待したり、ユーザーの役割を割り当てたり更新したり、チームを作成したり、組織からユーザーを削除したり、請求管理者を割り当てたりすることができます。詳細については、ユーザーの追加と管理を参照してください。

組織管理者がチームを作成すると、インスタンス管理者またはチーム管理者は次のことができます:

  • デフォルトでは、管理者のみがそのチームにユーザーを招待したり、チームからユーザーを削除したりできます。この振る舞いを変更するには、チーム設定を参照してください。
  • チームメンバーの役割を割り当てたり更新したりします。
  • 組織に参加した際に自動的に新しいユーザーをチームに追加します。

組織管理者とチーム管理者は、https://wandb.ai/<your-team-name> のチームダッシュボードを使用してチームを管理します。詳細とチームのデフォルトの公開範囲を設定するには、チームの追加と管理を参照してください。

特定のプロジェクトへの公開範囲の制限

W&B プロジェクトの範囲を定義して、誰がそのプロジェクトを閲覧、編集、そして W&B の run をサブミットできるかを制限します。プロジェクトを閲覧できる人を制限することは、特にチームが機密または秘密のデータを扱う場合に役立ちます。

組織管理者、チーム管理者、またはプロジェクトの所有者は、プロジェクトの公開範囲を設定および編集することができます。

詳細については、プロジェクトの公開範囲を参照してください。

2.1 - あなたの組織を管理する

組織の管理者として、組織内の個々のユーザーを管理し、チームを管理できます。

チーム管理者として、チームを管理できます。

組織内のユーザー管理を簡素化したい場合は、ユーザーとチームの管理を自動化するを参照してください。

組織名の変更

  1. https://wandb.ai/home に移動します。
  2. ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで 設定 を選択します。
  3. 設定 タブ内で 一般 を選択します。
  4. 名前を変更 ボタンを選択します。
  5. 表示されるモーダル内に、新しい組織名を入力し、名前を保存 ボタンを選択します。

ユーザーの追加と管理

管理者として、組織のダッシュボードを使用して次のことを行います。

  • ユーザーを招待または削除する。
  • ユーザーの組織の役割を割り当てまたは更新し、カスタム役割を作成する。
  • 請求管理者を割り当てる。

組織の管理者がユーザーを組織に追加する方法はいくつかあります。

  1. 招待によるメンバー
  2. SSOによる自動プロビジョニング
  3. ドメインキャプチャ

シートと価格

以下の表は、Models と Weave のシートの仕組みをまとめたものです。

製品 シート 費用基準
Models セットごとの支払い 支払い済みの Models シートの数と、累積した使用量が総合的なサブスクリプション費用を決定します。各ユーザーには、3 つの利用可能なシートタイプのいずれかを割り当てることができます: Full, Viewer, No-Access
Weave 無料 使用量に基づく

ユーザーを招待する

管理者は、組織内の特定のチームに加えてユーザーを組織に招待できます。

  1. https://wandb.ai/home に移動します。
  2. ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで ユーザー を選択します。
  3. 新しいユーザーを招待する を選択します。
  4. 表示されるモーダルで、メールまたはユーザー名 フィールドにそのユーザーのメールまたはユーザー名を入力します。
  5. (推奨) チームを選択 ドロップダウンメニューから、そのユーザーをチームに追加します。
  6. 役割を選択 ドロップダウンから、そのユーザーに割り当てる役割を選択します。ユーザーの役割は後で変更可能です。役割を割り当てる に記載されている表を参照して、可能な役割について更に詳しく知ってください。
  7. 招待を送信 ボタンを選択します。

W&Bはサードパーティのメールサーバーを使って、招待を送信 ボタンを選択した後にユーザーのメールに招待リンクを送信します。ユーザーが招待を受け入れると、あなたの組織にアクセスできるようになります。

  1. https://<org-name>.io/console/settings/ に移動します。<org-name> はあなたの組織の名前に置き換えてください。
  2. ユーザーを追加 ボタンを選択します。
  3. 表示されるモーダルで、新しいユーザーのメールアドレスを メール フィールドに入力します。
  4. 役割 ドロップダウンからユーザーに割り当てる役割を選択します。ユーザーの役割は後で変更可能です。役割を割り当てる に記載されている表を参照して、可能な役割について更に詳しく知ってください。
  5. ユーザーのメールにサードパーティのメールサーバーを使って招待リンクを送信したい場合は、招待メールをユーザーに送信 ボックスにチェックを入れます。
  6. 新しいユーザーを追加 ボタンを選択します。

ユーザーの自動プロビジョニング

一致するメールドメインを持つW&Bユーザーは、SSOを設定し、SSOプロバイダーが許可した場合、SSOを使ってW&B組織にサインインすることができます。SSOはすべてのエンタープライズライセンスに利用可能です。

W&Bはデフォルトで自動プロビジョニングされたユーザーに「メンバー」役割を割り当てます。自動プロビジョニングされたユーザーの役割はいつでも変更可能です。

Dedicated cloudインスタンスおよびSelf-managedデプロイメントでは、SSOを使ったユーザーの自動プロビジョニングがデフォルトでオンになっています。自動プロビジョニングをオフにすることができ、特定のユーザーを選んでW&B組織に追加することができます。

以下のタブでは、デプロイメントタイプに基づいてSSOをオフにする方法を説明します:

Dedicated cloudインスタンスを使用している場合で、自動プロビジョニングをオフにしたい場合は、W&Bチームに連絡してください。

W&Bコンソールを使用してSSOを使った自動プロビジョニングをオフにします。

  1. https://<org-name>.io/console/settings/ に移動します。<org-name> をあなたの組織名に置き換えてください。
  2. セキュリティ を選択します。
  3. SSOプロビジョニングを無効にする を選択して、SSOを使った自動プロビジョニングをオフにします。

カスタム役割を作成する

組織の管理者は、View-Only または Member 役割に基づいて新しい役割を作成し、追加の許可を追加することで詳細なアクセス制御を実現できます。チーム管理者は、チームメンバーにカスタム役割を割り当てることができます。カスタム役割は組織レベルで作成され、チームレベルで割り当てられます。

カスタム役割を作成するには:

  1. https://wandb.ai/home に移動します。
  2. ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウン内の アカウント セクションで 設定 を選択します。
  3. 役割 をクリックします。
  4. カスタム役割 セクションで 役割を作成 をクリックします。
  5. 役割の名前を入力します。必要に応じて説明を追加します。
  6. カスタム役割のベースとする役割を Viewer または Member から選択します。
  7. 許可を追加するには、許可を検索 フィールドをクリックし、追加する1つ以上の許可を選択します。
  8. 役割が持つ許可を要約している カスタム役割の許可 セクションを確認します。
  9. 役割を作成 をクリックします。

W&Bコンソールを使ってカスタム役割を作成します:

  1. https://<org-name>.io/console/settings/ に移動します。<org-name> をあなたの組織名に置き換えてください。
  2. カスタム役割 セクションで 役割を作成 をクリックします。
  3. 役割の名前を入力します。必要に応じて説明を追加します。
  4. カスタム役割のベースとする役割を Viewer または Member から選択します。
  5. 許可を追加するには、許可を検索 フィールドをクリックし、追加する1つ以上の許可を選択します。
  6. 役割が持つ許可を要約している カスタム役割の許可 セクションを確認します。
  7. 役割を作成 をクリックします。

チーム管理者は、今後、チーム設定 からチームのメンバーにカスタム役割を割り当てることができます。

ドメインキャプチャ

ドメインキャプチャは、従業員があなたの会社の組織に参加する手助けをし、新しいユーザーが会社の管轄外で資産を作成することがないようにします。

ドメインキャプチャを使用すると、@example.com のような会社のメールアドレスを持つ人々を自動的にW&B SaaSクラウド組織に追加できます。これにより、すべての従業員が適切な組織に参加し、新しいユーザーが会社の管轄外で資産を作成することを防ぎます。

この表は、ドメインキャプチャが有効か無効かによる、新しいユーザーと既存のユーザーの振る舞いを要約したものです。

ドメインキャプチャあり ドメインキャプチャなし
新しいユーザー 確認済みドメインからW&Bに登録したユーザーは自動的に組織のデフォルトチームにメンバーとして追加されます。チーム参加を有効にしている場合、登録時に追加のチームを選択することができます。招待を受け入れて他の組織やチームにも参加することができます。 ユーザーは、集中化された組織があることを知らずにW&Bアカウントを作成することができます。
招待されたユーザー 招待を受け入れたときに招待されたユーザーは自動的にあなたの組織に参加します。招待されたユーザーは組織のデフォルトチームに自動的にメンバーとして追加されません。招待を受けて他の組織やチームにも参加できます。 招待を受け入れたときに招待されたユーザーは自動的にあなたの組織に参加します。招待を受けて他の組織やチームにも参加できます。
既存のユーザー あなたのドメインからの確認済みメールアドレスを持つ既存のユーザーは、W&Bアプリ内の組織のチームに参加できます。組織に参加する前に既存のユーザーが作成したすべてのデータは残ります。W&Bは既存ユーザーのデータを移行しません。 既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。

招待されていない新しいユーザーを組織に参加した際にデフォルトチームに自動的に割り当てるには:

  1. https://wandb.ai/home に移動します。
  2. ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから 設定 を選択します。
  3. 設定 タブ内で 一般 を選択します。
  4. ドメインキャプチャ 内の ドメインを請求する ボタンを選択します。
  5. デフォルトチーム ドロップダウンから新しいユーザーが自動的に参加するチームを選択します。利用可能なチームがない場合は、チーム設定を更新する必要があります。チームを追加し管理するの指示を参照してください。
  6. メールドメインを請求する ボタンをクリックします。

招待されていない新しいユーザーを自動的にそのチームに割り当てる前に、チームの設定でドメインマッチングを有効にする必要があります。

  1. https://wandb.ai/<team-name> にあるチームのダッシュボードに移動します。ここで <team-name> はドメインマッチングを有効にしたいチームの名前です。
  2. チームのダッシュボードの左側のグローバルナビゲーションで チーム設定 を選択します。
  3. プライバシー セクションで、「一致するメールドメインを持つ新しいユーザーに、サインアップ時にこのチームに参加することを推奨する」オプションを切り替えます。

専用または自己管理のデプロイメントタイプを使用してドメインキャプチャを構成する際は、W&Bアカウントチームにご連絡ください。設定が完了すると、会社のメールアドレスでW&Bアカウントを作成したユーザーに対し、専用または自己管理のインスタンスへのアクセスを求めるために管理者に連絡するよう自動的に促されます。

ドメインキャプチャあり ドメインキャプチャなし
新しいユーザー 確認済みドメインからSaaSクラウド上のW&Bにサインアップしたユーザーは、カスタマイズしたメールアドレスを持つ管理者に連絡するように自動的に促されます。プロダクトのトライアルのためにSaaSクラウド上に新しい組織を作成することもできます。 ユーザーは、会社に集中化された専用インスタンスがあることを知らないまま、W&B SaaSクラウドアカウントを作成することができます。
既存のユーザー 既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。 既存のW&Bユーザーは、複数の組織やチームに分散している可能性があります。

ユーザーの役割を割り当てまたは更新する

組織内のすべてのメンバーは、W&B Models および Weave のための組織役割とシートを持っています。彼らのシートタイプによって、彼らの請求状況と各製品ラインで取ることのできるアクションが決まります。

組織に招待する際に、ユーザーに組織の役割を初めて割り当てます。後でどのユーザーの役割も変更できます。

組織内のユーザーは、以下のいずれかの役割を持つことができます:

役割 説明
管理者 他のユーザーを組織に追加または削除し、ユーザーの役割を変更し、カスタム役割を管理し、チームを追加することができるインスタンス管理者。管理者が不在の場合に備えて、W&Bは複数の管理者がいることを推奨しています。
メンバー インスタンス管理者によって招待された組織の通常のユーザー。組織メンバーは、他のユーザーを招待したり、組織内の既存のユーザーを管理したりすることはできません。
ビューアー (エンタープライズのみの機能) インスタンス管理者によって招待された、組織のビュー専用ユーザー。ビューアーは、組織と彼らがメンバーである基盤となるチームに対して読み取り専用アクセスを持ちます。
カスタムロール (エンタープライズのみの機能) カスタム役割は、組織の管理者が前述の View-Only または Member 役割を継承し、追加の許可を追加して微細かいアクセス制御を達成するために作成することができます。チーム管理者は、その役割をそれぞれのチーム内のユーザーに割り当てることができます。

ユーザーの役割を変更するには:

  1. https://wandb.ai/home に移動します。
  2. ページの右上隅にある ユーザーメニュー ドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
  3. 検索バーにユーザーの名前またはメールアドレスを入力します。
  4. チーム役割 ドロップダウンからユーザー名の横にある役割を選択します。

ユーザーのアクセスを割り当てまたは更新する

組織内のユーザーは、以下のいずれかのモデルシートまたは Weave アクセスタイプを持っています:フル、ビューアー、またはアクセスなし。

シートタイプ 説明
フル この役割タイプのユーザーは、Models または Weave のデータを書き込み、読み取り、およびエクスポートするための完全な権限を持ちます。
ビューアー あなたの組織のビュー専用ユーザー。ビューアーは、組織とその基となるチームに対してのみ読み取りアクセスを持ち、Models または Weave に対してビュー専用アクセスを持ちます。
アクセスなし この役割を持つユーザーは、Models または Weave 製品へのアクセスはありません。

モデルシートタイプと Weave アクセスタイプは組織レベルで定義され、チームに継承されます。ユーザーのシートタイプを変更したい場合は、組織の設定に移動し、次のステップに従ってください:

  1. SaaS ユーザーの場合、https://wandb.ai/account-settings/<organization>/settings にある組織の設定に移動します。角括弧(<>)で囲まれた値を組織名に置き換えてください。他の専用または自己管理のデプロイメントの場合は、https://<your-instance>.wandb.io/org/dashboard に移動します。
  2. ユーザー タブを選択します。
  3. 役割 ドロップダウンからユーザーに割り当てたいシートタイプを選択します。

ユーザーを削除する

  1. https://wandb.ai/home に移動します。
  2. ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
  3. 検索バーにユーザーの名前またはメールアドレスを提供します。
  4. 表示されたら、三点リーダーまたは3つの点のアイコン()を選択します。
  5. ドロップダウンから メンバーを削除 を選択します。

請求管理者を割り当てる

  1. https://wandb.ai/home に移動します。
  2. ページの右上隅にある ユーザーメニュー のドロップダウンを選択します。ドロップダウンから ユーザー を選択します。
  3. 検索バーにユーザーの名前またはメールアドレスを入力します。
  4. 請求管理者 列の下で、請求管理者として割り当てたいユーザーを選択します。

チームを追加し管理する

組織のダッシュボードを使って、組織内でチームを作成し管理します。組織の管理者またはチーム管理者は、以下のことができます:

  • ユーザーをチームに招待したり、チームからユーザーを削除したりする。
  • チームメンバーの役割を管理する。
  • 組織に参加した時にユーザーをチームに自動的に追加する。
  • https://wandb.ai/<team-name> にあるチームのダッシュボードでチームストレージを管理する。

チームを作成する

組織のダッシュボードを使用してチームを作成します:

  1. https://wandb.ai/home に移動します。
  2. チーム の下の左側のナビゲーションパネルで コラボレーション用のチームを作成 を選択します。
  3. 表示されるモーダルで チーム名 フィールドにチームの名前を入力します。
  4. ストレージタイプを選択します。
  5. チームを作成 ボタンを選択します。

チームを作成 ボタンを選択すると、W&Bは https://wandb.ai/<team-name> の新しいチームページにリダイレクトします。<team-name> はチーム作成時に入力した名前を使用します。

チームを持ったら、そのチームにユーザーを追加することができます。

チームにユーザーを招待する

組織内のチームにユーザーを招待します。ユーザーがすでにW&Bアカウントを持っている場合は、メールアドレスまたはW&Bユーザー名を使用してチームのダッシュボードからユーザーを招待します。

  1. https://wandb.ai/<team-name> に移動します。
  2. ダッシュボードの左側のグローバルナビゲーションで チーム設定 を選択します。
  3. ユーザー タブを選択します。
  4. 新しいユーザーを招待する を選びます。
  5. 表示されるモーダルで、メールまたはユーザー名 フィールドにそのユーザーのメールを提供し、チームを選択する ドロップダウンからそのユーザーに割り当てる役割を選択します。チーム内でユーザーが持つことができる役割について詳しくは、チーム役割 を参照してください。
  6. 招待を送信 ボタンを選びます。

デフォルトでは、チームまたはインスタンスの管理者のみがメンバーをチームに招待できます。この動作を変更するには、チーム設定を参照してください。

メール招待でユーザーを手動で招待することに加えて、新しいユーザーのメールがあなたの組織のドメインと一致する場合は、自動的に新しいユーザーをチームに追加できます。

新メンバーを登録時にチーム組織と一致させる

新規ユーザーがサインアップ時に組織内のチームを発見できるようにします。新しいユーザーは、あなたの組織の確認済みメールドメインと一致する確認済みのメールドメインを持っている必要があります。確認済みの新規ユーザーは、W&Bアカウントに登録する際に組織に属する確認済みのチームの一覧を見ることができます。

組織の管理者はドメイン請求を有効にする必要があります。ドメインキャプチャを有効にするには、ドメインキャプチャに記載されている手順を参照してください。

チームメンバーの役割を割り当てまたは更新する

  1. チームメンバーの名前の横にあるアカウントタイプのアイコンを選択します。
  2. ドロップダウンから、そのチームメンバーが持つことを望むアカウントタイプを選択します。

この表は、チームメンバーに割り当てることができる役割を示しています:

役割 定義
管理者 チーム内で他のユーザーを追加し削除したり、ユーザー役割を変更したり、チームの設定を構成できるユーザー。
メンバー チーム管理者によってメールまたは組織レベルのユーザー名で招待された、チームの通常のユーザー。メンバー ユーザーは、他のユーザーをチームに招待できません。
ビュー専用 (エンタープライズのみの機能) チーム管理者によってメールまたは組織レベルのユーザー名で招待された、チームのビュー専用ユーザー。ビュー専用ユーザーは、チームとそのコンテンツに対して読み取り専用アクセスしか持たない。
サービス (エンタープライズのみの機能) サービスワーカーまたはサービスアカウントは、W&Bをあなたのrunオートメーションツールで利用するために役立つAPIキーです。チームのためにサービスアカウントからAPIキーを使用する場合は、環境変数 WANDB_USERNAME を設定して正しいユーザーにrunを紐付けることを確認してください。
カスタムロール (エンタープライズのみの機能) カスタム役割は、組織管理者が前述の View-Only または Member 役割を継承し、追加の許可を追加して微細かいアクセス制御を達成するために作成することができます。チーム管理者は、その役割をそれぞれのチーム内のユーザーに割り当てることができます。詳細については、この記事 を参照してください。

チームからユーザーを削除する

チームのダッシュボードを使用してユーザーをチームから削除します。メンバーが作成したrunは、そのメンバーがそのチームにいなくなった場合でもW&Bに保存されます。

  1. https://wandb.ai/<team-name> に移動します。
  2. 左側のナビゲーションバーで チーム設定 を選択します。
  3. ユーザー タブを選択します。
  4. 削除したいユーザーの名前の横にマウスをホバーします。表示されたら、三点リーダーまたは3つの点のアイコン()を選択します。
  5. ドロップダウンから ユーザーを削除 を選択します。

2.2 - プロジェクトのアクセス制御を管理する

プロジェクトの公開範囲スコープとプロジェクトレベルの役割を使用してプロジェクトのアクセスを管理する

W&B プロジェクトの範囲を設定し、誰が W&B の run を表示、編集、提出できるかを制限します。

W&B チーム内の任意のプロジェクトに対するアクセスレベルを設定するために、いくつかのコントロールを組み合わせて使用できます。 公開範囲は、上位レベルのメカニズムです。これを使用して、どのユーザーグループがプロジェクト内の run を表示または提出できるかを制御します。Team または Restricted の公開範囲を持つプロジェクトでは、プロジェクトレベルの役割を使用して、各ユーザーのプロジェクト内でのアクセスレベルを制御できます。

公開範囲

選択できるプロジェクトの公開範囲は4つあります。最も公開されているものから最もプライベートなものの順に、それらは次のとおりです:

範囲 説明
Open プロジェクトを知っている人は誰でもプロジェクトを表示し、run やレポートを提出できます。
Public プロジェクトを知っている人は誰でもプロジェクトを表示できます。run やレポートを提出できるのはプロジェクトのチームだけです。
Team 親チームのメンバーのみがプロジェクトを表示でき、run やレポートを提出できます。チーム外の人はプロジェクトにアクセスできません。
Restricted 親チームから招待されたメンバーのみがプロジェクトを表示し、run やレポートを提出できます。

新規または既存のプロジェクトの公開範囲を設定する

プロジェクトを作成するとき、または後で編集するときに、プロジェクトの公開範囲を設定します。

新しいプロジェクトを作成するときに公開範囲を設定する

  1. SaaS クラウド、専用クラウド、または自己管理インスタンスで W&B 組織に移動します。
  2. 左側のサイドバーの My projects セクションで Create a new project ボタンをクリックします。代わりに、チームの Projects タブに移動し、右上のコーナーの Create new project ボタンをクリックします。
  3. 親チームを選択し、プロジェクトの名前を入力した後、プロジェクトの公開範囲 ドロップダウンから希望の範囲を選択します。

Restricted の公開範囲を選択した場合、次のステップを完了します。

  1. プロジェクトでコラボレーションするために必要な W&B チームメンバーの名前を 招待チームメンバー フィールドに入力します。

既存のプロジェクトの公開範囲を編集する

  1. W&B プロジェクトに移動します。
  2. 左の列で Overview タブを選択します。
  3. 右上のコーナーで Edit Project Details ボタンをクリックします。
  4. Project Visibility ドロップダウンから希望の範囲を選択します。

Restricted の公開範囲を選択した場合、次のステップを完了します。

  1. プロジェクトの Users タブに移動し、特定のユーザーをリストリクションプロジェクトに招待するために ユーザーを追加 ボタンをクリックします。

リストリクション範囲についてのその他の重要な注意事項

  • チームレベルのサービスアカウントをリストリクションプロジェクトで使用したい場合は、そのアカウントをプロジェクトに特に招待または追加する必要があります。そうでないと、デフォルトではチームレベルのサービスアカウントはリストリクションプロジェクトにアクセスできません。
  • リストリクションプロジェクトから run を移動することはできませんが、非リストリクションプロジェクトからリストリクションプロジェクトに run を移動することはできます。
  • プロジェクトの公開範囲をチームにのみ変換することができ、その際、チームのプライバシー設定 Make all future team projects private (public sharing not allowed) に依存しません。
  • リストリクションプロジェクトのオーナーが親チームの一員でなくなった場合、チーム管理者はスムーズなプロジェクト運営のためにオーナーを変更する必要があります。

プロジェクトレベルの役割

チーム内の Team または Restricted 範囲のプロジェクトでは、ユーザーに特定の役割を割り当てることができ、その役割はそのユーザーのチームレベルの役割と異なる場合があります。例えば、ユーザーがチームレベルで Member 役割を持っている場合、そのユーザーに View-OnlyAdmin、または利用可能なカスタム役割をそのチーム内の Team あるいは Restricted 範囲のプロジェクトで割り当てることができます。

ユーザーにプロジェクトレベルの役割を割り当てる

  1. W&B プロジェクトに移動します。
  2. 左の列で Overview タブを選択します。
  3. プロジェクトの Users タブに進みます。
  4. 関連するユーザーの Project Role フィールドに現在割り当てられている役割をクリックすると、他の利用可能な役割がリストされているドロップダウンが開きます。
  5. ドロップダウンから別の役割を選択します。それは即座に保存されます。

プロジェクトレベルの役割についてのその他の重要な注意事項

  • デフォルトでは、チーム_または_リストリクション のプロジェクトにおける全ユーザーのプロジェクトレベルの役割は、それぞれのチームレベルの役割を継承します。
  • チームレベルで View-Only 役割を持つユーザーのプロジェクトレベルの役割を変更することはできません
  • 特定のプロジェクト内でのユーザーのプロジェクトレベル役割がチームレベルの役割と同じである場合、チーム管理者がいつかチームレベルの役割を変更した場合、関連するプロジェクト役割も自動的にチームレベルの役割に追随して変更されます。
  • 特定のプロジェクト内のユーザーのプロジェクトレベル役割をチームレベルの役割と異なるものに変更した場合、チーム管理者がいつかチームレベルの役割を変更しても、関連するプロジェクトレベルの役割はそのままとなります。
  • プロジェクトレベルの役割がチームレベルの役割と異なる場合に、リストリクション プロジェクトからユーザーを削除し、その後しばらくしてユーザーをプロジェクトに戻した場合、デフォルトの振る舞いによりそのチームレベルの役割を継承します。必要であれば、プロジェクトレベルの役割を再度チームレベルの役割と異なるものに変更する必要があります。

3 - ユーザーとチームの管理を自動化する

SCIM API

SCIM API を使用して、ユーザーやその所属するチームを効率的かつ再現可能な方法で管理します。また、SCIM API を使用してカスタムロールを管理したり、 W&B 組織内のユーザーにロールを割り当てたりすることもできます。ロールエンドポイントは公式の SCIM スキーマの一部ではありません。 W&B はカスタムロールの自動管理をサポートするためにロールエンドポイントを追加しています。

SCIM API は特に以下の場合に役立ちます:

  • 大規模なユーザーのプロビジョニングおよびプロビジョニング解除の管理
  • SCIMサポートのアイデンティティプロバイダーを使用してユーザーを管理

SCIM API には大きく分けて 3 つのカテゴリがあります - UserGroup 、および Roles

User SCIM API

User SCIM API を使用すると、ユーザーの作成、無効化、詳細の取得、または W&B 組織内の全ユーザーの一覧を表示できます。この API は、組織内のユーザーに事前定義されたロールまたはカスタムロールを割り当てることもサポートしています。

Group SCIM API

Group SCIM API は、組織内での W&B チームの作成や削除を含めた管理を行うことができます。 PATCH Group を使用して、既存のチームにユーザーを追加または削除します。

Custom role API

Custom role SCIM API は、組織内でのカスタムロールの作成、一覧表示、更新を含めた管理を行うことができます。

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 組織でのカスタムロールの自動管理をサポートしています。

認証

組織またはインスタンスの管理者は、自分の API キーを使用した基本認証を利用して SCIM API にアクセスできます。HTTP リクエストの Authorization ヘッダーを文字列 Basic の後にスペースを置き、その後のベース64エンコードされた文字列を username:API-KEY 形式に設定します。つまり、ユーザー名と API キーを : 文字で区切った後、その結果をベース64エンコードします。例えば、demo:p@55w0rd として認証するには、ヘッダーは Authorization: Basic ZGVtbzpwQDU1dzByZA== であるべきです。

ユーザーリソース

SCIM ユーザーリソースは W&B のユーザーにマップされます。

ユーザーの取得

  • エンドポイント: <host-url>/scim/Users/{id}
  • メソッド: GET
  • 説明: ユーザーの一意の ID を提供することにより、SaaS Cloud 組織または Dedicated Cloud または Self-managed インスタンス内の特定のユーザーの情報を取得します。
  • リクエスト例:
GET /scim/Users/abc
  • レスポンス例:
(Status 200)
{
    "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
  • メソッド: GET
  • 説明: SaaS Cloud 組織または Dedicated Cloud または Self-managed インスタンス内のすべてのユーザーのリストを取得します。
  • リクエスト例:
GET /scim/Users
  • レスポンス例:
(Status 200)
{
    "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
  • リクエスト例:
POST /scim/Users
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "emails": [
    {
      "primary": true,
      "value": "admin-user2@test.com"
    }
  ],
  "userName": "dev-user2"
}
  • レスポンス例:
(Status 201)
{
    "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"
}

ユーザーの削除

  • エンドポイント: <host-url>/scim/Users/{id}
  • メソッド: DELETE
  • 説明: ユーザーの一意の ID を提供することにより、SaaS Cloud 組織または Dedicated Cloud または Self-managed インスタンスから完全にユーザーを削除します。必要に応じて Create user API を使用して組織またはインスタンスに再度ユーザーを追加してください。
  • リクエスト例:
DELETE /scim/Users/abc
  • レスポンス例:
(Status 204)

ユーザーの無効化

  • エンドポイント: <host-url>/scim/Users/{id}
  • メソッド: PATCH
  • 説明: ユーザーの一意の ID を提供することにより、Dedicated Cloud または Self-managed インスタンス内で一時的にユーザーを無効化します。必要に応じて Reactivate user API を使用してユーザーを再有効化します。
  • サポートされているフィールド:
フィールド 必要
op 文字列型 操作のタイプ。許可される唯一の値は replace です。
value オブジェクト型 オブジェクト {"active": false} を示し、ユーザーが無効化されるべきことを示します。
  • リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": false}
        }
    ]
}
  • レスポンス例: この操作はユーザーオブジェクトを返します。
(Status 200)
{
    "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} を示し、ユーザーが再有効化されるべきことを示します。
  • リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": true}
        }
    ]
}
  • レスポンス例: この操作はユーザーオブジェクトを返します。
(Status 200)
{
    "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
  • 説明: 組織レベルのロールをユーザーに割り当てます。このロールは、ここで説明されているように adminviewer または member のいずれかになります (こちらを参照)。 SaaS Cloud では、ユーザー設定で SCIM API の正しい組織を設定することを確認してください。
  • サポートされているフィールド:
フィールド 必要
op 文字列型 操作のタイプ。許可される唯一の値は replace です。
path 文字列型 ロール割り当て操作が影響を及ぼすスコープ。許可される唯一の値は organizationRole です。
value 文字列型 ユーザーに割り当てる予定の定義済みの組織レベルのロール。それは adminviewer または member のいずれかです。このフィールドは定義済みロールに対して大文字小文字を区別しません。
  • リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "organizationRole",
            "value": "admin" // ユーザーの組織スコープのロールを admin に設定
        }
    ]
}
  • レスポンス例: この操作はユーザーオブジェクトを返します。
(Status 200)
{
    "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
  • 説明: チームレベルのロールをユーザーに割り当てます。このロールは、ここで説明されているように adminviewermember またはカスタムロールのいずれかになります (こちらを参照)。 SaaS Cloud では、ユーザー設定で SCIM API の正しい組織を設定することを確認してください。
  • サポートされているフィールド:
フィールド 必要
op 文字列型 操作のタイプ。許可される唯一の値は replace です。
path 文字列型 ロール割り当て操作が影響を及ぼすスコープ。許可される唯一の値は teamRoles です。
value オブジェクト配列型 1つのオブジェクトを持つ配列で、そのオブジェクトは teamNameroleName 属性を持ちます。teamName はユーザーがそのロールを持つチームの名前であり、roleNameadminviewermember またはカスタムロールのいずれかです。このフィールドは定義済みロールに対して大文字小文字を区別しませんが、カスタムロールに対しては区別します。
  • リクエスト例:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "teamRoles",
            "value": [
                {
                    "roleName": "admin", // 定義済みロールのロール名は大文字小文字を区別しませんが、カスタムロールでは区別します
                    "teamName": "team1" // チームteam1でのユーザーのロールをadminに設定
                }
            ]
        }
    ]
}
  • レスポンス例: この操作はユーザーオブジェクトを返します。
(Status 200)
{
    "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 を提供してチーム情報を取得します。
  • リクエスト例:
GET /scim/Groups/ghi
  • レスポンス例:
(Status 200)
{
    "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
  • 説明: チームのリストを取得します。
  • リクエスト例:
GET /scim/Groups
  • レスポンス例:
(Status 200)
{
    "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 を設定します。

POST /scim/Groups
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "wandb-support",
    "members": [
        {
            "value": "def"
        }
    ]
}
  • レスポンス例:
(Status 201)
{
    "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-devsdev-user2 を追加する

PATCH /scim/Groups/ghi
{
	"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
	"Operations": [
		{
			"op": "add",
			"path": "members",
			"value": [
	      {
					"value": "def",
				}
	    ]
		}
	]
}
  • レスポンス例:
(Status 200)
{
    "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 を提供し、カスタムロールの情報を取得します。
  • リクエスト例:
GET /scim/Roles/abc
  • レスポンス例:
(Status 200)
{
    "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 組織のすべてのカスタムロールの情報を取得します
  • リクエスト例:
GET /scim/Roles
  • レスポンス例:
(Status 200)
{
   "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 に対する削除操作の許可オブジェクトは namerun:delete として持ちます。
inheritedFrom 文字列型 カスタムロールが継承する定義済みロール。それは member または viewer のいずれかになります。
  • リクエスト例:
POST /scim/Roles
{
    "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"
}
  • レスポンス例:
(Status 201)
{
    "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 組織内のカスタムロールを削除します。慎重に使用してください。 カスタムロールから継承される定義済みロールは、操作前にカスタムロールに割り当てられていたすべてのユーザーに再び割り当てられます。
  • リクエスト例:
DELETE /scim/Roles/abc
  • レスポンス例:
(Status 204)

カスタムロールの権限の更新

  • エンドポイント: <host-url>/scim/Roles/{id}
  • メソッド: PATCH
  • 説明: W&B 組織内のカスタムロールにカスタム権限を追加または削除します。
  • サポートされているフィールド:
フィールド 必要
operations オブジェクト配列型 操作オブジェクトの配列
op 文字列型 操作オブジェクト内の操作のタイプ。それは add または remove のいずれかになります。
path 文字列型 操作オブジェクト内の静的フィールド。許可される唯一の値は permissions です。
value オブジェクト配列型 各オブジェクトが name 文字列フィールドを含む許可オブジェクトの配列で、そのフィールドは w&bobject:operation の形式を持ちます。例えば、W&B Run に対する削除操作の許可オブジェクトは namerun:delete として持ちます。
  • リクエスト例:
PATCH /scim/Roles/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add", // 操作のタイプを示し、他の可能な値は `remove`
            "path": "permissions",
            "value": [
                {
                    "name": "project:delete"
                }
            ]
        }
    ]
}
  • レスポンス例:
(Status 200)
{
    "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 のいずれかになります。
  • リクエスト例:
PUT /scim/Roles/abc
{
    "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"
}
  • レスポンス例:
(Status 200)
{
    "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": [
        ""
    ]
}

5 - 高度な IAM 設定

基本的な環境変数に加えて、環境変数を使用して、専用クラウドまたは自己管理インスタンスの IAM オプションを設定できます。

お使いのインスタンスにおける IAM のニーズに応じて、以下の環境変数のいずれかを選んでください。

Environment variable 説明
DISABLE_SSO_PROVISIONING W&B インスタンスでのユーザー自動プロビジョニングを無効にするには、これを true に設定します。
SESSION_LENGTH デフォルトのユーザーセッション有効期限を変更したい場合は、この変数を希望する時間数に設定します。例えば、SESSION_LENGTH を 24 に設定すると、セッション有効期限が 24 時間に設定されます。デフォルト値は 720 時間です。
GORILLA_ENABLE_SSO_GROUP_CLAIMS OIDC ベースの SSO を使用している場合、この変数を true に設定すると、OIDC グループに基づいて W&B チームメンバーシップが自動化されます。ユーザー OIDC トークンに groups クレームを追加してください。これは、ユーザーが所属するべき W&B チームの名前をそれぞれのエントリーとして含む文字列配列であるべきです。配列には、ユーザーが所属するすべてのチームを含める必要があります。
GORILLA_LDAP_GROUP_SYNC LDAP ベースの SSO を使用している場合、これを true に設定すると、LDAP グループに基づいて W&B チームメンバーシップが自動化されます。
GORILLA_OIDC_CUSTOM_SCOPES OIDC ベースの SSO を使用している場合、W&B インスタンスがアイデンティティプロバイダーから要求する追加のスコープを指定できます。W&B は、これらのカスタムスコープによって SSO 機能をいかなる形でも変更しません。
GORILLA_USE_IDENTIFIER_CLAIMS OIDC ベースの SSO を使用している場合、この変数を true に設定すると、特定の OIDC クレームを使用してユーザーのユーザー名とフルネームを強制します。設定する場合は、preferred_usernamename の OIDC クレームで強制されるユーザー名とフルネームを設定してください。ユーザー名には、英数字とアンダースコア、ハイフンの特殊文字のみを含めることができます。
GORILLA_DISABLE_PERSONAL_ENTITY W&B インスタンスでの個人用ユーザープロジェクトを無効にするには、これを true に設定します。設定すると、ユーザーは個人用 Entities 内で新しい個人用プロジェクトを作成できなくなり、既存の個人用プロジェクトへの書き込みも無効になります。
GORILLA_DISABLE_ADMIN_TEAM_ACCESS これを true に設定すると、組織またはインスタンスの管理者が自分で W&B チームに参加したり、自分を追加したりすることを制限します。これにより、Data & AI の関係者のみがチーム内のプロジェクトにアクセスできるようになります。