サービス プリンシパルを使用して Azure Databricks(OAuth M2M) による認証を行う

この記事では、Azure Databricks サービス プリンシパルを作成し、それを使用するか、Microsoft Entra ID マネージド サービス プリンシパルを使用して、ターゲット エンティティに対して認証する方法について説明します。

Note

サービス プリンシパル用の Azure Databricks OAuth 資格情報を管理するには、Azure Databricks アカウント管理者である必要があります。

手順 1: Azure アカウントに Microsoft Entra ID サービス プリンシパルを作成する

Microsoft Entra ID サービス プリンシパルを Azure Databricks アカウント、ワークスペース、またはその両方にリンクする場合は、この手順を完了してください。 そうでない場合は、手順 2 へスキップしてください。

  1. Azure portal にサインインします。

    Note

    使用するポータルは、Microsoft Entra ID アプリケーションが Azure パブリック クラウド、各国のクラウドまたはソブリン クラウドのいずれで実行されるかによって異なります。 詳細については、各国のクラウドに関する記事をご覧ください。

  2. 複数のテナント、サブスクリプション、またはディレクトリにアクセスできる場合は、上部のメニューの [ディレクトリ + サブスクリプション] (フィルター付きのディレクトリ) アイコンをクリックして、サービス プリンシパルをプロビジョニングするディレクトリに切り替えます。

  3. [リソース、サービス、ドキュメントの検索] で「Microsoft Entra ID」を検索して選びます。

  4. [+ 追加] をクリックし、[アプリの登録] を選びます。

  5. [名前] にアプリケーションの名前を入力します。

  6. [サポートされているアカウントの種類] セクションで、[この組織ディレクトリのみに含まれるアカウント (シングル テナント)] を選択します。

  7. [登録] をクリックします。

  8. アプリケーション ページの [概要] ページの [要点] セクションで、次の値をコピーします。

    • アプリケーション (クライアント) ID
    • ディレクトリ (テナント) ID

    Azure 登録済みアプリの概要

  9. クライアント シークレットを生成するには、[管理] 内で、[証明書とシークレット] をクリックします。

    Note

    このクライアント シークレットを使って、Azure Databricks で Microsoft Entra ID サービス プリンシパルを認証するための Microsoft Entra ID トークンを生成します。 Azure Databricks ツールまたは SDK が Microsoft Entra ID トークンを使用できるかどうかを確認するには、ツールまたは SDK のドキュメントを参照してください。

  10. [クライアント シークレット] タブで、[新しいクライアント シークレット] をクリックします。

    新しいクライアント シークレット

  11. [クライアントシークレットの追加] ウィンドウの [説明] に、クライアント シークレットの説明を入力します。

  12. [有効期限] で、クライアント シークレットの有効期限の期間を選択して、[追加] をクリックします。

  13. クライアント シークレットの をコピーし、安全な場所に保存します。このクライアント シークレットはアプリケーションのパスワードです。

手順 2: サービス プリンシパルを Azure Databricks アカウントに追加する

この手順は、ターゲットの Azure Databricks ワークスペースで ID フェデレーションが有効な場合にのみ機能します。 ワークスペースで ID フェデレーションが有効になっていない場合は、手順 3 に進んでください。

  1. Azure Databricks ワークスペースの上部バーでユーザー名をクリックし、[アカウントを管理する] をクリックします。

    または、https://accounts.azuredatabricks.net で Azure Databricks アカウント コンソールに直接移動します。

  2. ダイアログが表示されたら、Azure Databricks アカウントにサインインします。

  3. サイドバーで、[ユーザー管理] をクリックします。

  4. [サービス プリンシパル] タブをクリックします。

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

  6. [管理] で、[Databricks managed] (Databricks で管理) または [Microsoft Entra ID managed] (Microsoft Entra ID で管理) を選びます。

  7. [Microsoft Entra ID マネージド] を選択した場合は、[Microsoft Entra アプリケーション ID] に、手順 1 のアプリケーション (クライアント) ID の値を貼り付けます。

  8. サービス プリンシパルの名前を入力します。

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

  10. (省略可能) サービス プリンシパルにアカウント レベルのアクセス許可を割り当てます。

    1. [サービス プリンシパル] タブで、サービス プリンシパルの名前をクリックします。
    2. [ロール] タブで、このサービス プリンシパルに必要な各ターゲット ロールを有効または無効に切り替えます。
    3. [アクセス許可] タブで、このサービス プリンシパルを管理して使用する Azure Databricks ユーザー、サービス プリンシパル、アカウント グループ ロールにアクセス権を付与します。 「サービス プリンシパルのロールを管理する」を参照してください。

手順 3: サービス プリンシパルを Azure Databricks ワークスペースに追加する

ワークスペースで ID フェデレーションが有効になっている場合は、次のようにします。

  1. Azure Databricks ワークスペースの上部バーでユーザー名をクリックし、[設定] をクリックします。
  2. [ID およびアクセス管理] タブをクリックします。
  3. [サービス プリンシパル] の横にある [管理] をクリックします。
  4. [サービス プリンシパルの追加] をクリックします。
  5. 手順 2 のサービス プリンシパルを選択し、[追加] をクリックします。

手順 4 に進んでください。

ワークスペースで ID フェデレーションが有効になっていない場合は、次のようにします。

  1. Azure Databricks ワークスペースの上部バーでユーザー名をクリックし、[設定] をクリックします。
  2. [ID およびアクセス管理] タブをクリックします。
  3. [サービス プリンシパル] の横にある [管理] をクリックします。
  4. [サービス プリンシパルの追加] をクリックします。
  5. [新規追加] をクリックします。
  6. [管理] で、[Databricks managed] (Databricks で管理) または [Microsoft Entra ID managed] (Microsoft Entra ID で管理) を選びます。
  7. [Microsoft Entra ID マネージド] を選択した場合は、[Microsoft Entra アプリケーション ID] に、手順 1 のアプリケーション (クライアント) ID の値を貼り付けます。
  8. 新しいサービス プリンシパルの [表示名] を入力し、[追加] をクリックします。

手順 4: サービス プリンシパルにワークスペース レベルのアクセス許可を割り当てる

  1. ワークスペースの管理コンソールがまだ開いていない場合は、上部のバーでユーザー名をクリックし、[設定] をクリックします。
  2. [ID およびアクセス管理] タブをクリックします。
  3. [サービス プリンシパル] の横にある [管理] をクリックします。
  4. サービス プリンシパルの名前をクリックして設定ページを開きます。
  5. [構成] タブで、このワークスペースに対してサービス プリンシパルに付与する各エンタイトルメントの横にあるボックスを有効にし、[更新] をクリックします。
  6. [アクセス許可] タブで、このサービス プリンシパルを管理して使用する Azure Databricks ユーザー、サービス プリンシパル、グループにアクセス権を付与します。 「サービス プリンシパルのロールを管理する」を参照してください。

手順 5: サービス プリンシパルの Azure Databricks OAuth シークレットを作成する

OAuth を使用して Azure Databricks への認証を行う前に、まず OAuth アクセス トークンの生成に使用することができる OAuth シークレットを作成する必要があります。 サービス プリンシパルには、最大 5 つの OAuth シークレットを含めることができます。

アカウント コンソールからサービス プリンシパルの OAuth シークレットを作成するには、以下の手順を実行します。

  1. https://accounts.azuredatabricks.net で Azure Databricks アカウント コンソール にサインインします。
  2. ダイアログが表示されたら、Azure Databricks アカウントにサインインします。
  3. サイドバーで、[ユーザー管理] をクリックします。
  4. [サービス プリンシパル] タブをクリックします。
  5. サービス プリンシパルの名前をクリックします。
  6. [プリンシパル情報] タブの [OAuth シークレット] セクションで、[シークレットの生成] をクリックします。
  7. この OAuth シークレットはサービス プリンシパルのパスワードであるため、[シークレットの生成] ダイアログで、 シークレット の値をコピーして安全な場所に保存します。
  8. [Done] をクリックします。

ワークスペースからサービス プリンシパルの OAuth シークレットを作成するには、以下の手順を実行します。

  1. ワークスペース管理者として、上部バーでユーザー名をクリックし、[設定] をクリックします。

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

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

  4. サービス プリンシパルの名前をクリックして設定ページを開きます。

  5. [シークレット] タブをクリックします。

  6. [OAuth シークレット] で、[シークレットの生成] をクリックします。

  7. 表示されたシークレットクライアント ID をコピーし、[完了] をクリックします。

    シークレットは作成時に 1 回表示されるだけです。 クライアント ID は、サービス プリンシパルの アプリケーション ID と同じです。

Note

サービス プリンシパルでクラスターまたは SQL ウェアハウスを使用できるようにするには、それらへのアクセス権をサービス プリンシパルに付与する必要があります。 「コンピューティングのアクセス許可」または「SQL ウェアハウスを管理する」を参照してください。

OAuth M2M 認証の構成を完了する

OAuth M2M 認証の構成を完了するには、次の関連する環境変数、.databrickscfg フィールド、Terraform フィールド、または Config フィールドを設定する必要があります。

  • Azure Databricks ホスト。アカウント操作の場合は https://accounts.azuredatabricks.net として指定し、ワークスペース操作の場合は、ターゲット ワークスペースごとの URL として指定します (例: https://adb-1234567890123456.7.azuredatabricks.net)。
  • Azure Databricks アカウント ID (Azure Databricks アカウント操作の場合)。
  • サービス プリンシパルのクライアント ID。
  • サービス プリンシパル シークレット。

OAuth M2M 認証を実行するには、関与するツールまたは SDK に基づいて、コード内に以下を統合します。

Environment

ツールまたは SDK で特定の Azure Databricks 認証の種類に環境変数を使用するには、「Azure Databricks ツールと API の認証」またはツールまたは SDK のドキュメントを参照してください。 クライアント統合認証の環境変数とフィールド、およびクライアント統合認証のデフォルトの認証方法も参照してください。

アカウントレベルの操作の場合、次の環境変数を設定します。

  • DATABRICKS_HOST (Azure Databricks アカウント コンソールの URL https://accounts.azuredatabricks.net に設定されます)。
  • DATABRICKS_ACCOUNT_ID
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

ワークスペースレベルの操作の場合は、次の環境変数を設定します。

  • DATABRICKS_HOST。対象の Azure Databricks のワークスペースごとの URL に設定されます (例: https://adb-1234567890123456.7.azuredatabricks.net)。
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

プロファイル

.databrickscfg ファイルで次のフィールドを使用して、Azure Databricks 構成プロファイルを作成または識別します 。 プロファイルを作成する場合は、プレースホルダーを適切な値に置き換えます。 ツールまたは SDK でプロファイルを使用するには、「Azure Databricks ツールと API の認証」またはツールまたは SDK のドキュメントを参照してください。 クライアント統合認証の環境変数とフィールド、およびクライアント統合認証のデフォルトの認証方法も参照してください。

アカウントレベルの操作の場合、.databrickscfg ファイルで次の値を設定します。 この場合、Azure Databricks アカウント コンソール の URL は https://accounts.azuredatabricks.net です。

[<some-unique-configuration-profile-name>]
host          = <account-console-url>
account_id    = <account-id>
client_id     = <service-principal-client-id>
client_secret = <service-principal-secret>

ワークスペース レベルの操作の場合は、.databrickscfg ファイルに次の値を設定します。 この場合、ホストは Azure Databricks のワークスペースごとの URL です (例: https://adb-1234567890123456.7.azuredatabricks.net)。

[<some-unique-configuration-profile-name>]
host          = <workspace-url>
client_id     = <service-principal-client-id>
client_secret = <service-principal-secret>

CLI

Databricks CLI の場合は、次のいずれかを行います。

  • この記事の「環境」セクションで指定されているように環境変数を設定します。
  • この記事の「プロファイル」セクションで指定されているように .databrickscfg ファイルの値を設定します。

環境変数は、.databrickscfg ファイル内の値よりも常に優先されます。

OAuth マシン間 (M2M) 認証」も参照してください。

のインスタンスに接続するときには、

Note

OAuth M2M 認証は、次の Databricks Connect バージョンでサポートされています。

  • Python の場合、Databricks Connect for Databricks Runtime 14.0 以降。
  • Scala の場合、Databricks Connect for Databricks Runtime 13.3 LTS 以降。 Databricks Connect for Databricks Runtime 13.3 LTS 以降に含まれる Databricks SDK for Java は、Databricks SDK for Java 0.17.0 以降にアップグレードする必要があります。

Databricks Connect の場合は、次のいずれかの操作を行うことができます。

.databrickscfg ファイル内の値は、環境変数よりも常に優先されます。

これらの環境変数または .databrickscfg ファイル内の値を使用して Databricks Connect クライアントを初期化するには、次のいずれかを参照してください。

VS Code

Visual Studio Code 用 Databricks 拡張機能の場合は、次を実行します。

  1. この記事の「プロファイル」セクションで指定されているように、Azure Databricks ワークスペースレベルの操作.databrickscfg ファイル内の値を設定します。
  2. Visual Studio Code 用の Databricks 拡張機能の [構成] ペインで、[Databricks の構成] をクリックします。
  3. コマンド パレットDatabricks Host に、ワークスペースごとの URL (例: https://adb-1234567890123456.7.azuredatabricks.net) を入力し、Enter キーを押します。
  4. コマンド パレットで、URL の一覧からターゲット プロファイルの名前を選択します。

詳細については、「VS Code 用 Databricks 拡張機能の認証設定」を参照してください。

Terraform

アカウントレベルの操作の場合 (既定の認証の場合):

provider "databricks" {
  alias = "accounts"
}

直接構成の場合 (retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは HashiCorp Vault などの他の構成ストアから値を取得します。Vault Provider もご覧ください)。 この場合、Azure Databricks アカウント コンソール の URL は https://accounts.azuredatabricks.net です。

provider "databricks" {
  alias         = "accounts"
  host          = <retrieve-account-console-url>
  account_id    = <retrieve-account-id>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

ワークスペースレベルの操作の場合 (既定の認証の場合):

provider "databricks" {
  alias = "workspace"
}

直接構成の場合 (retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは HashiCorp Vault などの他の構成ストアから値を取得します。Vault Provider もご覧ください)。 この場合、ホストは Azure Databricks のワークスペースごとの URL です (例: https://adb-1234567890123456.7.azuredatabricks.net)。

provider "databricks" {
  alias         = "workspace"
  host          = <retrieve-workspace-url>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

Databricks Terraform プロバイダーを使用した認証の詳細については、「認証」を参照してください。

Python

アカウントレベルの操作では、既定の認証に次を使用します。

from databricks.sdk import AccountClient

a = AccountClient()
# ...

直接構成の場合は、次を使用して、retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します。 この場合、Azure Databricks アカウント コンソール の URL は https://accounts.azuredatabricks.net です。

from databricks.sdk import AccountClient

a = AccountClient(
  host          = retrieve_account_console_url(),
  account_id    = retrieve_account_id(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

ワークスペースレベルの操作の場合、特に既定の認証の場合:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

直接構成の場合は、retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します。 この場合、ホストは Azure Databricks のワークスペースごとの URL です (例: https://adb-1234567890123456.7.azuredatabricks.net)。

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(
  host          = retrieve_workspace_url(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

Python を使い、Databricks クライアント統合認証を実装した Databricks ツールと SDK での認証の詳細については、以下を参照してください。

Note

Visual Studio Code 用 Databricks 拡張機能は Python を使いますが、OAuth M2M 認証はまだ実装されていません。

Java

ワークスペースレベルの操作の場合 (既定の認証の場合):

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

直接構成の場合は、retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します。 この場合、ホストは Azure Databricks のワークスペースごとの URL です (例: https://adb-1234567890123456.7.azuredatabricks.net)。

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
  .setClientId(retrieveClientId())
  .setClientSecret(retrieveClientSecret());
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Java を使い、Databricks クライアント統合認証を実装した Databricks ツールと SDK での認証の詳細については、以下を参照してください。

Go

アカウントレベルの操作の場合 (既定の認証の場合):

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

直接構成の場合は、retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します。 この場合、Azure Databricks アカウント コンソール の URL は https://accounts.azuredatabricks.net です。

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host:         retrieveAccountConsoleUrl(),
  AccountId:    retrieveAccountId(),
  ClientId:     retrieveClientId(),
  ClientSecret: retrieveClientSecret(),
}))
// ...

ワークスペースレベルの操作の場合 (既定の認証の場合):

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

直接構成の場合は、retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します。 この場合、ホストは Azure Databricks のワークスペースごとの URL です (例: https://adb-1234567890123456.7.azuredatabricks.net)。

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:         retrieveWorkspaceUrl(),
  ClientId:     retrieveClientId(),
  ClientSecret: retrieveClientSecret(),
}))
// ...

Go を使用し、Databricks クライアント統合認証を実装する Databricks ツールおよび SDK を使用した認証の詳細については、「Azure Databricks アカウントまたはワークスペースで Databricks SDK for Go を認証する」を参照してください。

OAuth M2M 認証用のアクセス トークンを手動で生成して使用する

Databricks クライアント統合認証標準を実装する Azure Databricks ツールと SDK は、OAuth M2M 認証に必要な場合に、ユーザーに代わって Azure Databricks OAuth アクセス トークンを自動的に生成、更新、使用します。

OAuth M2M 認証に Azure Databricks OAuth アクセス トークンを手動で生成、更新、または使用する必要がある場合は、このセクションの手順に従ってください。

手順 1: サービス プリンシパルと OAuth シークレットを作成する

Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルと、それに対応する Azure Databricks OAuth シークレットをまだお持ちでない場合は、この記事の冒頭の手順 1 から 5 を実行して作成します。

手順 2: アクセス トークンを手動で生成する

Azure Databricks 管理サービス プリンシパルまたは Microsoft Entra ID 管理サービス プリンシパルのクライアント ID と Azure Databricks OAuth シークレットを使用して、アカウントレベルの REST API とワークスペースレベルの REST API の両方に対する認証を行うための Azure Databricks OAuth アクセス トークンを要求します。 トークンは 1 時間で期限切れになります。 期限が切れたら、新しい Azure Databricks OAuth アクセス トークンを要求する必要があります。 OAuth アクセス トークンのスコープは、そのトークンの作成元のレベルによって異なります。 トークンは、次のように、アカウント レベルまたはワークスペース レベルのいずれかで作成できます。

アカウント レベルのアクセス トークンを手動で生成する

アカウント レベルから作成された Azure Databricks OAuth アクセス トークンは、そのアカウント内、および Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルが割り当てられている任意のワークスペース内の Databricks REST API に対して使用できます。

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

  2. 右上隅のユーザー名の横にある下矢印をクリックします。

  3. お使いのアカウント ID をコピーします。

  4. 次の URL の <my-account-id> をコピーしたアカウント ID に置き換えて、トークン エンドポイントの URL を作成します。

    https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
    
  5. curl などのクライアントを使用して、トークン エンドポイント URL、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルのクライアント ID (アプリケーション ID とも呼ばれます)、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパル用に作成した Azure Databricks OAuth シークレットを含む Azure Databricks OAuth シークレットを要求します。 all-apis スコープは、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルにアクセス権が付与されているすべての Databricks REST API へのアクセスに使用できる Azure Databricks OAuth アクセス トークンを要求します。

    • <token-endpoint-URL> を、上記のトークン エンドポイント URL に置き換えます。
    • <client-id> を、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルのクライアント ID (アプリケーション ID とも呼ばれます) に置き換えます。
    • <client-secret> を、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパル用に作成した Azure Databricks OAuth シークレットに置き換えます。
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    
    curl --request POST \
    --url <token-endpoint-URL> \
    --user "$CLIENT_ID:$CLIENT_SECRET" \
    --data 'grant_type=client_credentials&scope=all-apis'
    

    これにより、次のような応答が生成されます。

    {
      "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
      "scope": "all-apis",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    応答から access_token をコピーします。

    Azure Databricks OAuth アクセス トークンの有効期限は 1 時間です。 期限が切れたら、新しい Azure Databricks OAuth アクセス トークンを手動で生成する必要があります。

  6. 手順 3: Databricks REST API を呼び出す」に進みます。

ワークスペース レベルのアクセス トークンを手動で生成する

Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルがアカウント管理者または他のワークスペースのメンバーであったとしても、ワークスペース レベルから作成された Azure Databricks OAuth アクセス トークンでアクセスできるのは、そのワークスペース内の REST API だけです。

  1. https://<databricks-instance> を Azure Databricks のデプロイのワークスペース URL に置き換えて、トークン エンドポイント URL を作成します。

    https://<databricks-instance>/oidc/v1/token
    
  2. curl などのクライアントを使用して、Azure Databricks OAuth アクセス トークンと共に、トークン エンドポイント URL、Azure Databricks 管理サービス プリンシパルまたは Microsoft Entra ID 管理サービス プリンシパルのクライアント ID (アプリケーション ID とも呼ばれます)、Azure Databricks 管理サービス プリンシパルまたは Microsoft Entra ID 管理サービス プリンシパル用に作成した Azure Databricks OAuth シークレットを含む Azure Databricks OAuth シークレットを要求します。 all-apis スコープは、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルに、トークンの要求元のワークスペース内へのアクセスが許可されているすべての Databricks REST API にアクセスするために使用できる Azure Databricks OAuth アクセス トークンを要求します。

    • <token-endpoint-URL> を、上記のトークン エンドポイント URL に置き換えます。

    • <client-id> を、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルのクライアント ID (アプリケーション ID とも呼ばれます) に置き換えます。

    • <client-secret> を、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパル用に作成した Azure Databricks OAuth シークレットに置き換えます。

      export CLIENT_ID=<client-id>
      export CLIENT_SECRET=<client-secret>
      
      curl --request POST \
      --url <token-endpoint-URL> \
      --user "$CLIENT_ID:$CLIENT_SECRET" \
      --data 'grant_type=client_credentials&scope=all-apis'
      

      これにより、次のような応答が生成されます。

      {
        "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
        "scope": "all-apis",
        "token_type": "Bearer",
        "expires_in": 3600
      }
      

      応答から access_token をコピーします。

手順 3: Databricks REST API を呼び出す

Azure Databricks OAuth アクセス トークンを使用して、Azure Databricks アカウントレベルの REST API とワークスペースレベルの REST API に対して認証できるようになりました。 アカウント レベルの REST API を呼び出すには、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルがアカウント管理者である必要があります。

Bearer 認証を使用して、トークンをヘッダーに含めることができます。 この方法は、curl または構築する任意のクライアントで使用できます。

アカウント レベルの REST API 要求の例

この例では、Bearer 認証を使って、アカウントに関連付けられているすべてのワークスペースの一覧を取得します。

  • <oauth-access-token> を、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルの Azure Databricks OAuth アクセス トークンに置き換えます。
  • <account-id> を、アカウント ID に置き換えます。
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces'

ワークスペース レベルの REST API 要求の例

この例では、Bearer 認証を使用して、指定されたワークスペースで使用可能なすべてのクラスターを一覧表示します。

  • <oauth-access-token> を、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルの Azure Databricks OAuth アクセス トークンに置き換えます。

  • <workspace-URL> を、adb-1111111111111111.1.azuredatabricks.net のような形式のベース ワークスペース URL に置き換えます。

    export OAUTH_TOKEN=<oauth-access-token>
    
    curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
    'https://<workspace-URL>/api/2.0/clusters/list'
    

その他のリソース