SCIM プロビジョニング
Tuist は SCIM 2.0 プロビジョニングに対応しており、ID プロバイダーが組織メンバーの作成、更新、プロビジョニング解除を自動的に行えます。
SCIM は、組織設定の 認証 タブから構成します。SCIM トークンは SCIM アクセスにスコープされた組織所有のアカウント トークンであり、生成時に一度だけ表示されます。
SCIM はメンバーシップとライフサイクルを管理します。シングル サインオン の代わりにはなりません。プロビジョニングされたユーザーが ID プロバイダー経由でもサインインできるようにする場合は、SSO を別途構成してください。
プロビジョニングされたユーザーはすでに組織のメンバーです。同じメールアドレスでサインインすると、そのメンバーシップによってプロバイダーの ID をリンクするための信頼関係が確立されます。検証済みログイン メール ドメイン および 登録ポリシー は、まだプロビジョニングされていない、または組織に追加されていないユーザーを制御します。
Okta#
Okta では Tuist 用に 2 つの別々のアプリケーションを使用します。
- Tuist へのサインイン用の OIDC Web アプリケーション。
- Tuist へのユーザーとグループのプロビジョニング用の SCIM 2.0 Test App (Header Auth) アプリケーション。
ユーザーが Okta でサインインできるようにする場合は、まず Okta SSO を構成し、その後、以下の手順で SCIM プロビジョニングを構成してください。
手順 1: Tuist SCIM トークンを生成する#
- Tuist で、組織の 認証 設定タブに移動します。
- SCIM プロビジョニング セクションで、SCIM エンドポイント URL をコピーします。
/scim/v2で終わっているはずです。 - トークンを生成 をクリックします。
- トークンに名前を付けます(例:
Okta)。 - 生成されたトークンをコピーします。Tuist ではトークンは一度だけ表示されます。
手順 2: Okta SCIM アプリを追加する#
- Okta 管理ダッシュボードで、Applications > Applications > Browse App Catalog に移動します。
- SCIM 2.0 Test App (Header Auth) を検索して追加します。
- 認識しやすい名前(例:
Tuist SCIM)を付けます。 - SCIM テスト アプリのサインオン設定を完了します。Tuist はこのアプリをサインインには使用しません。サインインは SSO ガイドの OIDC アプリケーションによって処理されます。
手順 3: API 統合を構成する#
- SCIM アプリの Provisioning タブを開きます。
- Settings > Integration の下で、Configure API Integration または Edit をクリックします。
- Enable API integration をチェックします。
- Tuist の SCIM エンドポイント URL を Okta の Base URL フィールドに貼り付けます。
- Tuist SCIM トークンを
Bearerプレフィックス付きで API Token に貼り付けます。例:Bearer tuist_scim_...。Okta はこのフィールドをAuthorizationヘッダーとして送信し、Tuist は bearer トークンを期待します。 - Okta が Tuist の SCIM グループを読み取れるようにする場合は、Import Groups を有効にします。
- Test API Credentials をクリックします。Okta は統合が正常に検証されたことを報告するはずです。
- Save をクリックします。
手順 4: プロビジョニング アクションを有効にする#
- SCIM アプリの Provisioning タブで、Settings > To App を開きます。
- Edit をクリックします。
- 以下を有効にします。
- Create Users
- Update User Attributes
- Deactivate Users
- Save をクリックします。
手順 5: ユーザーまたはグループを割り当てる#
- SCIM アプリの Assignments タブを開きます。
- Tuist にプロビジョニングされるユーザーまたはグループを割り当てます。
- SSO でサインインできるようにする場合も、同じユーザーまたはグループを Okta OIDC アプリケーションに割り当てます。
- Tuist の Members タブを確認し、割り当てられたユーザーが組織に表示されていることを検証します。
プロビジョニング解除をテストするには、Okta でユーザーの割り当てを解除するか無効にし、Tuist 組織の Members タブからそのユーザーが消えていることを確認します。
ロールの割り当て#
Tuist には ロール が 3 つあります: admin、user、および viewer。Tuist はロールごとに 1 つの SCIM グループを公開します: Tuist Admins、Tuist Users、および Tuist Viewers。Group Push を使用して Okta グループをこれらにマップします:
- 割り当てる各ロールに対して Okta グループを選択または作成し、SCIM アプリの Assignments タブでそれらのグループを割り当てます。
- API 統合で Import Groups が有効になっていることを確認し、SCIM アプリの Import タブを開いて Import Now をクリックし、Okta が Tuist のグループを認識できるようにします。
- SCIM アプリの Push Groups タブを開き、Push Groups > Find groups by name をクリックします。
- Okta グループを選択し、プッシュ アクションとして Link Group を選択して、一致する Tuist グループを選びます。Tuist は SCIM 経由でのグループ作成をサポートしていないため、新しいグループを作成するのではなく既存のグループにリンクします。
- Save をクリックし、残りのロールについても繰り返します。
リンクされたグループにユーザーを追加すると、そのロールが付与されます。グループからユーザーを削除すると、組織がシングル サインオン メンバーを登録するロールに戻ります。これは、管理者が Settings > Authentication で変更しない限り user です。リンクされたグループに属していないユーザーもこのロールになります。グループからユーザーを削除しても組織からは削除されません。それを行うには、Okta で割り当てを解除するか無効にします。
Microsoft Entra ID#
Entra ID は非ギャラリーのエンタープライズ アプリケーションを通じて Tuist をプロビジョニングします。ユーザーが Entra ID でもサインインできるようにする場合は、まず Microsoft Entra ID SSO を構成します。
シングル サインオン用に登録するアプリケーションと、プロビジョニングに使用するエンタープライズ アプリケーションは同じものにできます。プロビジョニングはエンタープライズ アプリケーション エントリで構成されます。
手順 1: Tuist SCIM トークンを生成する#
- Tuist で、組織の Authentication 設定タブに移動します。
- SCIM provisioning セクションで、SCIM エンドポイント URL をコピーします。これは
/scim/v2で終わるはずです。 - トークンを生成 をクリックします。
- トークンに名前を付けます(例:
Entra ID)。 - 生成されたトークンをコピーします。Tuist ではトークンは一度だけ表示されます。
手順 2: プロビジョニングを構成する#
- Microsoft Entra 管理センターで、Identity > Applications > Enterprise applications に移動し、Tuist アプリケーションを開きます。
- Provisioning を開き、Provisioning Mode を Automatic に設定します。
- Tenant URL を Tuist SCIM エンドポイント URL に設定します。
- Secret Token を Tuist SCIM トークンに設定します。
Bearerプレフィックスなしでトークン単独で入力してください。Entra ID がスキームを自動的に追加します。 - Test Connection をクリックします。Entra ID は、提供された資格情報が承認されていることを報告するはずです。
- 構成を保存します。
手順 3: 一致属性を設定する#
- Mappings の下で、Provision Microsoft Entra ID Users を開きます。
userPrincipalNameまたはmailが SCIMuserName属性にマップされており、この属性が Matching precedence 1 に使用されていることを確認します。- 存在する場合は、一致属性から
externalIdを削除します。
Tuist は userName によってプロビジョニングされたユーザーを照合します。Entra ID が externalId として送信するディレクトリ オブジェクト識別子を保存しないため、その属性によるフィルターは既存のメンバーを見つけられず、プロビジョニング サイクルが予測不能な動作をする可能性があります。
手順 4: グループ プロビジョニングを無効にする#
Mappings の下で、Provision Microsoft Entra ID Groups を無効に設定します。
Tuist の SCIM グループは作成可能なディレクトリ グループではなく、組織ロールごとに固定されたグループであるため、ディレクトリ グループのプロビジョニングを試みると失敗します。代わりに、以下で説明するようにロールを割り当てます。
手順 5: ユーザーを割り当ててプロビジョニングを開始する#
- アプリケーションの Users and groups タブを開き、Tuist にプロビジョニングされるユーザーまたはグループを割り当てます。
- Provisioning に戻り、開始します。
- Tuist の Members タブを確認し、割り当てられたユーザーが組織に表示されていることを検証します。
Entra ID は独自のスケジュールでプロビジョニングを実行します。通常は 40 分ごとであるため、メンバーは即時には表示されません。単一のユーザーを直ちにテストするには、Provision on demand を使用してください。
プロビジョニング解除をテストするには、Entra ID でユーザーの割り当てを解除するか無効にし、Tuist 組織の Members タブからそのユーザーが消えていることを確認します。
後でプロビジョニングのスコープを変更した場合(例: Sync all users and groups から Sync only assigned users and groups へ)、その後で Restart provisioning をクリックしてください。Entra ID は再起動後にのみ、スコープ外になったユーザーのプロビジョニング解除を含めて新しいスコープを適用します。
ロールの割り当て#
Tuist には roles が 3 つあります: admin、user、および viewer。Entra ID からこれらを設定するには:
- App registrations で Tuist アプリケーションを開き、割り当てたい Tuist ロールごとにアプリ ロールを追加します。Allowed member types を Users/Groups に、Value を
admin、user、またはviewerに設定します。 - エンタープライズ アプリケーションの Users and groups タブで、各ユーザーまたはグループにそれらのアプリ ロールのいずれかを割り当てます。ユーザーは複数のアプリ ロールを持つことができます。Tuist は最も特権の高いロールを適用します。
adminはuserより優先され、userはviewerより優先されるため、異なるロールにマップされたグループに所属するユーザーには、それらのうち最も高いロールが適用されます。 - Provisioning > Mappings の下で、Advanced Options ドロップダウンを開き、Edit target User attributes を選択します。
rolesという名前の属性を追加し、Type をStringに設定して、Multi-Value をチェックします。 - Provisioning > Mappings > Provision Microsoft Entra ID Users の下で、Add New Mapping をクリックします。Mapping type を Expression に、Expression を
AssertiveAppRoleAssignmentsComplex([appRoleAssignments])に、Target attribute を追加したroles属性に設定します。 - プロビジョニングのスコープを Sync only assigned users and groups に設定したままにしてください。
AssertiveAppRoleAssignmentsComplexは Sync all users and groups と互換性がありません。
AssertiveAppRoleAssignmentsComplex はユーザーが持つすべてのアプリ ロールを送信し、削除も送信するため、Entra ID でロールを取り除くと、ユーザーは依然として保持している最も特権の高いロールにダウングレードされます。SingleAppRoleAssignment([appRoleAssignments]) を roles[primary eq "True"].value にマップする方法も機能しますが、これは常に 1 つのロールのみを送信し、ユーザーが複数のロールを持っている場合に Entra ID がどれを選ぶかの保証はありません。
Entra ID でユーザーのアプリ ロールを変更すると、次のプロビジョニング サイクルで Tuist のロールが更新されます。アプリ ロールなしでプロビジョニングされたユーザー、または admin、user、viewer 以外の値を持つユーザーは、組織がシングル サインオン メンバーを登録する際のロールを取得します。管理者が Settings > Authentication で変更していない限り、これは user です。
ライフサイクルの動作#
ID プロバイダーがユーザーをプロビジョニング アプリケーションに割り当てると、Tuist はそのメールアドレスが Tuist に既知でない場合にユーザーを作成し、組織に追加します。メールアドレスがすでに組織外の既存の Tuist ユーザーに属している場合、Tuist はリクエストを拒否し、IdP がその組織でまだ管理していないユーザーを claiming することを防ぎます。
ID プロバイダーがユーザーの割り当てを解除するか無効にすると、Tuist はユーザー レコードと所有する作業を保持しながら、組織ロールを削除します。同じ Tuist ユーザーが他の組織に所属できる可能性があるため、プロビジョニング解除によってユーザーがグローバルに無効になることはありません。
Tuist は 3 つの合成 SCIM グループを公開しています: Tuist Admins、Tuist Users、および Tuist Viewers。グループにメンバーを追加すると、その組織ロールが設定されます。現在のロールに一致するグループからメンバーを削除すると、登録時のロールに戻り、メンバーシップ自体はユーザーの割り当て解除または無効化時にのみ終了します。ID プロバイダーは、ユーザーの SCIM roles 属性を通じてロールを設定することもでき、値は admin、user、または viewer です。複数の値を送信する ID プロバイダーの場合、最も特権の高い値が適用されます。admin は user より優先され、user は viewer より優先されます。
サポートされている SCIM 機能#
Tuist は、ID プロバイダーがライフサイクル管理に必要な SCIM 2.0 エンドポイントをサポートしています:
POST、GET、PUT、PATCH、およびDELETE(/Users用)。GETおよびPATCH(/Groups用)。/ServiceProviderConfig、/ResourceTypes、および/Schemas用の SCIM ディスカバリー エンドポイント。