Manage サービスプリンシパル
この記事では、Databricksアカウントおよびワークスペース用のサービスプリンシパルを作成および管理する方法について説明します。
Databricks ID モデルの概要については、「 Databricks ID」を参照してください。
サービスプリンシパルのアクセスを管理するには、「 認証とアクセス制御」を参照してください。
サービスプリンシパルとは?
サービスプリンシパルは、自動化ツール、ジョブ、アプリケーションで使用するために、お客様がDatabricksで作成するIDです。サービスプリンシパルは、自動化ツールとスクリプトにDatabricksリソースへのAPI専用のアクセス権を提供し、ユーザーやグループを使用するよりも優れたセキュリティを実現します。
サービスプリンシパルのリソースへのアクセス権は、Databricksユーザーと同じ方法で付与および制限できます。例として、次の手順を実行します。
- サービスプリンシパルアカウントの管理者ロールとワークスペース管理者ロールを付与します。
- Unity Catalogを使用したアカウントレベルまたはワークスペースレベルで、サービスプリンシパルにデータへのアクセス権を付与します。
- サービスプリンシパルをグループ に追加するには、アカウント レベルとワークスペース レベルの両方 (ワークスペース
admins
グループを含む)。
また、 Databricks ユーザー、サービスプリンシパル、およびグループにサービスプリンシパルを使用するためのアクセス許可を付与することもできます。 これにより、ユーザーは自分のIDとしてではなく、サービスプリンシパルとしてジョブを実行できます。 これにより、ユーザーが組織を離れたり、グループが変更されたりした場合にジョブが失敗するのを防ぐことができます。
Databricksユーザーとは異なり、サービスプリンシパルはAPIのみのIDです。データブリックUIへのアクセスには使用できません。
Databricks では、ワークスペースで ID フェデレーションを有効にすることをお勧めします。 Identity Federation を使用すると、アカウント コンソールでサービスプリンシパルを構成し、特定のワークスペースへのアクセス権を割り当てることができます。 これにより、Databricks の管理とデータガバナンスが簡素化されます。
Databricks は、2023 年 11 月 8 日に ID フェデレーションと Unity Catalog の新しいワークスペースを自動的に有効にし始め、アカウント全体で徐々にロールアウトが進んでいます。 ワークスペースで ID フェデレーションがデフォルトで有効になっている場合、無効にすることはできません。 詳細については、「Unity Catalogの自動有効化」を参照してください。
サービスプリンシパルを管理および使用できるのは誰ですか?
Databricksでサービスプリンシパルを管理するには、アカウント admin ロール、ワークスペース admin ロール、またはサービスプリンシパルの manager または user ロールのいずれかが必要です。
- アカウント管理者 は、サービスプリンシパルをアカウントに追加し、管理者ロールを割り当てることができます。 また、ワークスペースが ID フェデレーションを使用している限り、サービスプリンシパルをワークスペースに割り当てることもできます。
- ワークスペース 管理者は 、 Databricks ワークスペースにサービスプリンシパルを追加し、ワークスペース管理者ロールを割り当て、ワークスペース内のオブジェクトと機能へのアクセス (クラスターの作成や指定されたペルソナベースの環境へのアクセスなど) を管理できます。
- サービスプリンシパル管理者 は、サービスプリンシパル上のロールを管理できます。 サービスプリンシパルの作成者は、サービスプリンシパル マネージャーになります。 アカウント admins は、アカウント内のすべてのサービスプリンシパルのサービスプリンシパル マネージャーです。
サービスプリンシパルが 2023 年 6 月 13 日より前に作成された場合、サービスプリンシパルの作成者は、デフォルトでサービスプリンシパル マネージャー ロールを持ちません。 アカウント管理者にサービスプリンシパル マネージャーの役割を付与するよう依頼してください。
サービスプリンシパル Manager ロールを持つユーザーは、 サービスプリンシパル User ロールを継承しません。サービスプリンシパルを使用してジョブを実行する場合は、サービスプリンシパルを作成した後でも、サービスプリンシパルユーザーロールを明示的に割り当てる必要があります。
-
サービスプリンシパル ユーザーは 、サービスプリンシパルとしてジョブを実行できます。 ジョブは、ジョブ所有者の ID ではなく、サービスプリンシパルの ID を使用して実行されます。 詳細については 、「 Databricks ジョブの ID、アクセス許可、特権の管理」を参照してください。
サービスプリンシパル ワークスペース管理者であるユーザーは、サービスプリンシパルに代わってトークンを作成することもできます。
ワークスペースの RestrictWorkspaceAdmins
設定が ALLOW ALL
に設定されている場合、ワークスペース管理者は、ワークスペース内の任意のサービスプリンシパルに代わって個人用アクセス トークンを作成できます。 「ワークスペース管理者を制限する」を参照してください。
サービスプリンシパル マネージャーとユーザー ロールを付与する方法については、「 サービスプリンシパルを管理するためのロール」を参照してください。
Manage サービスプリンシパル in your account
アカウント 管理者は、アカウント コンソールを使用して、 Databricks アカウントにサービスプリンシパルを追加できます。
アカウントコンソールを使用してアカウントにサービスプリンシパルを追加する
- アカウント管理者として、アカウントコンソールにログインします。
- サイドバーで、[ ユーザー管理 ] をクリックします。
- [ サービスプリンシパル ] タブで、[ サービスプリンシパルの追加 ] をクリックします。
- サービスプリンシパルの名前を入力します。
- [ 追加 ] をクリックします。
アカウント admin ロールをサービスプリンシパルに割り当てる
- アカウント管理者として、アカウントコンソールにログインします。
- サイドバーで、[ ユーザー管理 ] をクリックします。
- [ サービスプリンシパル ] タブで、ユーザー名を見つけてクリックします。
- [ ロール ] タブで、[ Marketplace管理者 ] または [ アカウント管理者 ] をオンにします。
アカウントコンソールを使用してサービスプリンシパルをワークスペースに割り当てる
アカウントコンソールを使用してワークスペースにユーザーを追加するには、ワークスペースでIDフェデレーションが有効になっている必要があります。ワークスペース 管理者は、ワークスペース管理者設定ページを使用して、サービスプリンシパルをワークスペースに割り当てることもできます。 詳細については、「 ワークスペース管理設定を使用してサービスプリンシパルをワークスペースに追加する」を参照してください。
- アカウント管理者として、アカウントコンソールにログインします。
- サイドバーで、「 ワークスペース 」をクリックします。
- ワークスペース名をクリックします。
- [ 権限 ] タブで、[ 権限を追加 ] をクリックします。
- サービスプリンシパルを検索して選択し、権限レベル(ワークスペース ユーザー または 管理者 )を割り当て、[ 保存 ] をクリックします。
アカウントコンソールを使用してワークスペースからサービスプリンシパルを削除する
アカウントコンソールを使用してワークスペースからサービスプリンシパルを削除するには、ワークスペースで ID フェデレーションを有効にする必要があります。 サービスプリンシパルがワークスペースから削除されると、サービスプリンシパルはワークスペースにアクセスできなくなりますが、サービスプリンシパルの権限は維持されます。 サービスプリンシパルが後でワークスペースに再度追加された場合、以前のアクセス許可が回復します。
- アカウント管理者として、アカウントコンソールにログインします
- サイドバーで、「 ワークスペース 」をクリックします。
- ワークスペース名をクリックします。
- [ 権限 ] タブで、サービスプリンシパルを見つけます。
- サービスプリンシパル行の右端にある
ケバブメニューをクリックし、[ 削除 ] を選択します。
- 確認ダイアログで、 削除の確認 をクリックします。
Databricksアカウントでサービスプリンシパルを無効にする
アカウント 管理者は、 Databricks アカウント全体でサービスプリンシパルを無効にすることができます。 非アクティブ化されたサービスプリンシパルは、 Databricks アカウントまたはワークスペースに対して認証できません。 ただし、サービスプリンシパルの権限とワークスペースオブジェクトはすべて変更されません。 サービスプリンシパルが非アクティブ化されると、次のことが当てはまります。
- サービスプリンシパルは、どの方法からもアカウントまたはそのワークスペースに対して認証することはできません。
- サービスプリンシパルによって生成されたトークンを使用するアプリケーションまたはスクリプトは、 Databricks APIにアクセスできなくなりました。 トークンは残りますが、サービスプリンシパルが非アクティブ化されている間は認証には使用できません。
- サービスプリンシパルが所有するクラスターは、引き続き実行されます。
- サービスプリンシパルによって作成されたスケジュールされたジョブは、新しい所有者に割り当てられない限り失敗します。
サービスプリンシパルが再アクティブ化されると、同じ権限で Databricks にログインできます。 Databricks 、サービスプリンシパルを削除することは破壊的なアクションであるため、サービスプリンシパルを削除するのではなく、アカウントから非アクティブ化することをお勧めします。 非アクティブ化されたサービスプリンシパルのステータスは、アカウントコンソールで 「非アクティブ 」と表示されます。 特定のワークスペースからサービスプリンシパルを非アクティブ化することもできます。 「Databricksワークスペースでサービスプリンシパルを非アクティブ化する」を参照してください。
アカウントコンソールを使用してサービスプリンシパルを非アクティブ化することはできません。 代わりに、アカウント サービスプリンシパル 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"
}
]
}
]
}
Databricksアカウントからサービスプリンシパルを削除する
アカウント管理者は、サービスプリンシパルをDatabricksアカウントから削除できます。ワークスペース管理者にはその権限がありません。サービスプリンシパルをアカウントから削除すると、そのプリンシパルはワークスペースからも削除されます。
サービスプリンシパルをアカウントから削除すると、ID フェデレーションが有効になっているかどうかに関係なく、そのサービスプリンシパルもワークスペースから削除されます。 アカウントレベルのサービスプリンシパルは、アカウント内のすべてのワークスペースへのアクセスを失う場合を除き、削除しないことをお勧めします。 サービスプリンシパルを削除すると、次の結果が発生することに注意してください。
- サービスプリンシパルによって生成されたトークンを使用するアプリケーションまたはスクリプトは、Databricks APIsにアクセスできなくなりました
- サービスプリンシパルが所有するジョブが失敗する
- クラスター owned by the サービスプリンシパル stop
- サービスプリンシパルによって作成され、所有者として実行資格情報を使用して共有されたクエリまたはダッシュボードは、共有が失敗するのを防ぐために、新しい所有者に割り当てる必要があります
アカウントコンソールを使用してサービスプリンシパルを削除するには、次の操作を行います。
- アカウント管理者として、アカウントコンソールにログインします。
- サイドバーで、[ ユーザー管理 ] をクリックします。
- [ サービスプリンシパル ] タブで、ユーザー名を見つけてクリックします。
- [ プリンシパル情報 ] タブで、右上隅にある
ケバブメニューをクリックし、[ 削除 ] を選択します。
- 確認ダイアログボックスで、[ 削除を確認 ] をクリックします。
Manage サービスプリンシパル in your workspace
ワークスペース 管理者は、ワークスペース管理者設定ページを使用して、ワークスペース内のサービスプリンシパルを管理できます。
ワークスペース管理設定を使用して、サービスプリンシパルをワークスペースに追加する
- ワークスペース管理者として、Databrickワークスペースにログインします。
- Databricksワークスペースの上部のバーにあるユーザー名をクリックし、 [設定] を選択します。
- [ IDとアクセス ] タブをクリックします。
- サービスプリンシパル の横にある [ 管理 ] をクリックします。
- [ サービスプリンシパルの追加 ] をクリックします。
- 既存のサービスプリンシパルを選択してワークスペースに割り当てるか、[ 新規追加 ] をクリックして新しいサービスプリンシパルを作成します。
- [ 追加 ] をクリックします。
ワークスペースで ID フェデレーションが有効になっていない場合、既存のアカウント サービスプリンシパルをワークスペースに割り当てることはできません。
ワークスペース管理者設定ページを使用して、ワークスペース管理者ロールをサービスプリンシパルに割り当てます
- ワークスペース管理者として、Databrickワークスペースにログインします。
- Databricksワークスペースの上部のバーにあるユーザー名をクリックし、 [設定] を選択します。
- [ IDとアクセス ] タブをクリックします。
- [グループ] の横にある [管理] をクリックします。
admins
システムグループを選択します。- [ メンバーを追加 ]をクリックします。
- サービスプリンシパルを選択し、[ 確定 ] をクリックします。
サービスプリンシパルからワークスペース管理者ロールを削除するには、管理者グループからサービスプリンシパルを削除します。
Databricksワークスペースでサービスプリンシパルを非アクティブ化する
ワークスペース 管理者は、 Databricks ワークスペースでサービスプリンシパルを非アクティブ化できます。 非アクティブ化されたサービスプリンシパルは、 Databricks APIsからワークスペースにアクセスできませんが、サービスプリンシパルのすべての権限とワークスペースオブジェクトは変更されません。 サービスプリンシパルが非アクティブ化されている場合:
- サービスプリンシパルは、どの方法からでもワークスペースに対して認証することはできません。
- サービスプリンシパルのステータスは、ワークスペース管理設定ページで 非アクティブ と表示されます。
- サービスプリンシパルによって生成されたトークンを使用するアプリケーションまたはスクリプトは、 Databricks APIにアクセスできなくなります。 トークンは残りますが、サービスプリンシパルが非アクティブ化されている間は認証には使用できません。
- サービスプリンシパルが所有するクラスターは、引き続き実行されます。
- サービスプリンシパルによって作成されたスケジュールされたジョブは、失敗を防ぐために新しい所有者に割り当てる必要があります。
サービスプリンシパルが再アクティブ化されると、同じアクセス許可でワークスペースに対して認証できます。 Databricks では、サービスプリンシパルを削除することは破壊的なアクションであるため、サービスプリンシパルを削除するのではなく、非アクティブ化することをお勧めします。
- ワークスペース管理者として、Databrickワークスペースにログインします。
- Databricksワークスペースの上部のバーにあるユーザー名をクリックし、 [設定] を選択します。
- [ IDとアクセス ] タブをクリックします。
- サービスプリンシパル の横にある [ 管理 ] をクリックします。
- 非アクティブ化するサービスプリンシパルを選択します。
- [ステータス ] で [ アクティブ ] のチェックを外します。
サービスプリンシパルをアクティブに設定するには、同じ手順を実行しますが、代わりにチェックボックスにチェックを入れます。
ワークスペース管理設定ページを使用して、ワークスペースからサービスプリンシパルを削除する
ワークスペースからサービスプリンシパルを削除しても、アカウントからサービスプリンシパルは削除されません。 アカウントからサービスプリンシパルを削除するには、「Databricksアカウントからサービスプリンシパルを削除する」を参照してください。
サービスプリンシパルがワークスペースから削除されると、サービスプリンシパルはワークスペースにアクセスできなくなりますが、サービスプリンシパルの権限は維持されます。 サービスプリンシパルが後でワークスペースに再度追加された場合、以前のアクセス許可が回復します。
- ワークスペース管理者として、Databrickワークスペースにログインします。
- Databricksワークスペースの上部のバーにあるユーザー名をクリックし、 [設定] を選択します。
- [ IDとアクセス ] タブをクリックします。
- サービスプリンシパル の横にある [ 管理 ] をクリックします。
- サービスプリンシパルを選択します。
- 右上隅の [削除 ] をクリックします。
- [ 削除 ] をクリックして確定します。
APIを使用してサービスプリンシパルを管理する
アカウント管理者とワークスペース管理者は、 DatabricksAPIを使用してDatabricks アカウント とワークスペースでサービスプリンシパルを管理できます。APIを使用してサービスプリンシパルのロールを管理するには、「Databricks CLIを使用したサービスプリンシパルロールの管理」を参照してください。
APIを使用してアカウント内のサービスプリンシパルを管理します
管理者は、アカウント サービスプリンシパル を使用して、 アカウントにサービスプリンシパルを追加および管理できます。DatabricksAPIアカウント管理者とワークスペース管理者は、別のエンドポイント URL を使用して API を呼び出します。
- アカウント管理者は
{account-domain}/api/2.1/accounts/{account_id}/scim/v2/
を使用します。 - ワークスペース管理者は
{workspace-domain}/api/2.0/account/scim/v2/
を使用します。
詳細については、アカウント サービスプリンシパル APIを参照してください。
APIを使用してワークスペースでサービスプリンシパルを管理する
アカウント と ワークスペース の管理者は、ワークスペースの割り当て API を使用して、ID フェデレーションが有効になっているワークスペースにサービスプリンシパルを割り当てることができます。 ワークスペースの割り当て API は、 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 フェデレーションが有効になっていない場合、ワークスペース管理者はワークスペース レベルの APIs を使用して、サービスプリンシパルをワークスペースに割り当てることができます。 ワークスペース サービスプリンシパル APIを参照してください。
サービスプリンシパルのトークンを管理する
サービスプリンシパルは、次のように、APIs DatabricksDatabricksOAuthトークンまたはDatabricks パーソナルアクセストークンを使用して、 で に対して認証できます。
-
DatabricksOAuthトークンは、アカウントレベルおよびワークスペースレベルのDatabricks APIs認証するために使用できます。
- DatabricksOAuthDatabricksアカウントDatabricks レベルで作成される トークンは、 アカウント レベルおよびワークスペース レベルのAPIs に対する認証に使用できます。
- ワークスペース レベルで作成されたDatabricksOAuth トークンは、DatabricksDatabricks ワークスペース レベルのAPIs に対する認証にのみ使用できます。
-
Databricks個人用アクセストークンは、 Databricksワークスペース レベルのAPIsに対してのみ認証に使用できます。
サービスプリンシパルの Databricks OAuth 認証を管理する
アカウント レベルおよびワークスペース レベルの Databricks REST APIsに対して認証するために、アカウント管理者はサービスプリンシパルの Databricks OAuth トークンを使用できます。 OAuthトークンは、サービスプリンシパルのクライアント ID とクライアントシークレットを使用してリクエストできます。詳細については、「Databricksを使用してサービスプリンシパルを使用して リソースへの無人アクセスを承認OAuth する」を参照してください。
関連項目
- または を使用する開発者としてサービスプリンシパルを操作する方法の詳細については、「DatabricksCLIDatabricksRESTAPIs Databricksを使用してサービスプリンシパルを使用して リソースへの無人アクセスを承認OAuth する」を参照してください。