ユーザーとチーム管理の自動化
SCIM API
SCIM API を使用して、ユーザーとその所属チームを効率的かつ繰り返し管理することができます。また、SCIM API を使用してカスタムロールを管理したり、W&B の組織内でユーザーにロールを割り当てたりすることもできます。ロールエンドポイントは公式の SCIM スキーマの一部ではありません。W&B はカスタムロールの自動管理をサポートするためにロールエンドポイントを追加しています。
SCIM API は以下のような場合に特に便利です:
- 大規模なユーザーのプロビジョニングとプロビジョニング解除を管理する
- SCIM サポートのアイデンティティープロバイダーでユーザーを管理する
SCIM API は大きく分けて User、Group、Roles の三つのカテゴリーに分かれています。
ユーザー SCIM API
User SCIM API は、ユーザーの作成、無効化、詳細の取得、または W&B 組織内のすべてのユーザーのリストを取得することができます。この API は、組織内のユーザーにあらかじめ定義されたロールやカスタムロールを割り当てることもサポートしています。
W&B 組織内でユーザーを無効化するには DELETE User
エンドポイントを使用します。無効化されたユーザーはもうサインインできません。しかし、無効化されたユーザーは組織のユーザーリストには引き続き表示されます。
無効化されたユーザーをユーザーリストから完全に削除するには、ユーザーを組織から削除する必要があります。
必要に応じて、無効化されたユーザーを再度有効にすることも可能です。
グループ SCIM API
Group SCIM API は、W&B チームの管理をサポートし、組織内のチームの作成や削除を行うことができます。PATCH Group
を使用して、既存のチームにユーザーを追加したり削除したりすることができます。
W&B には 同じロールを持つユーザーのグループ
という概念はありません。W&B のチームはグループに類似しており、異なるロールを持つ多様なペルソナが関連するプロジェクトに協力して取り組むことができます。チームは異なるユーザーグループで構成することができます。チーム内の各ユーザーには、チーム管理者、メンバー、ビューアー、またはカスタムロールを割り当てることができます。
グループと W&B チームの類似性から、W&B は Group SCIM API のエンドポイントを W&B チームにマップしています。
カスタムロール API
Custom role SCIM API は、カスタムロールの管理をサポートし、組織内でのカスタムロールの作成、リスト表示、または更新を行うことができます。
カスタムロールを削除する際は注意してください。
カスタムロールを W&B 組織内で削除するには DELETE Role
エンドポイントを使用します。カスタムロールが継承する既定のロールが、操作前にカスタムロールが割り当てられているすべてのユーザーに割り当てられます。
カスタムロールの継承ロールを更新するには PUT Role
エンドポイントを使用します。この操作は既存の、つまり非継承のカスタム権限には影響を与えません。
W&B Python SDK API
SCIM API を使用してユーザーとチームの管理を自動化するのと同様に、W&B Python SDK API で利用可能ないくつかのメソッドを使用することもできます。以下のメソッドを覚えておいてください:
メソッド名 | 目的 |
---|---|
create_user(email, admin=False) | 組織にユーザーを追加し、必要に応じてそのユーザーを組織管理者にすることができます。 |
user(userNameOrEmail) | 組織内の既存のユーザーを返します。 |
user.teams() | ユーザーに所属するチームを返します。user(userNameOrEmail) メソッドを使用してユーザーオブジェクトを取得できます。 |
create_team(teamName, adminUserName) | 新しいチームを作成し、必要に応じて組織レベルのユーザーをチーム管理者にすることができます。 |
team(teamName) | 組織内の既存のチームを返します。 |
Team.invite(userNameOrEmail, admin=False) | チームにユーザーを追加します。team(teamName) メソッドを使用してチームオブジェクトを取得できます。 |
Team.create_service_account(description) | チームにサービスアカウントを追加します。team(teamName) メソッドを使用してチームオブジェクトを取得できます。 |
Member.delete() | チームからメンバーを削除します。team オブジェクトの members 属性を使用してチーム内のメンバーオブジェクトのリストを取得できます。そして team(teamName) メソッドを使用してチームオブジェクトを取得できます。 |