Okta の SCIM プロビジョニングを構成する

この記事では、Okta を使用して Databricks プロビジョニングを設定する方法について説明します。 ユーザーとグループを Databricks にプロビジョニングするには、Okta テナントで Okta Lifecycle Management 機能を使用する必要があります。

プロビジョニングの設定は、Databricks アカウント レベルまたは Databricks ワークスペース レベルで行うことができます。

Databricks 、アカウント レベルにユーザー、サービス プリンシパル、およびグループを割り当て、 ID フェデレーションを使用してワークスペースにユーザーとグループを割り当てることをお勧めします。 ID フェデレーションが有効になっていないワークスペースがある場合は、引き続きそれらのワークスペースにユーザー、サービス プリンシパル、およびグループを直接追加する必要があります。

ID フェデレーションがプロビジョニングに与える影響の説明や、アカウント レベルとワークスペース レベルのプロビジョニングをいつ使用するかについてのアドバイスなど、Databricks での SCIM プロビジョニングの詳細については、 「ID プロバイダーからのユーザーとグループの同期」を参照してください。

ユーザーが Okta を使用してログインするには、Okta から Databricks へのシングル サインオンを構成する必要があります。 シングル サインオンを構成するには、 Databricks アカウント コンソールの SSO を参照してください。

機能

Databricks 、Okta Integration Network (OIN) の IT アプリとして利用可能であり、これにより、Okta を IT ユーザーやグループにDatabricksで自動的に使用できるようになります。

Databricks Okta アプリケーションを使用すると、次のことが可能になります。

  • ユーザーをDatabricksアカウントまたはワークスペースに招待する

  • 招待されたユーザーまたはアクティブなユーザーをグループに追加する

  • Databricks アカウントまたはワークスペース内の既存のユーザーを非アクティブ化する

  • グループとグループメンバーシップを管理する

  • プロファイルの更新と管理

要件

  • Databricks アカウントにはPremium プラン以上が必要です。

  • Okta開発者ユーザーである必要があります。

  • Databricks アカウントのプロビジョニングを設定するには、Databricks アカウント管理者である必要があります。

  • Databricks ワークスペースのプロビジョニングを設定するには、Databricks ワークスペース管理者である必要があります。

Okta を使用してアカウントレベルの SCIM プロビジョニングを設定する

このセクションでは、Okta SCIM コネクタを構成して、ユーザーとグループをアカウントにプロビジョニングする方法について説明します。

SCIMで トークンとアカウントSCIM URL を取得するDatabricks

  1. アカウント管理者として、Databricksアカウント コンソールにログインします。

    1. ユーザー設定アイコン 設定 」をクリックします 。

    2. [ユーザープロビジョニング]をクリックします。

    3. [ユーザー プロビジョニングの設定] をクリックします。

      SCIM トークンとアカウント SCIM URL をコピーします。 これらを使用して、Oktaでコネクタを構成します。

注:

SCIMトークンはアカウントSCIM API /api/2.0/accounts/{account_id}/scim/v2/ に制限されており、他のDatabricks REST APIsへの認証には使用できません。

Okta でSCIMを設定する

  1. Okta管理ポータルにログインします。

  2. アプリケーション 」に移動し、「 アプリケーション・カタログの参照」をクリックします。

  3. 「アプリ統合カタログの参照」で Databricks を検索します。

  4. [ 統合を追加] をクリックします。

  5. Databricks の追加で、以下を構成します。

    • [ アプリケーションラベル] に、アプリケーションの名前を入力します。

    • [ アプリケーションアイコンをユーザーに表示しない]を選択します。

    • [ Do not display application icon in the Okta Mobile App(Oktaモバイルアプリにアプリケーションアイコンを表示しない)]を選択します。

  6. [完了] をクリックします。

  7. 「プロビジョニング」をクリックし、以下を入力します。

    • プロビジョニング ベース URLに、Databricks からコピーした SCIM URL を入力します。

    • API[赤い トークン] に、 からコピーした トークンを入力します。SCIMDatabricks

  8. [API 資格情報のテスト]をクリックし、接続が成功したことを確認して、 [保存]をクリックします。

  9. プロビジョニングタブを再読み込みします。 API 資格情報のテストが成功すると、追加の設定が表示されます。

  10. Okta の変更をDatabricksにプッシュする際の動作を構成するには、 [App にプッシュ]をクリックします。

    • [ 編集] をクリックします。 必要な機能を有効にします。 Databricks では、ユーザーの作成ユーザー属性の更新、およびユーザーの非アクティブ化を有効にすることをお勧めします。

    • Databricks 属性マッピングで、Databricks 属性マッピングを確認します。 これらのマッピングは、上記で有効にしたオプションによって異なります。 必要に応じてマッピングを追加および編集できます。 Okta ドキュメントのプロビジョニング ページでアプリケーション属性のマップを参照してください。

  11. Databricks の変更を Okta にプッシュする際の動作を構成するには、 [To Okta]をクリックします。 デフォルト設定は、Databricks プロビジョニングに適しています。 デフォルト設定と属性マッピングを更新する場合は、Okta ドキュメントの「プロビジョニングとプロビジョニング解除」を参照してください。

統合をテストする

構成をテストするには、Okta を使用してユーザーを Databricks アカウントに招待します。

  1. Okta で、 「アプリケーション」に移動し、 「Databricks」をクリックします。

  2. プロビジョニングをクリックします。

  3. 割り当て」をクリックし、「 ユーザーに割り当て」をクリックします。

  4. Oktaユーザーを検索し、[ Assign(割り当て)]をクリックします。

  5. ユーザーの詳細を確認し、[ 割り当てて戻る] をクリックして、[ 完了] をクリックします。

  6. アカウントコンソールにログインし、アカウントコンソールのユーザー管理アイコン 「ユーザー管理」をクリックし、ユーザーが追加されたことを確認します。

この簡単なテストの後、 「Okta を使用して Databricks でユーザーとグループを管理する」で説明されているように、一括操作を実行できます。

Okta を使用してワークスペース レベルの SCIM プロビジョニングを設定する (レガシー)

プレビュー

この機能はパブリックプレビュー段階です。

このセクションでは、Okta から Databricks ワークスペースへのプロビジョニングを直接設定する方法について説明します。

APIで トークンとSCIM URL を取得するDatabricks

  1. Databricksワークスペース管理者として、個人用アクセストークンを生成します。 トークン管理を参照してください。 個人用アクセストークンを安全な場所に保管してください。

    重要

    この個人用アクセストークンを所有するユーザーは、Okta 内で管理してはなりません。 そうしないと、Okta からユーザーを削除すると SCIM 統合が中断されます。

  2. Oktaの構成に必要な次のURLをメモします。

    https://<databricks-instance>/api/2.0/preview/scim/v2

    <databricks-instance>を Databricks デプロイメントのワークスペース URLに置き換えます。 「ワークスペース オブジェクトの識別子を取得する」を参照してください。

このブラウザタブを開いたままにしてください。

Okta の Databricks SAML アプリケーションで SCIM プロビジョニングを構成する

  1. 「アプリケーション」に移動し、 「Databricks」をクリックします。

  2. プロビジョニングをクリックします。 上記のセクションから取得した次の情報を入力します。

    • エンドポイント ベース URL:エンドポイント

    • リモートAPIトークン:個人用アクセストークン

  3. [API 認証情報のテスト]をクリックします。

  4. プロビジョニングタブを再読み込みします。 API 資格情報のテストが成功すると、追加の設定が表示されます。

  5. Okta の変更を Databricks にプッシュする際の動作を構成するには、 [To App]をクリックします。

    • 「一般」で、「編集」をクリックします。必要な機能を有効にします。 Databricks では、少なくともユーザーの作成を有効にすることをお勧めします。

    • Databricks 属性マッピングで、Databricks 属性マッピングを確認します。 これらのマッピングは、上記で有効にしたオプションによって異なります。 必要に応じてマッピングを追加および編集できます。 Okta ドキュメントのプロビジョニング ページでアプリケーション属性のマップを参照してください。

  6. Databricks の変更を Okta にプッシュする際の動作を構成するには、 [To Okta]をクリックします。 デフォルト設定は、Databricks プロビジョニングに適しています。 デフォルト設定と属性マッピングを更新する場合は、Okta ドキュメントの「プロビジョニングとプロビジョニング解除」を参照してください。

統合をテストする

構成をテストするには、Okta を使用してユーザーを Databricks ワークスペースに招待します。

  1. Okta で、 「アプリケーション」に移動し、 「Databricks」をクリックします。

  2. [割り当て]タブをクリックし、 [ユーザーに割り当てる] をクリックします

  3. Oktaユーザーを検索し、[ Assign(割り当て)]をクリックします。

  4. ユーザーの詳細を確認します。 「 完了」をクリックします。

  5. Databricks ワークスペースの管理者設定ページで、 [ID とアクセス]タブをクリックし、 [ユーザー]セクションに移動して、ユーザーが追加されていることを確認します。 少なくとも、ユーザーにワークスペース権限を付与します。

この簡単なテストの後、次のセクションで説明するように、一括操作を実行できます。

Okta を使用して Databricks のユーザーとグループを管理する

このセクションでは、Okta SCIM プロビジョニングを使用して Databricks アカウントまたはワークスペースに実行できる一括操作について説明します。

DatabricksスペースからOktaにユーザーをインポートする

Databricks から Okta にユーザーをインポートするには、 [インポート]タブに移動し、 [今すぐインポート]をクリックします。 電子メール アドレスによって既存の Okta ユーザーと自動的に一致しないユーザーについては、割り当てを確認して確認するように求められます。

Databricks アカウントにユーザーとグループの割り当てを追加する

ユーザーとグループの割り当てを確認または追加するには、 [割り当て]タブに移動します。 Databricks では、 Everyoneという名前の Okta グループをアカウント レベルの SCIM プロビジョニング アプリケーションに追加することをお勧めします。 これにより、組織内のすべてのユーザーが Databricks アカウントに同期されます。

グループをDatabricksにプッシュする

Okta からDatabricksにグループをプッシュするには、 [グループのプッシュ]タブに移動します。 Databricksにすでに存在するユーザーは、電子メール アドレスによって照合されます。

アカウントからユーザーまたはグループを削除する

Okta のアカウント レベルの Databricks アプリケーションからユーザーを削除すると、そのユーザーは Databricks アカウントから削除され、ワークスペースで ID フェデレーションが有効になっているかどうかに関係なく、すべてのワークスペースにアクセスできなくなります。

Okta のアカウント レベルの Databricks アプリケーションからグループを削除すると、そのグループ内のすべてのユーザーがアカウントから削除され、アクセスしていたワークスペースへのアクセス権が失われます (別のグループのメンバーである場合、またはアカウントまたはワークスペースへのアクセス権が直接付与されている場合を除く)。 Databricks では、アカウント内のすべてのワークスペースへのアクセスを失わせたくない場合を除き、アカウント レベルのグループを削除しないことをお勧めします。

ユーザーを削除すると次のような影響が生じることに注意してください。

  • このユーザーによって生成されたトークンを使うアプリケーションまたはスクリプトはDatabricks APIにアクセスできなくなります。

    • ユーザーが所有するジョブは失敗になります。

    • ユーザーが所有するクラスターが停止します。

    • このユーザーによって作成された、[所有者として実行] 資格情報を使用して共有されているクエリーまたはダッシュボードは、共有が失敗しないように新しい所有者に割り当てる必要があります。

ワークスペースから非アクティブ化されたユーザーを削除する

Okta のワークスペース レベルの Databricks アプリケーションからユーザーを削除すると、そのユーザーは Databricks ワークスペース内で非アクティブ化されますが、ワークスペースからは削除されません。 非アクティブ化されたユーザーには、 workspace-access または databricks-sql-access 資格がありません。 非アクティブ化されたユーザーの再アクティブ化は、Okta でユーザーを再度追加するか、Databricks SCIM API を直接使用することで元に戻すことができます。 Databricks ワークスペースからユーザーを削除すると、混乱を招き、元に戻すことはできません。

重要

Okta SCIM プロビジョニング アプリを構成した管理者を非アクティブ化しないでください。 そうしないと、SCIM 統合は Databricks に対して認証できません。

Databricks ワークスペースからユーザーを削除するには:

  1. 管理者設定ページで、 「ユーザー」タブに移動します。

  2. ユーザーの行の末尾にある [x ] をクリックします。

ユーザーを削除すると、次の結果に注意してください。

  • ユーザーが生成したトークンを使用するアプリケーションやスクリプトは、Databricks APIにアクセスできなくなります。

  • ユーザーが所有するジョブは失敗します

  • ユーザーが所有するクラスターは停止します

  • ユーザーが作成し、所有者として実行の資格情報を使用して共有したクエリまたはダッシュボードは、共有が失敗しないように新しい所有者に割り当てる必要があります。

Oktaを使用してワークスペース管理者、権限、IAMロールを管理する

Databricks 、Okta のワークスペース レベルのDatabricksアプリケーションからのワークスペース管理者、IAM ロール、およびワークスペース権限の割り当てをサポートします。 Okta のアカウント レベルの Databricks アプリケーションでは、ロールと権限の割り当てはサポートされていません。 Okta から IAM ロールとワークスペースの権限を割り当てる場合は、そのワークスペースに対して Okta でワークスペース レベルのDatabricksアプリケーションを作成する必要があります。

Databricks 、代わりに Okta のアカウント レベルのDatabricksアプリケーションを、アップル ユーザー、サービス プリンシパル、およびグループに使用してアカウント レベルを管理することを推奨しています。 ID フェデレーションを使用してユーザーとグループをワークスペースに割り当て、 Databricks内でその権限と IAM ロールを管理します。

ワークスペース管理者を同期する

Databricks は、Okta のワークスペース レベルの Databricks アプリケーションからのワークスペース管理者ロールの割り当てをサポートしています。 ワークスペース管理者は Databricks adminsグループのメンバーです。 Databricks グループは自動的に Okta にプッシュされます。 Okta に新しい管理者ユーザーを追加するには、そのユーザーをadminsグループに追加します。

重要

Okta SCIM プロビジョニング アプリを構成した管理者を削除しないでください。また、その管理者をadminsグループから削除しないでください。 そうしないと、SCIM 統合は Databricks に対して認証できません。

Oktaからワークスペース権限を割り当てる

Databricks は、Okta のワークスペース レベルの Databricks アプリケーションからの権限の割り当てをサポートしています。 ただし、ほとんどの場合、Databricks では、Databricks 内から権限を管理することを推奨しています。 Databricks 内では、権限を簡単に割り当てたり取り消したりできます。 Oktaでのマッピングの構成は複雑で、エンタイトルメントごとに2つのマッピングを構成する必要があります。

このセクションでは、Oktaユーザーに databricks-sql-access 資格を付与するようにマッピングを構成する方法について説明します。

重要

デフォルトでは、Databricks ユーザーはworkspace-accessおよびdatabricks-sql-access権限を継承します。 デフォルトでは、Databricks 管理ユーザーはcreate-cluster権限を継承します。 Oktaから継承されたこれらのエンタイトルメントを割り当てる必要はありません。

ユーザーから継承された権限を取り消すには、ユーザーをグループから削除するか、権限をグループから削除します。 権限を削除するには、Databricks 管理コンソールを使用する必要があります。

databricks-sql-access資格を割り当てるには:

  1. Okta管理コンソールで、[ Directory > Profile Editor(ディレクトリプロファイルエディター)]に移動します。

  2. Oktaユーザー・プロファイルの[Profile edit( プロファイル 編集)]ボタンをクリックします。

  3. [ + 属性の追加 ] ボタンをクリックして、ロールを追加します。

  4. 「属性の追加」ダイアログで、「 表示名 」を「 Databricks SQL 」に、「 変数名 」を「 databricks_sql」に設定します。

    注:

    Okta変数にハイフン(-)文字を含めることはできません。

  5. プロファイル エディターに戻り、Databricks プロビジョニング アプリのユーザー プロファイルのプロファイル編集ボタンをクリックします。

  6. [ + 属性の追加 ] ボタンをクリックして、ロールを追加します。

  7. 「属性の追加」ダイアログで、ロール属性に次の値を指定します。

    • 表示名: Databricks SQL

    • 変数名: databricks_sql

    • entitlements.^[type==‘$TYPE’].value形式の外部名$TYPEは、ダッシュなしの権限のAPI 名です ( - )。 たとえば、 databricks-sql-access の [外部名] は entitlements.^[type=='databrickssqlaccess'].valueです。

    重要

    外部名形式では、アポストロフィ文字 (') を使用する必要があります。 中引用符文字 () を使用すると、 Request is unparseable エラーが発生します。

    • 外部名前空間: urn:ietf:params:scim:schemas:core:2.0:User.

    Databricks ロール属性を追加する
  8. プロファイル エディターに戻り、Databricks プロビジョニング アプリ ユーザー プロファイルのマッピング編集ボタンをクリックします。

  9. Databricks から Okta の場合、Databricks 列のappuser.databricks_sqlを Okta 列のdatabricks_sqlにマップします。

  10. Okta から Databricks の場合、Databricks 列のuser.databricks_sqlを Okta 列のdatabricks_sqlにマップします。

  11. マッピングの保存」をクリックします。

  12. ユーザーに権限値を追加するには、 「ディレクトリ」>「ユーザー」に移動し、ユーザーを選択して、ユーザー ページの「プロファイル」タブに移動します。

    [ 編集 ] ボタンをクリックします。 エンタイトルメントのフィールドに、ダッシュなしのエンタイトルメントの API 名 (例: databrickssqlaccess ) を入力します。 ユーザーをアプリに割り当てると、入力した値がロールに入力されます。

この手順を繰り返して、追加の権限を割り当てます。

OktaからIAMロールを割り当てる

Okta からユーザーに IAM ロールを割り当てるには、Okta ユーザー プロファイルと Okta Databricksアプリ プロファイルに複数値属性を作成し、これらの属性をDatabricks SCIM APIの属性にマップする必要があります。 たとえば、ユーザーに 2 つの IAM ロールを割り当てる場合は、 Databricksアプリで 2 つの属性を作成し、それぞれに 1 つの Okta ユーザー属性をマップする必要があります。

Databricks Databricks内から IAM ロールの割り当てを管理することを推奨しています。 Databricks内では、IAM ロールを簡単に割り当てたり取り消したりできます。 Okta でのマッピングの構成は複雑であり、IAM ロールごとに個別のマッピングを構成する必要があります。

次の手順では、 primary_role 属性を割り当てます。

  1. Okta管理コンソールで、[ Directory > Profile Editor(ディレクトリプロファイルエディター)]に移動します。

  2. Oktaユーザー・プロファイルの[Profile edit( プロファイル 編集)]ボタンをクリックします。

  3. [ + 属性の追加 ] ボタンをクリックして、ロールを追加します。

  4. 「属性の追加」ダイアログで、「 表示名 」を「 Primary role 」に、「 変数名 」を「 primary_role」に設定します。

    Okta Role属性を追加する
  5. プロファイル エディターに戻り、Databricks プロビジョニング アプリのユーザー プロファイルのプロファイル編集ボタンをクリックします。

  6. [ + 属性の追加 ] ボタンをクリックして、ロールを追加します。

  7. 「属性の追加」ダイアログで、ロール属性に次の値を指定します。

    表示名: Primary role

    変数名: primary_role

    外部名はroles.^[type=='$TYPE'].valueの形式で、 $TYPEロールを説明する文字列です。この場合、 $TYPE がprimaryであれば、外部名は roles.^[type=='primary'].value になります。

    重要

    外部名形式では、アポストロフィ文字 (') を使用する必要があります。 中引用符文字 () を使用すると、 Request is unparseable エラーが発生します。

    外部名前空間: urn:ietf:params:scim:schemas:core:2.0:User.

    Databricks ロール属性を追加する
  8. プロファイル エディターに戻り、Databricks プロビジョニング アプリ ユーザー プロファイルのマッピング編集ボタンをクリックします。

  9. Databricks から Okta の場合、Databricks 列のappuser.primary_roleを Okta 列のprimary_roleにマップします。

  10. Okta から Databricks の場合、Databricks 列のuser.primary_roleを Okta 列のprimary_roleにマップします。

  11. マッピングの保存」をクリックします。

  12. ユーザーにロール属性値を追加するには、 「ディレクトリ」>「ユーザー」に移動し、ユーザーを選択して、ユーザー ページの「プロファイル」タブに移動します。

    編集 」ボタンをクリックして、ユーザーの「プライマリ・ロール」の値を入力します。 ユーザーをアプリに割り当てると、入力した値がロールに入力されます。

この手順を繰り返して、追加のロールを割り当てます。

制限事項

  • ワークスペース レベルの Okta アプリケーションからユーザーを削除すると、ユーザーは削除されるのではなく、Databricks で非アクティブ化されます。 ユーザーを Databricks から直接削除する必要があります。

  • 非アクティブ化されたユーザーを再度アクティブ化するには、同じ電子メール アドレスを使用して Okta から削除してから再度追加します。

トラブルシューティングとヒント

  • Databricks プロファイルに名または姓のいずれかが指定されていないユーザーは、新しいユーザーとして Okta にインポートできません。

  • プロビジョニングのセットアップ前に Databricks に存在していたユーザー:

    • Okta にすでに存在する場合は、自動的に Okta ユーザーにリンクされ、電子メール アドレス (ユーザー名) に基づいて照合されます。

    • 既存のユーザーに手動でリンクするか、自動的に一致しない場合はOktaで新しいユーザーとして作成できます。

  • 個別に割り当てられ、グループのメンバーシップを通じて複製されたユーザー権限は、ユーザーのグループ メンバーシップが削除された後も残ります。

  • Databricksワークスペースから削除されたユーザーはそのワークスペースにアクセスできなくなりますが、他のDatabricksワークスペースには引き続きアクセスできる場合があります。

  • adminsグループは Databricks で予約されているグループであり、削除できません。

  • Databricks ではグループの名前を変更できません。Okta でもグループの名前を変更しないでください。

  • DatabricksグループAPIまたはグループ UIを使用して、任意のDatabricksワークスペース レベルのグループのメンバーのリストを取得できます。

  • Databricksユーザー名と電子メール アドレスを更新することはできません。