SCIM の動作を紹介する動画をご覧ください (12分)
概要
wandb-scim リポジトリを参照してください。
サポートされている機能
- フィルタリング: API は
/Usersおよび/Groupsエンドポイントのフィルタリングをサポートします - PATCH 操作: リソースの一部更新に PATCH をサポートします
- ETag サポート: 競合検出のため、ETag を使用した条件付き更新をサポートします
- サービスアカウント認証: 組織のサービスアカウントは API にアクセスできます
複数の Enterprise マルチテナント SaaS 組織の管理者である場合は、APIキーを使用して送信した SCIM API リクエストが正しい組織に適用されるよう、SCIM API リクエストの送信先となる組織を設定する必要があります。プロフィール画像をクリックし、User Settings をクリックしてから、Default API organization の設定を確認してください。選択したホスティングオプションによって、このページの例で使用する
<host-url> プレースホルダーの値が決まります。また、例では abc や def などのユーザー ID を使用しています。実際のリクエストとレスポンスでは、ユーザー ID にはハッシュ化された値が使用されます。認証
主な違い
- 使用に適した対象: ユーザーは対話的な単発の管理操作に適しており、サービスアカウントはオートメーションやインテグレーション (CI/CD、プロビジョニングツール) に適しています。
- 認証情報: ユーザーは Basic 認証でユーザー名とAPIキーを送信します。サービスアカウントは Basic 認証でAPIキーのみを送信します (ユーザー名は不要です) 。Bearer 認証では、ヘッダーにAPIキーのみを送信します (ユーザー名は不要です) 。
- Bearer と Basic の違い: Bearer は
Authorization: Bearer <API-KEY>を使用し、キーをそのまま指定します。Basic はAuthorization: Basic <base64(...)>を使用します (ユーザーはusername:API-KEYをエンコードし、サービスアカウントは先頭にコロンを付けてユーザー名を空にした:API-KEYをエンコードします) 。 - スコープと権限: インスタンス管理者または組織管理者ユーザーのAPIキー、または 組織スコープのサービスアカウント のAPIキーを使用してください。team-scoped service accounts のキーでは SCIM API を認証できません。SCIM で使用するサービスアカウントは organization-scoped かつヘッドレスであるため、オートメーションの監査証跡をより明確にできます。
- 認証情報の取得場所: ユーザーは User Settings からAPIキーをコピーします。組織スコープのサービスアカウント のキーは、組織のダッシュボードの Service account タブにあります。
- Multi-tenant Cloud: 複数の Multi-tenant Cloud 組織にアクセスできる場合は、SCIM API 呼び出しが意図した組織にルーティングされるように、Default API organization を設定する必要があります。
Bearer トークン
<API-KEY> の値は、そのプリンシパルの HTTP Basic 認証でパスワードとして使用する文字列と同じです。Bearer リクエストでは、キーを Base64 エンコードしません。
SCIM API の Bearer 認証は、W&B Multi-tenant Cloud、および専用クラウドとセルフマネージド v0.79.0 以降で利用できます。
<YOUR_API_KEY> をプレースホルダーとして使用しています。管理者ユーザーまたは組織スコープのサービスアカウントの実際のキーに置き換えてください。
ユーザーを一覧表示
Users
Authorization ヘッダーは Basic <base64(username:API-KEY)> の形式で指定します。
たとえば、demo:p@55w0rd として認証する場合:
サービスアカウント
Authorization ヘッダーは Basic <base64(:API-KEY)> の形式で作成します (先頭にコロンがあり、ユーザー名は空である点に注意してください) 。サービスアカウントのAPIキーは、組織ダッシュボードの Service account タブで確認できます。詳細は 組織スコープのサービスアカウント を参照してください。
たとえば、APIキー sa-p@55w0rd を使用して認証します。
ユーザー管理
ユーザーを取得
この操作では、サービスアカウントの情報は取得されません。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: GET
パラメーター
例
- ユーザー取得リクエスト
- ユーザー取得レスポンス
Usersを一覧表示する
この操作ではサービスアカウントは取得されません。
Users をフィルター
/Users エンドポイントでは、ユーザー名またはメールアドレスで Users をフィルターできます。
userName eq "value"- ユーザー名でフィルターemails.value eq "value"- メールアドレスでフィルター
例
エンドポイント
- URL:
<host-url>/scim/Users - method: GET
例
- Users一覧リクエスト
- Users一覧レスポンス
ユーザーを作成
エンドポイント
- URL:
<host-url>/scim/Users - method: POST
パラメーター
例
- ユーザー作成リクエスト(専用クラウド/セルフマネージド)
- ユーザー作成リクエスト(Multi-tenant)
レスポンス
- ユーザー作成時のレスポンス(専用クラウド/セルフマネージド)
- ユーザー作成時のレスポンス(Multi-tenant Cloud)
ユーザーを削除
この操作はユーザーにのみ適用され、サービスアカウントには使用できません。サービスアカウントは W&B Team の Settings で削除してください。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: DELETE
パラメーター
例
- ユーザーを削除するリクエスト
- ユーザーを削除するレスポンス
ユーザーを一時的に無効化するには、
PATCH エンドポイントを使用する ユーザーの無効化 API を参照してください。ユーザーのメールアドレスを更新する
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- メールアドレス更新リクエスト
- メールアドレス更新レスポンス
ユーザーの表示名を更新する
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- 表示名の更新リクエスト
- 表示名の更新レスポンス
ユーザーを無効化
- 専用クラウド / セルフマネージド: ユーザーの
activeフィールドをfalseに設定します。無効化したユーザーの組織へのアクセスを復元するには、ユーザーを再有効化 を参照してください。 - Multi-tenant Cloud: 組織からユーザーを削除します。ユーザーのアクセスを復元するには、そのユーザーを組織に再度追加してください。ユーザーを作成 を参照してください。Multi-tenant Cloud では、ユーザーのアカウントは組織では管理されません。
この操作はユーザーにのみ使用でき、サービスアカウントには対応していません。サービスアカウントの無効化はサポートされていません。チームのサービスアカウントは、W&B Team の Settings で管理してください。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- ユーザーの無効化リクエスト (Dedicated/セルフマネージド)
- ユーザーの無効化リクエスト (Multi-tenant)
レスポンス
- ユーザー無効化のレスポンス (Dedicated/セルフマネージド)
- ユーザー無効化のレスポンス (Multi-tenant)
ユーザーを再有効化
- ユーザーの再有効化はユーザーに対してのみ可能で、サービスアカウントには対応していません。サービスアカウントの再有効化はサポートされません。サービスアカウントは W&B Team の設定で管理してください。
-
ユーザーの再有効化は Multi-tenant Cloud ではサポートされません。ユーザーのアクセスを復元するには、そのユーザーを組織に再度追加してください。ユーザーを作成 を参照してください。Multi-tenant Cloud では、ユーザーのアカウントは組織によって管理されません。ユーザーを再有効化しようとすると、HTTP
400エラーが返されます。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- ユーザー再有効化リクエスト
- ユーザー再有効化レスポンス
組織ロールを割り当てる
この操作はユーザーに対してのみ使用でき、サービスアカウントには使用できません。サービスアカウントではカスタムロールはサポートされていません。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
組織スコープの
viewer ロールは非推奨となっており、UI で割り当てることはできなくなりました。SCIM を使用してユーザーに viewer ロールを割り当てる場合:- そのユーザーには、組織内で
memberロールが割り当てられます。 - そのユーザーの
modelsSeatは、fullではなくviewerに設定されます。これにより、Models には閲覧専用で、Registry にはフルアクセスできます。利用可能な Models シートがない場合は、Seat limit reachedエラーが返されます。シートが利用可能になれば、後で更新できます。 - そのユーザーの
weaveRoleは、fullではなくviewerに設定されます。これにより、Weave には閲覧専用でアクセスできます。 - そのユーザーの既存のすべてのチームおよび project ロールは、
viewerに設定されます。 - 組織レベルで表示されるレジストリでは、Registry の
viewerロールが割り当てられます。
member または admin の組織ロールを割り当てても、ユーザーの modelsSeat や weaveRole は変更されません。例
- 組織ロール割り当てリクエスト
- 組織ロール割り当てレスポンス
シートを更新
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- シートの更新リクエスト
- シートの更新レスポンス
Weave ロールを更新する
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- Weave ロール更新リクエスト
- Weave ロール更新レスポンス
チームロールを割り当てる
この操作はユーザーにのみ適用され、サービスアカウントには対応していません。サービスアカウントではカスタムロールはサポートされていません。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- チームロール割り当てリクエスト
- チームロール割り当てレスポンス
Registry に追加
この操作はユーザーにのみ対応しており、サービスアカウントでは使用できません。サービスアカウントではカスタムロールはサポートされません。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- Registry への追加リクエスト
- Registry への追加レスポンス
Registry から削除
- 削除操作は RFC 7644 SCIM プロトコル仕様に従います。特定の Registry からユーザーを削除するには、フィルター構文
"registryRoles[registryName eq \"{registry_name}\"]"を使用します。すべての Registry からユーザーを削除するには、"registryRoles"を使用します。 - この操作はユーザーに対してのみ有効で、サービスアカウントには対応していません。サービスアカウントを Registry から削除するには、W&B Team の Settings で行ってください。
エンドポイント
- URL:
<host-url>/scim/Users/{id} - method: PATCH
パラメーター
例
- Registry から削除するリクエスト
- Registry から削除するレスポンス
- すべての Registry から削除するリクエスト
- すべての Registry から削除するレスポンス
グループリソース
storageBucket を含めます。
サービスアカウント
グループの絞り込み
/Groups エンドポイントでは、特定のチームを検索するためのフィルタリングをサポートしています:
サポートされているフィルター
displayName eq "value"- チームの表示名でフィルター
例
チームを取得
エンドポイント
- URL:
<host-url>/scim/Groups/{id} - method: GET
例
- リクエスト
- レスポンス
チームの一覧
エンドポイント
- URL:
<host-url>/scim/Groups - method: GET
例
- リクエスト
- レスポンス
チーム を作成
- エンドポイント:
<host-url>/scim/Groups - method: POST
- 説明: 新しい チーム リソースを作成します。
- サポートされるフィールド:
チーム の作成時に
storageBucket オブジェクトを含めることで、チーム レベルの Bring your own bucket (BYOB) を設定できます。省略した場合、チーム はデフォルトまたはインスタンスレベルのストレージを使用します。BYOB ガイドを参照して、バケット (ポリシー、CORS、認証情報) をプロビジョニングし、プロバイダーごとのストレージアドレス形式を確認してください。storageBucket オブジェクトには、次のサブフィールドがあります。
- 必須:
name(バケット名) 、provider(COREWEAVE、AWS、AZURE、GCP、MINIOのいずれか) 。値では大文字と小文字が区別されるため、表示されているとおりに大文字を使用してください。 - 任意:
path(バケット内のパス接頭辞) 、kmsKeyId(暗号化用の KMS キー。AWS などで使用) 、awsExternalId(AWS のクロスアカウントアクセス) 、azureTenantId(Azure テナント ID) 、azureClientId(Azure マネージドアイデンティティのクライアント ID) 。
provider の値が無効な場合は、許可される値を示す SCIM エラーとともに 400 Bad Request が返されます。
例
- リクエスト(BYOB なし)
- CoreWeave
- AWS S3
- Azure
- GCP
- レスポンス
チームを更新
- エンドポイント:
<host-url>/scim/Groups/{id} - method: PATCH
- Description: 既存のチームのメンバー一覧を更新します。
- サポートされる操作:
addメンバーの追加、removeメンバーの削除、replaceメンバーの置換
-
remove操作は RFC 7644 SCIM プロトコル仕様に従います。特定のユーザーを削除するには、フィルター構文members[value eq "{user_id}"]を使用します。チームからすべてのユーザーを削除するには、membersを使用します。 ユーザーの識別: メンバー操作での{user_id}には、次のいずれかを使用できます。- W&B ユーザー ID
- メールアドレス (例: “user@example.com”)
- これらの操作はユーザーに対してのみ機能し、サービスアカウントには対応していません。チームのサービスアカウントは、W&B Team の設定で更新してください。
リクエスト内の
{team_id} は実際のチーム ID に、{user_id} は実際のユーザー ID またはメールアドレスに置き換えてください。チームメンバーの置き換え
この操作はユーザーにのみ適用され、サービスアカウントには対応していません。サービスアカウントは W&B Team の Settings で管理してください。
- エンドポイント:
<host-url>/scim/Groups/{id} - method: PUT
- 説明: チームメンバーのリスト全体を置き換えます。
- リクエスト
- レスポンス
acme-devs に dev-user2 を追加する場合:
この操作はユーザーにのみ適用され、サービスアカウントには対応していません。サービスアカウントは W&B Team の Settings で管理してください。
- リクエスト
- レスポンス
acme-devs から dev-user2 を削除する場合:
この操作はユーザーにのみ適用され、サービスアカウントには対応していません。サービスアカウントは W&B Team の Settings で管理してください。
- リクエスト
- レスポンス
acme-devs からすべてのユーザーを削除する場合:
この操作はユーザーにのみ有効で、サービスアカウントには使用できません。サービスアカウントは W&B Team の Settings で管理してください。
- リクエスト
- レスポンス
チームを削除
- チームには追加のデータが関連付けられているため、現在、SCIM API ではチームを削除できません。すべての関連データを含めて削除してよいことを確認するには、アプリからチームを削除してください。
Role resource
/Roles エンドポイントは公式の SCIM スキーマの一部ではありませんが、W&B では組織内のカスタムロールを自動管理できるようにするため、/Roles エンドポイントを追加しています。
カスタムロール情報を取得
Endpoint
- URL:
<host-url>/scim/Roles/{id} - Method: GET
例
- リクエスト
- レスポンス
カスタムロールの一覧
Endpoint
- URL:
<host-url>/scim/Roles - Method: GET
例
- リクエスト
- レスポンス
カスタムロールを作成
- エンドポイント:
<host-url>/scim/Roles - メソッド: POST
- 説明: W&B 組織に新しいカスタムロールを作成します。
- サポートされるフィールド:
例
- リクエスト
- レスポンス
カスタムロールを更新
ロールに権限を追加する
- Endpoint:
<host-url>/scim/Roles/{id} - Method: PATCH
- Description: 既存のカスタムロールに権限を追加します。
- Request
- Response
ロールから権限を削除する
- エンドポイント:
<host-url>/scim/Roles/{id} - method: PATCH
- 説明: 既存のカスタムロールから権限を削除します。
- リクエスト
- レスポンス
カスタムロールを置き換える
- エンドポイント:
<host-url>/scim/Roles/{id} - Method: PUT
- 説明: カスタムロール定義全体を置き換えます。
- リクエスト
- レスポンス
カスタムロールを削除
Endpoint
- URL:
<host-url>/scim/Roles/{id} - Method: DELETE
例
- リクエスト
- レスポンス
高度な機能
ETag サポート
ETag と meta.version フィールドで返されます。
ETagを使用するには:
- 現在のETagを取得: リソースをGETした際に、レスポンスのETagヘッダーを確認します
- 条件付き更新: 更新時に、
If-MatchヘッダーにETagを含めます
例
412 Precondition Failed エラーのレスポンスは、取得後にそのリソースが変更されたことを示します。
エラー処理
デプロイタイプごとの実装の違い
制限事項
- 最大結果数: 1リクエストあたり9999件。
- Single-tenant 環境: 1ユーザーにつきメールアドレスは1つのみサポートされます。
- チーム の削除: SCIM 経由ではサポートされません (W&B の Web インターフェイスを使用してください) 。
- ユーザー の再有効化: Multi-tenant Cloud 環境ではサポートされません。
- シート数の制限: 組織のシート数制限に達すると、処理が失敗する場合があります。