Databricksにおけるアイデンティティプロバイダーとのユーザー、グループの同期

[Sync users and groups from your identity provider \| Databricks on AWS](https://docs.databricks.com/administration-guide/users-groups/scim/index.html) [2022/11/18時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

:::note
**プレビュー**
本機能は[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。
:::

本書では、[SCIM](http://www.simplecloud.info/)やクロスアカウントアイデンティティ管理システムやユーザープロビジョニングを自動化するオープン標準を用いて、ユーザーとグループをDatabricksにプロビジョンするために、どのようにアイデンティティプロバイダー(IdP)とDatabricksを設定するのかを説明します。

# DatabricksにおけるSCIMプロビジョニングに関して

SCIMを用いることで、アイデンティティプロバイダー(IdP)がDatabricksにユーザーを作成できるようになり、適切なレベルのアクセス権を付与できるようになり、彼らが組織を去ったり、Databricksにアクセスする必要がなくなった際にはアクセス権を削除(デプロビジョン)できるようになります。

プロビジョニングを管理するために、IdPのSCIMプロビジョニングコネクターを用いるか、[SCIM API](https://docs.databricks.com/dev-tools/api/latest/scim/index.html)を呼び出すことができます。また、IdPなしにDatabricksで直接アイデンティティを管理するためにこれらのAPIを活用することができます。

## アカウントレベルとワークスペースレベルのSCIMプロビジョニング

アカウントレベルのSCIMプロビジョニングを用いることで、お使いのアイデンティティプロバイダーから1つのSCIMプロビジョニングコネクターを設定するか、ワークスペースレベルのSCIMプロビジョニングを用いることで、ワークスペースごとに別のSCIMプロビジョニングコネクターを設定することができます。

- **アカウントレベルSCIMプロビジョニング:** アカウントのすべてのユーザーの作成、更新、削除ではアカウントレベルのSCIMプロビジョニングを使用することをお勧めします。Databricksにおけるワークスペースへのユーザー、グループの割り当てを管理することになります。ワークスペースのユーザーの割り当てを管理するためには、ワークスペースで[アイデンティフェデレーションが有効化](https://qiita.com/taka_yayoi/items/e386507be44aa3abd27e#%E7%AE%A1%E7%90%86%E8%80%85%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%A2%E3%82%A4%E3%83%87%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E3%83%95%E3%82%A7%E3%83%87%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8B%E3%81%AE%E3%81%8B)される必要があります。
![](https://docs.databricks.com/_images/account-level-scim-diagram.png)
- **ワークスペースレベルSCIMプロビジョニング:** 1つのワークスペースでも[アイデンティフェデレーション](https://qiita.com/taka_yayoi/items/e386507be44aa3abd27e#%E7%AE%A1%E7%90%86%E8%80%85%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%A2%E3%82%A4%E3%83%87%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E3%83%95%E3%82%A7%E3%83%87%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8B%E3%81%AE%E3%81%8B)が有効化されていない、あるいは、あるワークスペースではアイデンティティフェデレーションが有効化され、ほかのワークスペースでは有効化されていない場合といった混成ワークスペースを管理している場合、アカウントレベルとワークスペースレベルのSCIMプロビジョニングを並行して管理しなくてはなりません。混成シナリオにおいては、アイデンティティフェデレーションが有効化されたワークスペースで、ワークスペースレベルのSCIMプロビジョニングは不要となります。

    アイデンティティフェデレーションが有効化されているワークスペースですでにワークスペースレベルのSCIMプロビジョニングがセットアップされている場合は、アカウントレベルSCIMプロビジョニングをセットアップして、ワークスペースレベルのSCIMプロビジョナーをオフにしなくてはなりません。[ワークスペースレベルSCIMプロビジョニングをアカウントレベルに移行](#ワークスペースレベルscimプロビジョニングをアカウントレベルに移行)をご覧ください。

# 要件

SCIMを用いてユーザーとグループをDatabricksにプロビジョンするには:

- Databricksアカウントは[プレミアムプラン以上](https://databricks.com/jp/product/aws-pricing)である必要があります。
- SCIM(SCIM REST APIを含む)を用いてDatabricksアカウントにユーザーをプロビジョンするには、Databricksアカウント管理者である必要があります。
- SCIM(SCIM REST APIを含む)を用いてDatabricksワークスペースにユーザーをプロビジョンするには、Databricksワークスペース管理者である必要があります。

管理者権限の詳細については、[Databricksにおけるユーザー、サービスプリンシパル、グループの管理](https://qiita.com/taka_yayoi/items/e386507be44aa3abd27e)をご覧ください。

アカウントには合わせて最大10,000ユーザーとサービスプリンシパルを持つことができ、最大5000グループを持つことができます。それぞれのワークスペースでは、最大10,000ユーザーとサービスプリンシパル、最大5000グループを持つことができます。

:::note
**注意**
SCIMプロビジョニングを使用する際、Databricks管理コンソール、アカウントコンソール、[SCIM \(Groups\) API](https://docs.databricks.com/dev-tools/api/latest/scim/scim-groups.html)を用いて行った変更が、お使いのアイデンティプロバイダーに格納されているユーザー、グループ属性で上書きされることがあります。

例えば、お使いのアイデンティティプロバイダーであるユーザーにクラスター作成資格情報が許可されており、この資格情報をDatabricks[管理コンソール](https://docs.databricks.com/administration-guide/admin-console.html)で削除した場合、IdPでこの資格情報をプロビジョンするように設定されていると次にIdPがDatabricksに同期を行う際にこの資格情報は再作成されます。同様の挙動はグループにも適用されます。
:::

# Databricksアカウントへのアイデンティティのプロビジョン

SCIMプロビジョニングコネクター、あるいはSCIM APIを用いて、アイデンティプロバイダーのユーザーとグループをDatabricksにプロビジョンするためにSCIMを用いることができます。

## IdPプロビジョニングコネクターを用いたDatabricksアカウントへのユーザー、グループの追加

SCIMプロビジョニングコネクターを用いて、DatabricksアカウントにIdPからユーザーとグループを同期することができます。

:::note warn
**重要！**
ワークスペースに直接アイデンティティを同期するSCIMコネクターを設定しており、**ワークスペースでアイデンティティフェデレーションが有効化されている場合**、アカウントレベルのSCIMコネクターを有効化した際には、これらのSCIMコネクターを無効化すべきです。アイデンティティフェデレーションが有効化されていないワークスペースを使用している場合には、これらのワークスペースに設定したすべてのSCIMコネクターを使い続け、アカウントレベルのSCIMコネクターと並行運用するべきです。
:::

アカウントにユーザーとグループをプロビジョンするようにSCIMコネクターを設定するには:

1. アカウント管理者としてDatabricks[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/user-settings-icon.png)**Settings**をクリックします。
1. **User Provisioning**をクリックします。
1. **Enable user provisioning**をクリックします。

    SCIMトークンとAccount SCIM URLをコピーしておきます。お使いのIdPを設定するためにこれらを使用します。

1. ユーザーをプロビジョンするためにSCIMコネクターを設定できるユーザーとしてお使いのIdPにログインします。
1. お使いのIdPのSCIMコネクターに以下の値を入力します:
    - SAMLプロビジョニングURLに、DatabricksからコピーしたSCIM URLを入力します。
    - プロビジョニングAPIトークンに、DatabricksからコピーしたSCIMトークンを入力します。

また、お使いのIdP固有の手順に関しては以下を実行します:

- [Configure SCIM provisioning using Microsoft Azure Active Directory](https://docs.databricks.com/administration-guide/users-groups/scim/aad.html)
- [Configure SCIM provisioning for Okta](https://docs.databricks.com/administration-guide/users-groups/scim/okta.html)
- [Configure SCIM provisioning for OneLogin](https://docs.databricks.com/administration-guide/users-groups/scim/onelogin.html)

## SCIM APIを用いたDatabricksアカウントへのユーザー、サービスプリンシパル、グループの追加

アカウント管理者は、アカウント向けSCIM APIを用いてDatabricksアカウントにユーザー、サービスプリンシパル、グループを追加することができます。アカウント管理者は、accounts.cloud.databricks.com (`{account_domain}/api/2.0/accounts/{account_id}/scim/v2/`)のAPIをコールし、SCIMトークンを使用します。

SCIMトークンを取得するには、以下を実行します:

1. アカウント管理者としてDatabricks[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/user-settings-icon.png)**Settings**をクリックします。
1. **User Provisioning**をクリックします。
    プロビジョニングが有効化されていない場合、**Enable user provisioning**をクリックしてトークンをコピーします。

    プロビジョニングがすでに有効化されていれば、**Regenerate token**をクリックし、トークンをコピーします。

ワークスペース管理者は同じAPIを用いてユーザーとサービスプリンシパルを追加することができます。ワークスペース管理者はアカウントにグループを追加することはできませんが、それらを読み込む(Get/List)ことはできます。ワークスペース管理者はワークスペースのドメインのAPI `{workspace-domain}/api/2.0/account/scim/v2/`をコールし、[パーソナルアクセストークン](https://docs.databricks.com/dev-tools/api/latest/authentication.html)を使用します。

[SCIM API 2\.0 \(Accounts\)](https://docs.databricks.com/dev-tools/api/latest/scim/account-scim.html)をご覧ください。

## アカウントレベルSCIMトークンのローテーション

アカウントレベルのSCIMトークンが漏洩した、あるいは定期的に認証用トークンをローテーションするビジネス要件がある場合には、SCIMトークンをローテーションすることができます。

1. アカウント管理者としてDatabricks[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/user-settings-icon.png)**Settings**をクリックします。
1. **User Provisioning**をクリックします。
1. **Regenerate token**をクリックします。以前のトークンは24時間動作し続けます。
1. 24時間以内に、新規のSCIMトークンを使用するにようにお使いのSCIMアプリケーションを更新します。

# Databricksワークスペースへのアイデンティティのプロビジョン

ユーザーやグループをプロビジョンするためにIdPコネクターを使いたいと考えており、アイデンティティフェデレーションが有効化されていないワークスペースをお持ちの場合、ワークスペースレベルでSCIMプロビジョニングを設定しなくてはなりません。

## IdPプロビジョニングコネクターを用いたワークスペースへのユーザー、グループの追加

IdP固有のドキュメントの手順に従ってください:

- [Configure SCIM provisioning using Microsoft Azure Active Directory](https://docs.databricks.com/administration-guide/users-groups/scim/aad.html)
- [Configure SCIM provisioning for Okta](https://docs.databricks.com/administration-guide/users-groups/scim/okta.html)
- [Configure SCIM provisioning for OneLogin](https://docs.databricks.com/administration-guide/users-groups/scim/onelogin.html)

## SCIM APIを用いたワークスペースへのユーザー、サービスプリンシパル、グループの追加

ワークスペース管理者はワークスペース用SCIM APIを用いて、Databricksアカウントにユーザー、グループ、サービスプリンシパルを追加することができます。[SCIM API 2\.0](https://docs.databricks.com/dev-tools/api/latest/scim/index.html)をご覧ください。

# ワークスペースレベルSCIMプロビジョニングをアカウントレベルに移行

アイデンティティフェデレーションを有効化したワークスペースですでにワークスペースレベルのSCIMプロビジョニングがセットアップされている場合、アカウントレベルのSCIMプロビジョニングをセットアップし、ワークスペースレベルのSCIMプロビジョナーをオフにすべきです。

1. ワークスペースレベルのSCIMコネクターを用いて現在Databricksにプロビジョニングしているすべてのユーザーとグループを含むアイデンディティプロバイダーでグループを作成します。

    このグループにはお使いのアカウントの全ユーザーが含まれる必要があります。

1. [Databricksアカウントへのアイデンティティのプロビジョン](#databricksアカウントへのアイデンティティのプロビジョン)の手順に沿って、アカウントにユーザーとグループをプロビジョンする新規のSCIMプロビジョニングコネクターを設定します。

    ステップ1で作成したグループを使用します。

1. 新規SCIMプロビジョニングコネクターによるユーザーとグループのアカウントへのプロビジョンが成功したことを確認します。
1. ワークスペースにユーザーとグループをプロビジョンしていた古いワークスペースレベルSCIMコネクターをシャットダウンします。

    アイデンティティフェデレーションが有効化されているワークスペースにユーザーとグループをプロビジョンしているSCIMコネクターのみをシャットダウンします。アイデンティティフェデレーションが有効化されていないワークスペースに対するプロビジョニングコネクターは稼働状態のままにしておきますが、ワークスペースレベルのコネクターを用いて追加するすべてのアイデンティティもアカウントレベルのコネクターによって追加されていることを確認します。IdPのグループはこの並列プロビジョニングシナリオの管理の助けとなります。

1. ワークスペースローカルのグループをアカウントのグループに移行します。

    アイデンティティデフぇレーションが有効化されているワークスペースで、ワークスペースローカルグループとして知られる既存グループを持っている場合、アカウントレベルのインタフェースを用いてそれらを管理することはできません。これらをアカウントグループに変換することをお勧めします。[Migrate workspace\-local groups to account groups](https://docs.databricks.com/administration-guide/users-groups/groups.html#migrate)をご覧ください。

:::note warn
**重要！**
アカウント管理者がアカウントレベルでユーザーを削除すると、そのユーザーはアイデンティティフェデレーションが有効化されているかどうかに関係なくワークスペースからも削除されます。アカウントレベルのSCIMコネクターからグループを削除すると、当該グループの全ユーザーはアカウントから削除され、*別のグループのメンバーか、アカウントやワークスペースへのアクセスを直接許可されていない限り*アクセスできていたすべてのワークスペースに対するアクセス権を失います。アカウントのすべてのワークスペースに対するアクセス権を剥奪したい場合を除いて、アカウントレベルのユーザーやグループを削除すべきではありません。ユーザー削除による以下の影響に注意してください:

- 当該ユーザーによって生成されたトークンを使用しているアプリケーションやスクリプトはDatabricks APIにアクセスできなくなります。
- 当該ユーザーによって所有されているジョブは失敗します。
- 当該ユーザーによって所有されているクラスターは停止します。
- 当該ユーザーによって作成され`Run as Owner`資格情報で共有されているクエリーやダッシュボードは、共有が失敗しないように新たなオーナーに割り当てる必要があります。
:::

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)