次の方法で共有


サービス プリンシパルを管理する

この記事では、Azure Databricks アカウントとワークスペースのサービス プリンシパルを作成し、管理する方法について説明します。

Azure Databricks ID モデルの概要については、「Azure Databricks の ID」を参照してください。

サービス プリンシパルのアクセスを管理するには、「認証とアクセス制御」を参照してください。

サービス プリンシパルとは

サービス プリンシパルは、自動化されたツール、ジョブ、アプリケーションで使用するための Azure Databricks で作成する ID です。 サービス プリンシパルを使用すると、自動化されたツールとスクリプトに Azure Databricks リソースへの API 専用のアクセスが提供されるため、ユーザーやグループを使用するよりもセキュリティが強化されます。

サービス プリンシパルによるリソースへのアクセスを許可したり制限したりするには、Azure Databricks ユーザーと同じ方法を使用します。 たとえば、次を実行できます。

  • サービス プリンシパル アカウント管理者とワークスペース管理者のロールを付与します。
  • Unity Catalog を使用してアカウント レベルまたはワークスペース レベルのデータへのアクセス権をサービス プリンシパルに付与します。
  • ワークスペース admins グループなど、アカウント レベルとワークスペース レベルの両方のグループにサービス プリンシパルを追加します

Azure Databricks のユーザー、サービス プリンシパル、およびグループに、サービス プリンシパルを使用するためのアクセス許可を付与することもできます。 これにより、ユーザーは自分の ID ではなく、サービス プリンシパルとしてジョブを実行できます。 また、ユーザーが組織を離れた場合やグループが変更された場合に、ジョブが失敗するのを防ぎます。

Azure Databricks ユーザーとは異なり、サービス プリンシパルは API 専用の ID です。これを使用して、Azure Databricks UI にアクセスすることはできません。

Databricks では、ワークスペースで ID フェデレーションを有効にすることをお勧めします。 ID フェデレーションを使うと、アカウント コンソールでサービス プリンシパルを構成してから、それらに特定のワークスペースへのアクセス権を割り当てることができます。 これにより、Azure Databricks の管理とデータ ガバナンスが簡略化されます。

重要

Databricks は、2023 年 11 月 9 日、アカウント全体で順次ロールアウトする ID フェデレーションと Unity Catalog の新しいワークスペースの自動有効化を開始しました。 既定で ID フェデレーションのワークスペースが有効になっている場合、ワークスペースは無効にできません。 詳細については、「Unity Catalog の自動有効化」を参照してください。

Databricks と Microsoft Entra ID サービス プリンシパル

サービス プリンシパルには、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルを指定できます。

Azure Databricks マネージド サービス プリンシパルは、Databricks OAuth 認証と個人用アクセス トークンを使って、Azure Databricks に対する認証を行うことができます。 Microsoft Entra ID マネージド サービス プリンシパルは、Databricks OAuth 認証と Microsoft Entra ID トークンを使用して Azure Databricks に対して認証を行うことができます。 サービス プリンシパルの認証について詳しくは、「サービス プリンシパルのトークンを管理する」をご覧ください。

Azure Databricks マネージド サービス プリンシパルは、Azure Databricks 内で直接管理されます。 Microsoft Entra ID マネージド サービス プリンシパルは、追加のアクセス許可が必要とされる Microsoft Entra ID 内で管理されます。 Databricks では、Azure Databricks の自動化に Azure Databricks マネージド サービス プリンシパルを使用し、Azure Databricks やその他の Azure リソースで同時に認証する必要がある場合は、Microsoft Entra ID マネージド サービス プリンシパルを使用することをお勧めします。

Azure Databricks マネージド サービス プリンシパルを作成するには、このセクションをスキップし、「サービス プリンシパルを管理および使用できるユーザー」をお読みください。

Azure Databricks で Microsoft Entra ID マネージドサービス プリンシパルを使うには、管理者ユーザーが Azure で Microsoft Entra ID アプリケーションを作成する必要があります。 Microsoft Entra ID マネージド サービス プリンシパルを作成するには、 MS Entra サービス プリンシパル認証を参照してください。

サービス プリンシパルを管理および使用できるユーザー

Azure Databricks でサービス プリンシパルを管理するには、アカウント管理者ロール、ワークスペース管理者ロール、またはサービス プリンシパルに対するマネージャーあるいはユーザー ロールのいずれかを持っている必要があります。

  • アカウント管理者は、アカウントにサービス プリンシパルを追加し、管理者ロールを割り当てることができます。 また、ワークスペースで ID フェデレーションが使用されていれば、そのワークスペースにサービス プリンシパルを割り当てることもできます。
  • ワークスペース管理者は、サービス プリンシパルを Azure Databricks ワークスペースに追加し、ユーザーにワークスペース管理者ロールを割り当てることができます。また、ワークスペース内のオブジェクトや機能へのアクセスを管理できます。たとえば、クラスターの作成や、指定されたペルソナベース環境へのアクセスなどです。
  • サービス プリンシパル マネージャーは、サービス プリンシパル上のロールを管理できます。 サービス プリンシパルの作成者はサービス プリンシパル マネージャーになります。 アカウント管理者は、アカウント内のすべてのサービス プリンシパルのサービス プリンシパル マネージャーです。

Note

2023 年 6 月 13 日より前にサービス プリンシパルが作成された場合、サービス プリンシパルの作成者は既定ではサービス プリンシパル マネージャー ロールを持ちません。 自分にサービス プリンシパル マネージャー ロールを付与するようにアカウント管理者に依頼してください。

サービス プリンシパル マネージャー ロールを持つユーザーは、サービス プリンシパル ユーザー ロールを継承しません。 サービス プリンシパルを作成した後でも、サービス プリンシパルを使用してジョブを実行する場合は、自分にサービス プリンシパル ユーザー ロールを明示的に割り当てる必要があります。

サービス プリンシパルにマネージャーおよびユーザーのロールを付与する方法については、「サービス プリンシパルを管理するためのロール」を参照してください。

アカウントのサービス プリンシパルを管理する

アカウント管理者は、アカウント コンソールを使用して、Azure Databricks アカウントにサービス プリンシパルを追加できます。

アカウント コンソールを使用してアカウントにサービス プリンシパルを追加する

サービス プリンシパルは、Azure Databricks 内に作成することも、既存の Microsoft Entra ID サービス プリンシパルからリンクすることもできます。 「Databricks と Microsoft Entra ID サービス プリンシパル」を参照してください。

  1. アカウント管理者として、アカウント コンソールにログインします。
  2. サイドバーで、[ユーザー管理] をクリックします。
  3. [サービス プリンシパル] タブで、[サービス プリンシパルの追加] をクリックします。
  4. [管理] で、[Databricks managed] (Databricks で管理) または [Microsoft Entra ID managed] (Microsoft Entra ID で管理) を選びます。
  5. [Microsoft Entra ID managed] (Microsoft Entra ID で管理) を選んだ場合は、[Microsoft Entra アプリケーション ID] に、サービス プリンシパルのアプリケーション (クライアント) ID を貼り付けます。
  6. サービス プリンシパルの名前を入力します。
  7. [追加] をクリックします。

サービス プリンシパルにアカウント管理者ロールを割り当てる

  1. アカウント管理者として、アカウント コンソールにログインします。
  2. サイドバーで、[ユーザー管理] をクリックします。
  3. [サービス プリンシパル] タブで、ユーザー名を見つけてクリックします。
  4. [ロール] タブで、[アカウント管理者] または [マーケットプレース管理者] をオンにします。

アカウント コンソールを使用してワークスペースにサービス プリンシパルを割り当てる

アカウント コンソールを使用してワークスペースにユーザーを追加するには、ワークスペースで ID フェデレーションが有効でなければなりません。 ワークスペース管理者は、ワークスペース管理者設定ページを使用して、サービス プリンシパルをワークスペースに割り当てることもできます。 詳細については、「ワークスペース管理者設定を使用してワークスペースにサービス プリンシパルを追加する」をご覧ください。

  1. アカウント管理者として、アカウント コンソールにログインします。
  2. サイドバーで、[ワークスペース] をクリックします。
  3. ワークスペース名をクリックします。
  4. [Permissions](アクセス許可) タブで [Add permissions](アクセス許可の追加) をクリックします。
  5. サービス プリンシパルを見つけて選択し、アクセス許可レベル (ワークスペース ユーザー、または管理者) を割り当てて、[保存] をクリックします。

アカウント コンソールを使用してワークスペースからサービス プリンシパルを削除する

アカウント コンソールを使用してワークスペースからサービス プリンシパルを削除するには、ワークスペースで ID フェデレーションが有効でなければなりません。 サービス プリンシパルがワークスペースから削除されると、そのサービス プリンシパルからそのワークスペースにアクセスできなくなりますが、アクセス許可はそのサービス プリンシパルに維持されます。 後でそのサービス プリンシパルがそのワークスペースに再び追加されると、以前のアクセス許可が回復します。

  1. アカウント管理者としてアカウント コンソールにログインします
  2. サイドバーで、[ワークスペース] をクリックします。
  3. ワークスペース名をクリックします。
  4. [アクセス許可] タブで、サービス プリンシパルを見つけます。
  5. サービス プリンシパル行の右端にある Kebab メニュー kebab メニューをクリックし、[削除] を選択します。
  6. 確認のダイアログ ボックスで [削除] をクリックします。

Azure Databricks アカウント内のサービス プリンシパルを非アクティブ化する

アカウント管理者は、Azure Databricks アカウント全体でサービス プリンシパルを非アクティブ化できます。 非アクティブ化されたサービス プリンシパルは、Azure Databricks アカウントまたはワークスペースに対して認証できません。 ただし、サービス プリンシパルのすべてのアクセス許可とワークスペース オブジェクトは変更されません。 サービス プリンシパルが非アクティブ化された場合、次のようになります。

  • サービス プリンシパルは、どの方法からもアカウントまたはワークスペースに対して認証できません。
  • サービス プリンシパルによって生成されたトークンを使用するアプリケーションまたはスクリプトは、Databricks API にアクセスできなくなります。 トークンは残りますが、サービス プリンシパルが非アクティブである間は認証に使用できません。
  • サービス プリンシパルによって所有されるクラスターは実行され続けます。
  • サービス プリンシパルによって作成されたスケジュール済みジョブは、新しい所有者に割り当てられない限り失敗します。

サービス プリンシパルは、再アクティブ化されると、同じアクセス許可を使って Azure Databricks にログインできます。 Databricks では、サービス プリンシパルの削除は破壊的なアクションであるため、サービス プリンシパルを削除する代わりにアカウントから非アクティブ化することをお勧めします。 非アクティブ化されたサービス プリンシパルの状態には、アカウント コンソールで [非アクティブ] というラベルが付けられます。 特定のワークスペースからサービス プリンシパルを非アクティブ化することもできます。 「Azure Databricks ワークスペース内のサービス プリンシパルを非アクティブ化する」を参照してください。

アカウント コンソールを使用してサービス プリンシパルを非アクティブ化することはできません。 代わりに、Account Service Principals API を使用します。

次に例を示します。

curl --netrc -X PATCH \
https://${DATABRICKS_HOST}/api/2.1/accounts/{account_id}/scim/v2/ServicePrincipals/{id} \
--header 'Content-type: application/scim+json' \
--data @update-sp.json \
| jq .

update-sp.json:

{
  "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
  "Operations": [
    {
      "op": "replace",
      "path": "active",
      "value": [
        {
          "value": "false"
        }
      ]
    }
  ]
}

Azure Databricks アカウントからサービス プリンシパルを削除する

アカウント管理者は、Azure Databricks アカウントからサービス プリンシパルを削除できます。 これをワークスペース管理者が行うことはできません。 アカウントからサービス プリンシパルを削除すると、そのプリンシパルはワークスペースからも削除されます。

重要

アカウントからサービス プリンシパルを削除すると、ID フェデレーションが有効になっているかどうかに関係なく、そのサービス プリンシパルはワークスペースからも削除されます。 アカウントレベルのサービス プリンシパルの削除は、それらによるアカウント内のすべてのワークスペースへのアクセスを禁止する場合を除き、行わないことをお勧めします。 サービス プリンシパルを削除した場合の次の結果に注意してください。

  • サービス プリンシパルによって生成されたトークンを使用するアプリケーションまたはスクリプトは、Databricks API にアクセスできなくなります
  • サービス プリンシパルによって所有されるジョブは失敗します
  • サービス プリンシパルによって所有されるクラスターは停止します
  • サービス プリンシパルによって作成され、"所有者として実行" 資格情報を使用して共有されるクエリまたはダッシュボードは、共有が失敗しないようにするには、新しい所有者に割り当てる必要があります

Microsoft Entra ID のサービス プリンシパルがアカウントから削除されると、そのサービス プリンシパルからそのアカウントまたはワークスペースにアクセスできなくなりますが、アクセス許可はそのサービス プリンシパルに維持されます。 後でそのサービス プリンシパルがそのアカウントに再び追加されると、以前のアクセス許可が回復します。

アカウント コンソールを使用してサービス プリンシパルを削除するには、次を行います。

  1. アカウント管理者として、アカウント コンソールにログインします。
  2. サイドバーで、[ユーザー管理] をクリックします。
  3. [サービス プリンシパル] タブで、ユーザー名を見つけてクリックします。
  4. [プリンシパル情報] タブで、右上角にある ケバブ メニュー ケバブ メニューをクリックし、[削除] を選択します。
  5. 確認ダイアログ ボックスで、[削除の確認] をクリックします。

ワークスペースのサービス プリンシパルを管理する

ワークスペース管理者は、ワークスペース管理者設定ページを使用して、ワークスペース内のサービス プリンシパルを管理できます。

ワークスペース管理者設定を使用してワークスペースにサービス プリンシパルを追加する

サービス プリンシパルは、Azure Databricks 内に作成することも、既存の Microsoft Entra ID サービス プリンシパルからリンクすることもできます。 「Databricks と Microsoft Entra ID サービス プリンシパル」を参照してください。

  1. ワークスペース管理者として、Azure Databricks ワークスペースにログインします。

  2. Azure Databricks ワークスペースの上部バーでユーザー名を選択し、[設定] を選択します。

  3. [ID およびアクセス管理] タブをクリックします。

  4. [サービス プリンシパル] の横にある [管理] をクリックします。

  5. [サービス プリンシパルの追加] をクリックします。

  6. ワークスペースに割り当てる既存のサービス プリンシパルを選択するか、[新規追加] をクリックして新しいサービス プリンシパルを追加します。

    新しいサービス プリンシパルを追加するには、[Databricks managed] (Databricks で管理) または [Microsoft Entra ID managed] (Microsoft Entra ID で管理) を選びます。 [Microsoft Entra ID managed] (Microsoft Entra ID で管理) を選んだ場合は、サービス プリンシパルのアプリケーション (クライアント) ID を貼り付けて、表示名を入力します。

  7. [追加] をクリックします。

Note

ワークスペースで ID フェデレーションが有効になっていない場合は、既存のアカウント サービス プリンシパルをワークスペースに割り当てることはできません。

ワークスペース管理者設定ページを使用してワークスペース管理者ロールをサービス プリンシパルに割り当てる

  1. ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
  2. Azure Databricks ワークスペースの上部バーでユーザー名を選択し、[設定] を選択します。
  3. [ID およびアクセス管理] タブをクリックします。
  4. [グループ] の横にある [管理] をクリックします。
  5. admins システム グループを選択します。
  6. [メンバーの追加] をクリックします。
  7. サービス プリンシパルを選択し、[確認] をクリックします。

サービス プリンシパルからワークスペース管理者ロールを削除するには、管理者グループからサービス プリンシパルを削除します。

Azure Databricks ワークスペース内のサービス プリンシパルを非アクティブ化する

ワークスペース管理者は、Azure Databricks ワークスペース内のサービス プリンシパルを非アクティブ化できます。 非アクティブ化されたサービス プリンシパルは、Azure Databricks API からワークスペースにアクセスできませんが、サービス プリンシパルのすべてのアクセス許可とワークスペース オブジェクトは変更されません。 サービス プリンシパルが非アクティブ化された場合:

  • サービス プリンシパルは、どの方法からもワークスペースに対して認証できません。
  • サービス プリンシパルの状態は、ワークスペース管理者設定ページで [非アクティブ] と表示されます。
  • サービス プリンシパルによって生成されたトークンを使用するアプリケーションまたはスクリプトは、Databricks API にアクセスできなくなります。 トークンは残りますが、サービス プリンシパルが非アクティブである間は認証に使用できません。
  • サービス プリンシパルによって所有されるクラスターは実行され続けます。
  • サービス プリンシパルによって作成されたスケジュールされたジョブは、失敗しないように新しい所有者に割り当てる必要があります。

サービス プリンシパルは、再アクティブ化されると、同じアクセス許可でワークスペースに対する認証を行うことができます。 Databricks では、サービス プリンシパルの削除は破壊的なアクションであるため、サービス プリンシパルを削除する代わりに非アクティブ化することをお勧めします。

  1. ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
  2. Azure Databricks ワークスペースの上部バーでユーザー名を選択し、[設定] を選択します。
  3. [ID およびアクセス管理] タブをクリックします。
  4. [サービス プリンシパル] の横にある [管理] をクリックします。
  5. 非アクティブ化するサービス プリンシパルを選択します。
  6. [状態]で、[アクティブ] をオフにします。

サービス プリンシパルをアクティブに設定するには、同じ手順を実行しますが、代わりにチェック ボックスをオンにします。

ワークスペース管理者設定ページを使用してワークスペースからサービス プリンシパルを削除する

ワークスペースからサービス プリンシパルを削除しても、アカウントからサービス プリンシパルは削除されません。 アカウントからサービス プリンシパルを削除するには、「Azure Databricks アカウントからサービス プリンシパルを削除する」を参照してください。

サービス プリンシパルがワークスペースから削除されると、そのサービス プリンシパルからそのワークスペースにアクセスできなくなりますが、アクセス許可はそのサービス プリンシパルに維持されます。 後でそのサービス プリンシパルがワークスペースに再び追加されると、以前のアクセス許可が回復します。

  1. ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
  2. Azure Databricks ワークスペースの上部バーでユーザー名を選択し、[設定] を選択します。
  3. [ID およびアクセス管理] タブをクリックします。
  4. [サービス プリンシパル] の横にある [管理] をクリックします。
  5. サービス プリンシパルを選択します。
  6. 右上隅の [削除] をクリックします。
  7. [削除] をクリックして確定します。

API を使用してサービス プリンシパルを管理する

アカウント管理者とワークスペース管理者は、Databricks API を使用して、Azure Databricks のアカウントとワークスペース内のサービス プリンシパルを管理できます。 API を使ったサービス プリンシパルのロールの管理については、「Databricks CLI を使用してサービス プリンシパルのロールを管理する」をご覧ください。

API を使用してアカウント内のサービス プリンシパルを管理する

管理者は、Account Service Principals API を使用して、Azure Databricks アカウントでサービス プリンシパルを追加および管理できます。 アカウント管理者とワークスペース管理者は、別のエンドポイント URL を使用して API を呼び出します。

  • アカウント管理者は {account-domain}/api/2.1/accounts/{account_id}/scim/v2/ を使用します。
  • ワークスペース管理者は {workspace-domain}/api/2.0/account/scim/v2/ を使用します。

詳細については、「Account Service Principals API」を参照してください。

API を使用してアカウント内のサービス プリンシパルを管理する

アカウント管理者とワークスペース管理者は、Workspace Assignment API を使用して、ID フェデレーションが有効なワークスペースにサービス プリンシパルを割り当てることができます。 Workspace Assignment API は、Azure Databricks のアカウントとワークスペースでサポートされています。

  • アカウント管理者は {account-domain}/api/2.0/accounts/{account_id}/workspaces/{workspace_id}/permissionassignments を使用します。
  • ワークスペース管理者は {workspace-domain}/api/2.0/preview/permissionassignments/principals/{principal_id} を使用します。

ワークスペース割り当て API」を参照してください。

ワークスペースで ID フェデレーションが有効でない場合、ワークスペース管理者はワークスペース レベルの API を使用して、ワークスペースにサービス プリンシパルを割り当てることができます。 「Workspace Service Principals API」をご覧ください。

サービス プリンシパルのトークンを管理する

サービス プリンシパルは、次のように Azure Databricks OAuth トークンまたは Azure Databricks 個人用アクセス トークンを使って、Azure Databricks 上の API に対する認証を行うことができます。

  • Azure Databricks OAuth トークンは、Azure Databricks のアカウント レベルおよびワークスペース レベルの API に対する認証に使用できます。
    • Azure Databricks のアカウント レベルで作成される Azure Databricks OAuth トークンは、Azure Databricks のアカウント レベルおよびワークスペース レベルの API に対する認証に使用できます。
    • Azure Databricks のワークスペース レベルで作成される Azure Databricks OAuth トークンは、Azure Databricks ワークスペース レベルの API に対する認証にのみ使用できます。
  • Azure Databricks 個人用アクセス トークンは、Azure Databricks ワークスペース レベルの API に対する認証にのみ使用できます。

サービス プリンシパルの Databricks OAuth 認証を管理する

アカウントレベルとワークスペースレベルの Databricks REST API に対して認証するために、アカウント管理者はサービス プリンシパルに Azure Databricks OAuth トークンを使用できます。 サービス プリンシパルのクライアント ID とクライアント シークレットを使って、OAuth トークンを要求できます。 詳細については、「OAuth(OAuth M2M)を使用してサービスプリンシパルで Azure Databricks へのアクセスを認証する」を参照してください。

関連項目