DatabricksワークスペースでのSSOのセットアップ

[Set up SSO for your workspace \| Databricks on AWS](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/index.html) [2023/6/20時点]の翻訳です。

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

ワークスペースシングルサインオン(SSO)によって、あなたの組織のアイデンティティプロバイダーを用いて、Databricksワークスペースに対してユーザーを認証することができます。

# 統合ログイン

2023/6/21以降にDatabricksアカウントが作成されたのであれば、あなたのアカウントで統合ログインが有効になっています。統合ログインによって、アカウントとすべてのDatabricksワークスペースで使用される一つのSSO設定を管理することができます。アカウントでSSOが有効化されると、新規・既存のすべてのワークスベースでアカウントレベルのSSO設定が用いられ、アカウント管理者、ワークスペース管理者を含むすべてのユーザーはSSOを用いてDatabricksにサインインしなくてはなりません。ワークスペースレベルで個別にSSOを管理することはできません。

2023/6/21以前にアカウントが作成されている場合、アカウントで統合ログインは有効化されていません。これは、アカウントのSSOとワークスペースごとのSSOは個別に管理しなくてはならないことを意味します。アカウントとワークスペースで同じアイデンティティプロバイダーを設定しなくてはなりません。

:::note
**プレビュー**
2023/6/21以前に作成されたアカウントの統合ログインは[プライベートプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。アクセスするにはDatabricks担当者にお問い合わせください。
:::

# アカウントレベルのSSO

アカウントコンソールでシングルサインオンを有効化するには、[Set up SSO for your Databricks account console](https://docs.databricks.com/administration-guide/account-settings-e2/single-sign-on/index.html)をご覧ください。

# ワークスペースレベルのSSO

統合ログインが無効化された場合にのみ、ワークスペースレベルのSSOを設定することができます。2023/6/21以降にDatabricksアカウントが作成されたのであれば、あなたのアカウントで統合ログインが有効になっており、ワークスペースはアカウントの同じSSO設定を使用します。[統合ログイン](#統合ログイン)をご覧ください。

# ワークスペースSSOアプリケーションの例

- [SSO with Microsoft Windows Active Directory for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/adfs.html)
- [SSO with Microsoft Windows Active Directory for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/adfs.html)
- [SSO with Azure Active Directory for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/azure-ad.html)
- [SSO with Google Workspace \(GSuite\) for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/gsuite.html)
- [Configure SSO with Okta for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/okta.html)
- [Configure SSO with OneLogin for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/onelogin.html)
- [Configure SSO with Ping Identity for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/ping-identity.html)

# 様々なワークスペースSSOバージョンにおける要件

Databricksでは、SSOソフトウェアにバージョン2.0と1.0があります。

- [E2バージョンのDatabricksプラットフォーム](https://qiita.com/taka_yayoi/items/7d209bc8d32bc5f2dba4#e2%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3)は常にSSOバージョン2.0を使用します。すべての新規Databricksアカウントとほとんどの既存アカウントはE2です。このため、ほとんどのワークスペースではSSOバージョン2.0を使用します。

    SSOバージョン2.0では、アイデンティティプロバイダーによって暗号を用いてサインされたSAMLレスポンスが必要です。いくつかのアイデンティティプロバイダーでは、これには追加の設定が必要となります。

- E2バージョンのDatabricksプラットフォームではないワークスペースのデフォルトはSamlAuthenticatorのバージョン1ですが、Databricks担当者はワークスペースでバージョン2を使用するようにアップグレードを行うことができます。ワークスペースでバージョン2を使うようになると、ワークスペースのSSO SAMLエンドポイントURLは変更され、お使いのIdPで設定を変更しなくてはなりません。ワークスペースがE2にアップグレードされると、SSOのSAMLエンドポイントURLは変更され、お使いのIdPで設定を変更しなくてはなりません。

    SSOバージョン1.0では、SAMLレスポンスはオプションですが、使用することを強くお勧めします。

お使いのアカウントがE2プラットフォームかどうかがわからない場合には、Databricks担当にお問い合わせください。

# ワークスペースレベルシングルサインオンの有効化

:::note info
**注意**
統合ログインが無効化された場合にのみ、ワークスペースレベルのSSOを設定することができます。2023/6/21以降にDatabricksアカウントが作成されたのであれば、あなたのアカウントで統合ログインが有効になっており、ワークスペースはアカウントの同じSSO設定を使用します。[統合ログイン](#統合ログイン)をご覧ください。
:::

:::note alert
**警告！**
シングルサインオンのテストの過程でDatabricksからロックアウトされないように、別のブラウザウィンドウでアカウントコンソールを開いたままにしておくことをお勧めします。
:::

1. ワークスペースの[管理者設定](https://docs.databricks.com/administration-guide/index.html#admin-settings)に移動し、**SSO**タブを選択します。
1. お使いのアイデンティティプロバイダーに移動し、**Databricks SAML URL**フィールドの情報を用いてDatabricksアプリケーションを作成します。
![](https://docs.databricks.com/_images/databricks-saml-url.png)

    セットアップ方法に関しては以下の手順をご覧ください。

    - [SSO with Microsoft Windows Active Directory for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/adfs.html)
    - [SSO with Microsoft Windows Active Directory for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/adfs.html)
    - [SSO with Azure Active Directory for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/azure-ad.html)
    - [SSO with Google Workspace \(GSuite\) for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/gsuite.html)
    - [Configure SSO with Okta for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/okta.html)
    - [Configure SSO with OneLogin for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/onelogin.html)
    - [Configure SSO with Ping Identity for your workspace](https://docs.databricks.com/administration-guide/users-groups/single-sign-on/ping-identity.html)

    SAML 2.0をサポートしている任意のアイデンティティプロバイダーにおいても、手順は同様なものとなります。

1. **Provide the information from the identity provider**フィールドに、アイデンティティプロバイダーのDatabricks SSOに関する情報を貼り付けます。
1. (オプション)自動ユーザー生成を有効化するために、**Allow auto user creation**を選択します。自動ユーザー生成によって、アイデンティティプロバイダーのユーザーがワークスペースにログインできるようになります。Databricksにユーザーのアカウントが存在していない場合、ログインの際に新規アカウントがプロビジョンされます。これは、just-in-time (JIT)プロビジョニングとしても知られるものです。自動ユーザー生成では、ユーザーをグループには紐づけません。
1. [Access S3 with IAM credential passthrough with SAML 2\.0 federation \(legacy\)](https://docs.databricks.com/data-governance/credential-passthrough/iam-federation.html)を設定している場合には、**Allow IAM role entitlement auto sync**を選択します。
![](https://docs.databricks.com/_images/auto-create-users.png)
1. **Enable SSO**をクリックします。

# (オプション)パスワードアクセスコントロールの設定

:::note info
**注意**
統合ログインが無効化されている場合にのみ、パスワードアクセスコントロールを設定することができます。アカウントが2023/6/21以降に作成されており、パスワードアクセスコントロールが必要な場合には、Databricks担当者にお問い合わせください。
:::

:::note info
**注意**
アクセスコントロールは[プレミアムプラン以上](https://databricks.com/jp/product/aws-pricing)でのみ利用できます。このプランでない場合、皆様のユーザーエクスペリエンスはSSOの[デフォルトのサインインの挙動](#ワークスペースサインインのプロセス)となります。
:::

統合ログインが無効化されると、すべてのワークスペース管理者はSSOかユーザー名・パスワードを用いてDatabricksにサインインすることができ、すべてのAPIユーザーは、自身のユーザー名・パスワードを用いてDatabricks REST APIの認証を受けることができます。ワークスペース管理者として、パスワードアクセスコントロールを用いて権限を設定することで、ワークスペース管理者ユーザーとAPIユーザーがユーザー名・パスワードで認証を受ける能力を制限することができます。

パスワードの権限レベルには、**No permissions**と**Can Use**の二つがあります。**Can Use**は、非管理者ユーザーやワークスペース管理者に権限を付与します。以下の表では権限ごとの能力を一覧しています。

|  | No permissions | Non-admin with Can Use | Workspace admin with Can Use |
|:--|:--|:--|:--|
| パスワードを用いてAPIの認証を受ける  |   |  x | x  |
| パスワードを用いてDatabricks UIの認証を受ける  |   |   | x  |

権限を持たない非管理者ユーザーが、パスワードを用いてREST APIを呼び出そうとした場合、認証は失敗します。ワークスペース管理者はワークスペースで[パーソナルアクセストークン](https://docs.databricks.com/api/workspace/tokenmanagement)が[有効化](https://qiita.com/taka_yayoi/items/712170ba2f2c2bdf5d24)されていることを確認し、APIへの認証にはそれを使用することをユーザーに指示してください。

**Can Use**権限を持つワークスペース管理者ユーザーは、サインインページで**Admin Log In**を参照することができます。ユーザー名・パスワードでDatabricksにログインするために、このタブを使用することができます。
![](https://docs.databricks.com/_images/admin-login.png)

権限を持たないワークスペース管理者はこのページを参照することができず、SSOを用いてログインしなくてはなりません。

## パスワード権限の設定

このセクションでは、UIを用いた権限の管理方法を説明します。[Permissions API](https://docs.databricks.com/api/workspace/permissions)を使うこともできます。

1. ワークスペースの管理者設定に移動します。
1. **Workspace Settings**タブをクリックします。
1. **Password Usage**の隣の**Permission Settings**をクリックします。
1. 権限設定ダイアログで、ユーザーやグループの隣のドロップダウンメニューを用いて、ユーザーやグループにパスワード権限を割り当てます。また、Adminsグループの権限を設定することもできます。
1. **Save**をクリックします。

# ワークスペースサインインのプロセス

統合ログインが有効化され、アカウントレベルのSSOが有効化されると、アカウントやワークスペースのサインインページでシングルサインオンのオプションを参照することになります。この挙動は以下の通りとなります:

- 管理者を含むすべてのユーザーは、SSOを用いてDatabricksにサインイン*しなくてはなりません*。ユーザー名やパスワードを用いてサインインすることはできません。
- すべてのAPIユーザーはREST APIを呼び出すためにユーザー名とパスワードを使うことができます。代わりに[パーソナルアクセストークン](https://docs.databricks.com/api/workspace/tokenmanagement)を使うことをお勧めします。

    :::note info
    **注意**
    アカウントが2023/6/21以降に作成されており、ワークスペースのAPIユーザーのユーザー名とパスワードによる認証が必要な場合には、Databricks担当者にお問い合わせください。
  :::

統合ログインが無効化され、SSOが有効化されるとワークスペースサインインページでシングルサインオンのオプションを参照することになります。デフォルトの挙動は以下の通りとなります:

- 非管理者ユーザーはSSOを用いてDatabricksにサインイン*しなくてはなりません*。ユーザー名やパスワードを用いてサインインすることはできません。
- **Can use**のパスワードアクセスコントロール権限が付与されているワークスペース管理者ユーザーは、SSOかユーザー名・パスワードでサインインすることができます。
- **Can use**のパスワードアクセスコントロール権限が付与されているAPIユーザーは、REST APIの呼び出しでユーザー名・パスワードを使用することができます。代わりに[パーソナルアクセストークン](https://docs.databricks.com/api/workspace/tokenmanagement)を使うことをお勧めします。

お使いのDatabricksアカウントがプレミアムプラン以上であれば、[パスワードアクセスコントロール](#オプションパスワードアクセスコントロールの設定)を用いて権限を設定することで、ワークスペース管理者やAPIユーザーのユーザー名・パスワードによる認証を制限することができます。

# 既存ユーザーをSSOに移行する

:::note info
**注意**
自動ユーザー設定が有効化され、Databricksユーザーの現在のメールアドレス(ユーザー名)がアイデンティティプロバイダーと同じである場合、移行は自動で行われるのでこのステップをスキップすることができます。
:::

アイデンティティプロバイダーのユーザーのメールアドレスが、Databricksのものと異なる場合、ログインした際に、アイデンティティプロバイダーのメールをベースとした新規ユーザーがDatabricksに表示されます。非管理者ユーザーは、古いメールアドレスとパスワードでログんできなくなっているので、既存のUsersフォルダーにあるファイルにアクセスすることができません。

古いUsersフォルダーから新たなUsersフォルダーにファイルを移行するには、以下のステップを踏むことをお勧めします:

1. ワークスペース管理者が古いユーザーを削除します。これによって、当該ユーザーのフォルダーディレクトリは機能停止とマークされ、このディレクトリはワークスペースフォルダーのすべてのアクティブなユーザーの後に表示されます。依然として、ワークスペース管理者によってすべてのノートブックとライブラリはアクセスできます。このユーザーによって作成されたすべてのクラスターやジョブはそのままとなります。このユーザーが別のACLセットを持っていた場合、SSOの有効化によってこれらはリセットされ、ワークスペース管理者は新規ユーザーに手動でこれらのACLを設定しなくてはなりません。
1. ワークスペース管理者は、古いユーザーのフォルダーを以下の図のように、新たなフォルダーに移動します。
![](https://docs.databricks.com/_images/move.png)

# トラブルシュート

[Chrome](https://chrome.google.com/webstore/detail/saml-tracer/dnfjlklelaembklifpcakngpkpfannfo?hl=en-GB)や[Firefox](https://addons.mozilla.org/es/firefox/addon/saml-tracer/)のSAML Tracer拡張をインストールすることをお勧めします。Tracerによって、DatabricksからIdPに送信されるSAMLリクエストや、IdPからDatabricksに送信されるSAMLレスポンスを確認できるようになります。

以下のトラブルシュートを用いても問題が解決できない場合には、Databricks担当者にお問い合わせください。

## SSOバージョンとURLの確認

1. Databricksワークスペースで、管理者設定ページの**SSO**タブに移動します。
1. **Single Sign-On**の隣のカッコに表示されているSSOのバージョンを確認します。
1. Databricks SAML URLを確認します。このURLをIdPで設定しなくてはいけません。ワークスペースをE2バージョンにアップグレードしたり、SSOバージョン2にアップグレードした際には、このURLは変更されます。

## SAMレスポンスがサインされていることを確認

ブラウザにインストールしたSAML Tracerで以下のステップを実行します。

1. incognitoウィンドウで**Tools > SAML Tracer**に移動して、SAML Tracerを開きます。
1. Databricksワークスペースに移動して、SSOを用いたログインを試みます。
1. SAML Tracerで**Response**タブに移動します。
    - レスポンスがサインされている場合、`<saml2p:Response>`要素の下には`<ds:signature>`要素があります。レスポンスがサインされていない場合、IdPでSAMLレスポンスにサインするように設定してください。[ワークスペースレベルシングルサインオンの有効化](#ワークスペースレベルシングルサインオンの有効化)にあるお使いのIdPのリンク先の手順に従ってください。
    - アサーションがサインされている場合、`<saml:Assertion>`の下には`<saml2p:Response>`があり、さらにその下に`<ds:Signature>`要素があります。

## ユーザーメールアドレスのケースセンシティビティを確認

Databricksにおいて、ユーザーのメールアドレスは大文字小文字を区別します。Databricksでのメールアドレスが`john.doe@example.com`でIdPでは`John.Doe@example.com`であるユーザーを想定します。以下のいずれかの理由でDatabricksへのログインが失敗します:

- Databricksで自動ユーザー生成が有効化されている場合、新規ユーザーが作成され、そのユーザーは既存の資格情報ではなく、それらの資格情報を用いてログインします。
- 自動ユーザー生成が無効化されている場合、以下のようなエラーで失敗します。`We encountered an error logging you in. Databricks support has been alerted and will begin looking into this issue right away.`

この問題を修正するために、Databricksで既存のユーザーを削除することができます。自動ユーザー生成が有効化されたら、ユーザーにSSOを用いて再度ログインするよう依頼してください。あるいは、メールアドレスがIdPのレコードと性格に一致することを確認して、ユーザーを再作成します。Databricksにユーザーが作成されたら、以前のユーザーによって所有されていた資産を新たなユーザーに再割り当てしなくてはなりません。

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

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