Databricksにおけるユーザー管理

[Manage users \| Databricks on AWS](https://docs.databricks.com/administration-guide/users-groups/users.html) [2022/11/1時点]の翻訳です。

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

> [Databricksクイックスタートガイド](https://qiita.com/taka_yayoi/items/125231c126a602693610)のコンテンツです。

本書では、どのようにDatabricksユーザーの追加、更新、削除をを行うのかを説明します。

Databricksのアイデンティティモデルの概要については、[Databricksにおけるアイデンティティとロール](https://qiita.com/taka_yayoi/items/e386507be44aa3abd27e#databricks%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%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%81%A8%E3%83%AD%E3%83%BC%E3%83%AB)をご覧ください。

グループとサービスプリンシパルをどのように管理するのかに関しては、[グループの管理](https://qiita.com/taka_yayoi/items/cf910645f7b7420e58e4)と[サービスプリンシパルの管理](https://docs.databricks.com/administration-guide/users-groups/service-principals.html)をご覧ください。

# ユーザー管理の概要

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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)を使用している場合、ワークスペースにユーザーを割り当て、ワークスペースにおけるデータアクセス権を設定することができます。
- **ワークスペース管理者**は、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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)を使用していない場合、アカウント管理者はアカウントコンソールのようなアカウントレベルのインタフェースを用いて当該ワークスペースにユーザーを割り当てることはできません。ワークスペース管理者がこのタスクを行う必要があります。

    ワークスペース管理者はワークスペースに存在する予約済みかつ削除不可の`admins`グループのメンバーです。

アカウント管理者は以下のインタフェースを用いてすべてのユーザーを管理することができます:

- アカウントコンソール
- (OktaやAzure Active Directoryなど)[アイデンティティプロバイダー(IdP)向けプロビジョニングコネクター](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295)
- [SCIM \(Account\) API](https://docs.databricks.com/dev-tools/api/latest/scim/account-scim.html)
- [Workspace Assignment API](https://api-docs.databricks.com/rest/latest/permission-assignment-account-api.html)

ワークスペース管理者は以下のインタフェースを用いて自分のワークスペースのユーザーを管理することができます:

- ワークスペースの管理コンソール
- [SCIM \(Users\) REST API](https://docs.databricks.com/dev-tools/api/latest/scim/scim-users.html)
- (OktaやAzure Active Directoryなど)[アイデンティティプロバイダー(IdP)向けプロビジョニングコネクター](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295)
- [SCIM \(Account\) API](https://docs.databricks.com/dev-tools/api/latest/scim/account-scim.html) (`{workspace-domain}/api/2.0/account/scim/v2/`を呼び出します)
- [Workspace Assignment API](https://api-docs.databricks.com/rest/latest/permission-assignment-account-api.html)

# Databricksアカウントにユーザーを追加する

アカウント管理者は、アカウントコンソール、IdP向けプロビジョニングコネクター、SCIM (Account) APIを用いてDatabricksアカウントにユーザーを追加することができます。

:::note
**注意**
一人のユーザーは50を超えるDatabricksアカウントに属することはできません。
:::

## アカウントコンソールを用いてアカウントにユーザーを追加する

1. アカウント管理者として[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/user-management.png)**User management**をクリックします。
1. **Users**タブで**Add User**をクリックします。
1. ユーザーの氏名とメールアドレスを入力します。
1. **Send invite**をクリックします。

Databricksは、招待を受諾するためのURLとともに確認メールを送信します。5分以内に確認メールが届かない場合には、迷惑メールに分類されていないかユーザーに確認してください。

ユーザーにワークスペースアクセスを付与するには、ワークスペースに彼らを追加する必要があります。[ワークスペースにユーザーを追加する](#ワークスペースにユーザーを追加する)をご覧ください。

## アイデンティティプロバイダーからDatabricksアカウントにユーザーを同期する

アカウント管理者はSCIMプロビジョニングコネクターを用いて、お使いのアイデンティティプロバイダー(IdP)からDatabricksアカウントにユーザーを同期することができます。

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

手順に関しては、[Databricksアカウントへのアイデンティティのプロビジョン](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295#databricks%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%B8%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%81%AE%E3%83%97%E3%83%AD%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3)をご覧ください。

## SCIM APIを用いてアカウントにユーザーを追加する

アカウント管理者は、アカウント向けSCIM APIを用いてDatabricksアカウントのユーザーを追加、管理することができます。

また、ワークスペース管理者もこのAPIを用いてユーザーを管理することができますが、この場合異なるエンドポイントURLを用いてAPIを呼び出す必要があります:

- アカウント管理者は`accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/scim/v2/`を使わなくてはいけません。
- ワークスペース管理者は`{workspace-domain}/api/2.0/account/scim/v2/`を使用します。

SCIM APIを用いてユーザーを追加するには:

1. ユーザーが既に存在しているのかどうかを特定するには[SCIM API 2\.0 \(Accounts\)](https://docs.databricks.com/dev-tools/api/latest/scim/account-scim.html)を使います。
1. ユーザーが存在しない場合、同じAPIを用いてユーザーを作成します。
1. [Workspace Assignment API](https://api-docs.databricks.com/rest/latest/permission-assignment-account-api.html)を用いてワークスペースにユーザーを割り当てます。

# ユーザーにアカウント管理者権限を割り当てる

1. アカウント管理者として[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/user-management.png)**User management**をクリックします。
1. ユーザーを探してユーザー名をクリックします。
1. **Roles**タブで**Account admin**をオンにします。

また、[SCIM API 2\.0 \(Accounts\)](https://docs.databricks.com/dev-tools/api/latest/scim/account-scim.html)を用いてアカウント管理者ロールを割り当てることもできます。

# Databricksアカウントからユーザーを削除する

アカウント管理者はDatabricksアカウントからユーザーを削除することができます。ワークスペース管理者はこれを行うことはできません。アカウントからユーザーを削除すると、当該ユーザーはワークスペースからも削除されます。

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

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

アカウントコンソールを用いてユーザーを削除するには、以下の手順を踏みます:

1. アカウント管理者として[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/user-management.png)**User management**をクリックします。
1. ユーザーを探してユーザー名をクリックします。
1. **User Information**タブで右上の![](https://docs.databricks.com/_images/kebab-menu.png)ケバブメニューをクリックし、**Delete**を選択します。
1. 確認ダイアログで**Confirm delete**をクリックします。

アカウントコンソールを用いてユーザーを削除したら、アカウントでセットアップされているすべてのSCIMプロビジョニングコネクターやSCIM APIアプリケーションを使用しているユーザーが削除されていることを確認してください。そうしないと、SCIMプロビジョニングは次の同期でシンプルにそのユーザーを追加してしまいます。[Databricksにおけるアイデンティティプロバイダーとのユーザー、グループの同期](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295)をご覧ください。

SCIM APIを用いてDatabricksアカウントからユーザーを削除するには、アカウント管理者である必要があります。[Databricksアカウントへのアイデンティティのプロビジョン](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295#databricks%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%B8%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%81%AE%E3%83%97%E3%83%AD%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3)や[SCIM API 2\.0 \(Accounts\)](https://docs.databricks.com/dev-tools/api/latest/scim/account-scim.html)をご覧ください。

# ワークスペースにユーザーを追加する

アカウント管理者は、[アイデンティティフェデレーションが有効化されているワークスペース](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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)に以下の方法でユーザーを追加することができます。

- アカウントコンソール
- Workspace Assignment API

ワークスペース管理者は以下の方法を用いて自分のワークスペースでユーザーを管理することができます。

- ワークスペースの管理コンソール
- Workspace Assignment API(ワークスペースでアイデンティティフェデレーションが有効化されている場合)
- アイデンティティプロバイダー(IdP)向けプロビジョニングコネクター
- ワークスペースレベルのSCIM API

## アカウントコンソールを用いてワークスペースにユーザーを割り当てる

アカウントコンソールを用いてワークスペースにユーザーを追加するには、ワークスペースでアイデンティティフェデレーションが有効化されている必要があります。

1. アカウント管理者として[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/workspace-icon.png)**Workspaces**をクリックします。
1. **Permissions**タブで**Add permissions**をクリックします。
1. ユーザーを検索して選択し、アクセス権レベル(ワークスペース**ユーザー**あるいは**管理者**)を割り当てて**Save**をクリックします。

## ワークスペースの管理コンソールを用いてワークスペースにユーザーを追加する

ワークスペース管理者はワークスペース管理コンソールを用いてユーザーを追加、管理することができます。

ワークスペース管理コンソールを用いてユーザーを追加するには以下を実施します:

1. ワークスペース管理者としてDatabricksワークスペースにログインします。
1. Databricksワークスペースのトップバーにあるユーザー名をクリックし、**Admin Console**を選択します。
1. **Users**タブで**Add User**をクリックします。
1. ワークスペースに割り当てる既存ユーザーを選択するか、新規に作成します。
![](https://docs.databricks.com/_images/identity-federation-add-user-from-workspace.png)
    新規ユーザーを作成するには、検索ボックスの下向き矢印をクリックし、**+ Add new user**をクリックします。

1. **Add**をクリックします。

    Databricksは確認メールを送信します。5分以内に確認メールが届かない場合には、迷惑メールに分類されていないかユーザーに確認してください。

:::note
**注意**
ワークスペースで[アイデンティティフェデレーション](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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)が有効化されていない場合、既存のアカウントユーザーをワークスペースに追加することはできません。
:::

## REST APIを用いてワークスペースにユーザーを割り当てる

ワークスペースにユーザーを割り当てる際に使用するREST APIは、以下のようにワークスペースで[アイデンティティフェデレーション](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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)が有効化されているかどうかに依存します:

- **アイデンティティフェデレーションが有効化されているワークスペース:** アカウント管理者はワークスペースにユーザーやその他のアイデンティティを割り当てるためにアカウントレベルのWorkspace Assignment APIを使用することができます。このタスクを行うために、アカウント管理者とワークスペース管理者はワークスペースレベルのWorkspace Assignment APIを使用することができます。[Workspace Assignment \(Account\) APIとWorkspace Assignment \(Workspace\) APIリファレンス](https://api-docs.databricks.com/rest/latest/permission-assignment-account-api.html)をご覧ください。
- **アイデンティティフェデレーションが有効化されていないワークスペース:** 自分のワークスペースにユーザーやその他のアイデンティティを割り当てるためにワークスペースレベルのSCIM APIを使用することができます。[SCIM API 2\.0](https://docs.databricks.com/dev-tools/api/latest/scim/index.html)をご覧ください。

# ワークスペースからユーザーを削除する

アカウント管理者は、[アイデンティティフェデレーションが有効化されているワークスペース](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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)に以下の方法でユーザーを削除することができます。

- アカウントコンソール
- Workspace Assignment API

ワークスペース管理者は以下の方法を用いて自分のワークスペースでユーザーを削除することができます。

- ワークスペースの管理コンソール
- Workspace Assignment API(ワークスペースでアイデンティティフェデレーションが有効化されている場合)
- アイデンティティプロバイダー(IdP)向けプロビジョニングコネクター
- ワークスペースレベルのSCIM API

## アカウントコンソールを用いてワークスペースからユーザーを削除する

アカウントコンソールを用いてワークスペースからユーザーを削除するには、ワークスペースでアイデンティティフェデレーションが有効化されている必要があります。

1. アカウント管理者として[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/workspace-icon.png)**Workspaces**をクリックします。
1. **Permissions**タブでユーザーを特定します。
1. ユーザーの一番右にある![](https://docs.databricks.com/_images/kebab-menu.png)ケバブメニューをクリックして、**Remove**を選択します。
1. 確認ダイアログで**Remove**をクリックします。

## ワークスペースの管理コンソールを用いてワークスペースからユーザーを削除する

1. ワークスペース管理者としてDatabricksワークスペースにログインします。
1. Databricksワークスペースのトップバーにあるユーザー名をクリックし、**Admin Console**を選択します。
1. **Users**タブで**ユーザーを特定し、ユーザー行の一番右にある![](https://docs.databricks.com/_images/remove-user.png)をクリックします。
1. 確認して**Delete**をクリックします。

## REST APIを用いてワークスペースからユーザーを削除する

ワークスペースからユーザーを削除する際に使用するREST APIは、以下のようにワークスペースで[アイデンティティフェデレーション](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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)が有効化されているかどうかに依存します:

- **アイデンティティフェデレーションが有効化されているワークスペース:** アカウント管理者はワークスペースからユーザーを削除するためにアカウントレベルのWorkspace Assignment APIを使用することができます。このタスクを行うために、アカウント管理者とワークスペース管理者はワークスペースレベルのWorkspace Assignment APIを使用することができます。[Workspace Assignment \(Account\) APIとWorkspace Assignment \(Workspace\) APIリファレンス](https://api-docs.databricks.com/rest/latest/permission-assignment-account-api.html)をご覧ください。
- **アイデンティティフェデレーションが有効化されていないワークスペース:** 自分のワークスペースからユーザーを削除するためにワークスペースレベルのSCIM APIを使用することができます。[SCIM API 2\.0](https://docs.databricks.com/dev-tools/api/latest/scim/index.html)をご覧ください。

# ユーザーにワークスペース管理者ロールを割り当てる

アカウントコンソール、ワークスペースの管理コンソール、REST API、IdPのプロビジョニングコネクターを用いてワークスペース管理者ロールを割り当てることができます。

## アカウントコンソールを用いてユーザーにワークスペース管理者ロールを割り当てる

1. アカウント管理者として[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/workspace-icon.png)**Workspaces**をクリックします。
1. **Permissions**タブでユーザーを特定します。
1. ユーザーの一番右にある![](https://docs.databricks.com/_images/kebab-menu.png)ケバブメニューをクリックして、**Edit**を選択します。
1. **Role**で**Admin**を選択します。
1. **Save**をクリックします。

ワークスペースユーザーから管理者ロールを削除するには、同じステップを実行して**Role**で**User**を選択します。

## ワークスペースの管理コンソールを用いてユーザーにワークスペース管理者ロールを割り当てる

1. ワークスペース管理者としてDatabricksワークスペースにログインします。
1. Databricksワークスペースのトップバーにあるユーザー名をクリックし、**Admin Console**を選択します。
1. **Users**タブでユーザーを特定し、**Admin**チェックボックスを選択します。

ワークスペースユーザーから管理者ロールを削除するには、同じステップを実行して**Admin**を解除します。

## REST APIを用いてユーザーにワークスペース管理者ロールを割り当てる

ワークスペース管理者ロールを割り当てる際に使用するREST APIは、以下のようにワークスペースで[アイデンティティフェデレーション](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%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%AE%E3%81%8B)が有効化されているかどうかに依存します:

- **アイデンティティフェデレーションが有効化されているワークスペース:** アカウント管理者はワークスペース管理者ロールを割り当て、解除するためにアカウントレベルのWorkspace Assignment APIを使用することができます。このタスクを行うために、アカウント管理者とワークスペース管理者はワークスペースレベルのWorkspace Assignment APIを使用することができます。[Workspace Assignment \(Account\) APIとWorkspace Assignment \(Workspace\) APIリファレンス](https://api-docs.databricks.com/rest/latest/permission-assignment-account-api.html)をご覧ください。
- **アイデンティティフェデレーションが有効化されていないワークスペース:** 自分のワークスペースの管理者グループへの追加、削除をするためにワークスペースレベルのSCIM APIを使用することができます。[SCIM API 2\.0](https://docs.databricks.com/dev-tools/api/latest/scim/index.html)をご覧ください。

## SCIMプロビジョニングコネクターを用いてユーザーにワークスペース管理者ロールを割り当てる

ワークスペース管理者はDatabricksの`admins`グループのメンバーなので、IdPからのSCIMプロビジョニングコネクターを用いて、ほかのグループをプロビジョニングするのと同じように、ワークスペース管理者ロールを管理することができます。Databricksの`admins`グループに同期されるIdPグループのすべてのグループメンバーは、ワークスペース管理者としてDatabricksにプロビジョニングされます。

[Databricksにおけるアイデンティティプロバイダーとのユーザー、グループの同期](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295)をご覧ください。

# ワークスペースユーザーに資格情報を割り当てる

# 資格情報の割り当て

資格情報(entitlement)とはユーザー、サービスプリンシパル、グループがDatabricksと特定の方法でインタラクションできるようにするプロパティです。資格情報はワークスペースレベルでユーザーに割り当てられます。以下の表では、資格情報とそれらを管理するために使用するワークスペースUI名とAPIのプロパティ名を一覧しています。資格情報を管理するために、ワークスペースの管理コンソールやワークスペースレベルの[SCIM REST API](https://docs.databricks.com/dev-tools/api/latest/scim/index.html)を使用することができます。

| 資格情報名(UI) | 資格情報名(API) | デフォルト | 説明 |
|:--|:--|:--|:--|
| Workspace access  | workspace-access |  デフォルトで生成 | ユーザーやサービスプリンシパルに割り当てると、彼らはData Science & EngineeringやDatabricks Machine Learningのペルソナベースの環境にアクセスできるようになります。<br><br>ワークスペース管理者から削除することはできません。  |
| Databricks SQL access  | databricks-sql-access  | デフォルトで生成  | ユーザーやサービスプリンシパルに割り当てると、彼らはDatabricks SQLにアクセスできるようになります。  |
| Allow unrestricted cluster creation  | allow-cluster-create  | デフォルトではユーザーやサービスプリンシパルには許可されません  |  ユーザーやサービスプリンシパルに割り当てると、彼らはクラスターを作成できるようになります。[クラスターレベルのアクセス権](https://docs.databricks.com/security/access-control/cluster-acl.html)を用いて既存のクラスターへのアクセスを制限することができます。<br><br>ワークスペース管理者から削除することはできません。 |
|  Allow pool creation (UIでは利用不可) | allow-instance-pool-create  | 個々のユーザー、サービスプリンシパルに割り当てることはできません  |グループに割り当てられると、メンバーはインスタンスプールを作成できるようになります。<br><br>ワークスペース管理者から削除することはできません。   |

新規ユーザーはデフォルトで**Workspace access**と**Databricks SQL access**の資格情報を有しています。

:::note warn
**重要！**
Databricksにログインするには、ユーザーは**Databricks SQL access**か**Workspace access**(あるいは両方)の資格情報を有している必要があります。
:::

**Workspace access**資格情報は、ユーザーに対してData Science & Engineering workspaceやDatabricks Machine Learningへのアクセス権を提供します。ユーザーはこの資格情報を有する`users`グループのメンバーとしてこの資格情報を継承します。ユーザーごとにこの資格情報を割り当てるには、ワークスペース管理者は`users`グループからこの資格情報を削除し、**Users**タブでユーザー個別にこの資格情報を割り当てます。

Databricks SQLアクセス資格情報に関しては、[Manage users and groups](https://docs.databricks.com/sql/admin/users-groups.html)をご覧ください。

[クラスターのアクセスコントロール](https://docs.databricks.com/security/access-control/cluster-acl.html)が有効化されており、**Allow unrestricted cluster creation**を選択していない場合、ユーザーはクラスター作成権限*なし*に追加されます。

以前ワークスペースに存在していたユーザーを再アクティベートした際、以前のユーザーの資格情報はレストアされます。

## ワークスペース管理コンソールを用いて資格情報の追加、削除を行う

ワークスペース管理者として以下を実施します:

1. Databricksワークスペースのトップバーにあるユーザー名をクリックし、**Admin Console**を選択します。
1. ユーザーの行に移動します。
1. 資格情報を追加するには、対応するカラムのチェックボックスを選択します。
1. 資格情報を削除するには、対応するカラムのチェックボックスを解除します。

:::note
**注意**
**Admin**は資格情報ではありません。**Admin**チェックボックスは`admins`グループにユーザーを追加する簡便な手段となります。
:::

資格情報を明示的に追加するために、対応するチェックボックスを選択することができます。資格情報がグループから継承される際、資格情報のチェックボックスが選択されていますがグレーアウトされています。継承した資格情報を削除するには、資格情報を持つグループからユーザーを削除するか、グループから資格情報を削除します。

`allow-instance-pool-create`視覚情報はユーザーに対して直接許可することはできません。代わりに、グループに資格情報を許可し、グループにユーザーを追加します。

[add or remove an entitlement for a group](https://docs.databricks.com/administration-guide/users-groups/groups.html#manage-group-entitlements)をご覧ください。

## SCIM REST APIを用いて資格情報の追加、削除を行う

ワークスペースレベルのSCIM (Users) REST APIを用いてユーザーを作成、アップデートする際(PATCHかPUT経由)に資格情報を追加することができます。例えば、このAPI呼び出しは、特定ユーザーに対して`allow-cluster-create`資格情報を追加します。

```bash:Bash
curl --netrc -X PATCH \
https://<databricks-instance>/api/2.0/preview/scim/v2/Users/<user-id> \
--header 'Content-type: application/scim+json' \
--data @update-user.json \
| jq .
```

`update-user.json`:

```json:JSON
{
  "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
  "Operations": [
    {
      "op": "add",
      "path": "entitlements",
      "value": [
        {
          "value": "allow-cluster-create"
        }
      ]
    }
  ]
}
```

詳細に関しては、[workspace\-level SCIM \(Users\) REST API reference](https://docs.databricks.com/dev-tools/api/latest/scim/scim-users.html)をご覧ください。

### Databricks 無料トライアル

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