OAuth (OAuth U2M) を使用して、ユーザーアカウントで Databricks へのアクセスを認証します。

Databricks は、OAuth ユーザー間 (U2M) 認証を使用して、ユーザーに代わって Databricks アカウントとワークスペース リソースへの CLI と API アクセスを有効にします。 ユーザーが最初にサインインして OAuth 認証要求に同意すると、参加しているツールまたは SDK に OAuth トークンが提供され、その時点からユーザーに代わってトークンベースの認証が実行されます。 OAuth トークンの有効期間は 1 時間で、その後、関係するツールまたは SDK は、1 時間有効な新しいトークンを取得するための自動バックグラウンド試行を行います。

Databricks では、OAuth を使用してユーザー アカウントのアクセスを認証する 2 つの方法がサポートされています。

  • Databricks 統合クライアント認証サポートを使用して、ほとんどの場合自動的に行われます。 特定の Databricks SDK (Databricks Terraform SDK など) とツールを使用している場合は、この簡略化されたアプローチを使用します。 サポートされているツールと SDK については、「 Databricks 統合クライアント認証」を参照してください。

  • 手動で、OAuth コード検証ツール/チャレンジのペアと認証コードを直接生成し、それらを使用して、構成で提供する初期 OAuth トークンを作成します。 Databricks 統合クライアント認証でサポートされている API を使用していない場合は、この方法を使用します。 詳細については、「ユーザー対マシン (U2M) 認証用のアクセストークンを手動で生成して使用する」OAuthを参照してください。

Databricks 統合クライアント認証による U2M 認証

注:

認証の設定を開始する前に、ワークスペースオブジェクトに対する特定のカテゴリの操作の ACL アクセス許可を確認し、アカウントに必要なアクセスレベルがあるかどうかを判断します。 詳細については、「 アクセス制御リスト」を参照してください。

Databricks SDK と統合クライアント認証をサポートするツールを使用して OAuth U2M 認証を実行するには、コード内に以下を統合します。

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

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

  • DATABRICKS_HOST:DatabricksアカウントのコンソールURL https://accounts.cloud.databricks.com の値に設定します。

  • DATABRICKS_ACCOUNT_ID

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

  • DATABRICKS_HOSTで、Databricks ワークスペースの URL の値 (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com) に設定します。

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

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

[<some-unique-configuration-profile-name>]
host       = <account-console-url>
account_id = <account-id>

ワークスペース レベルの操作の場合は、 .databrickscfgファイルに次の値を設定します。 この場合、ホストは Databricks ワークスペース URLです (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com )。

[<some-unique-configuration-profile-name>]
host = <workspace-url>

Databricks CLI の場合は、次のオプションを指定して databricks auth login コマンドを実行します。

このコマンドを実行した後、Web ブラウザーの指示に従って、Databricks アカウントまたはワークスペースにログインします。

詳細については、「 Databricks CLI を使用した OAuth U2M 認証」を参照してください。

注:

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

  • Python の場合、Databricks Connect for Databricks Runtime 13.1 以降。

  • Scala の場合、Databricks Connect for Databricks Runtime 13.3 LTS 以降。

Databricks Connect では、次のいずれかを実行できます。

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

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

Visual Studio Code の Databricks 拡張機能の場合は、次の操作を行います。

  1. [ 構成 ] ウィンドウで、 [ Databricks の構成] をクリックします。

  2. コマンド パレット[Databricks Host] に、ワークスペースの URL (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com) を入力し、Enterを押します。

  3. [OAuth (ユーザーからマシンへ)] を選択します。

  4. Web ブラウザー内の画面の指示に従って、Databricks アカウントでの認証を完了し、 すべての API アクセスを許可します。

詳細については、「 Databricks CLI を使用した OAuth U2M 認証」を参照してください。

アカウント レベルワークスペース レベルのどちらの操作でも、Terraform 構成を適用する前に、Databricks CLI を使用して次のコマンドを実行する必要があります。このコマンドは、マシン上のユーザーのホームフォルダー内のパスDatabricksCLI に必要なOAuth トークンを生成してキャッシュするように.databricks/token-cache.json に指示します。

Databricks アカウント レベルの操作の構成

databricks auth login --host <account-console-url> --account-id <account-id>

次のプレースホルダーを置き換えます。

  • <account-console-url>https://accounts.cloud.databricks.com の値に置き換えます。(これをDatabricksワークスペースURLの値に設定することはできません。)

  • <account-id>を Databricks アカウントの値に置き換えます。 「アカウント ID を見つける」を参照してください。

注:

既存の Databricks 構成プロファイルhost フィールドと account_id フィールドが既に設定されている場合は、 --host <account-console-url> --account-id <account-id>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、アカウントのログイン URL とアカウント ID を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、以下のスニペットのいずれかのようなTerraformコードを使用します。

デフォルトの認証の場合:

provider "databricks" {
  alias = "account"
}

直接構成の場合は、次の構成を使用して provider を設定します。 retrieve-プレースホルダーを独自の実装に置き換えて、コンソールまたはその他の設定ストア (HashiCorp Vault など) から値を取得します。「Vault プロバイダ」も参照してください)。この例では、 account_id を Databricks アカウント コンソールの URL に設定できます。

provider "databricks" {
  alias      = "account"
  host       = <retrieve-account-console-url>
  account_id = <retrieve-account-id>
}

Databricks ワークスペース レベルの操作の構成

databricks auth login --host <workspace-url>

プレースホルダー <workspace-url> をターゲットの Databricks ワークスペース URL に置き換えます (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

注:

既存の Databricks 構成プロファイルhost フィールドが既に設定されている場合は、 --host <workspace-url>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、ワークスペース URL を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、以下のスニペットのいずれかのようなTerraformコードを使用します。

デフォルトの認証の場合:

provider "databricks" {
  alias = "workspace"
}

直接構成の場合 ( retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは他の構成ストア ( HashiCorp Vault など) から値を取得します。 「Vault プロバイダ」も参照してください)。この場合、ホストは Databricks ワークスペースの URL です (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

provider "databricks" {
  alias = "workspace"
  host  = <retrieve-workspace-url>
}

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

アカウント レベルワークスペース レベルのどちらの操作でも、Python コードを実行する前に、Databricks CLI を使用して次のコマンドを実行する必要があります。このコマンドは、マシン上のユーザーのホームフォルダー内のパスDatabricksCLI に必要なOAuth トークンを生成してキャッシュするように.databricks/token-cache.json に指示します。

Databricks アカウント レベルの操作の構成

databricks auth login --host <account-console-url> --account-id <account-id>

次のプレースホルダーを置き換えます。

  • <account-console-url>https://accounts.cloud.databricks.com の値に置き換えます。(これをDatabricksワークスペースURLの値に設定することはできません。)

  • <account-id>を Databricks アカウントの値に置き換えます。 「アカウント ID を見つける」を参照してください。

注:

既存の Databricks 構成プロファイルhost フィールドと account_id フィールドが既に設定されている場合は、 --host <account-console-url> --account-id <account-id>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、アカウントのログイン URL とアカウント ID を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、次のスニペットのいずれかのようなPythonコードを使用します。

デフォルトの認証の場合:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

直接構成の場合(retrieve プレースホルダーを独自の実装に置き換えて、コンソールや AWS Systems Managerパラメーターストアなどの他の構成ストアから値を取得します)。この場合、DatabricksアカウントのコンソールURLは https://accounts.cloud.databricks.com です。

from databricks.sdk import AccountClient

a = AccountClient(
  host       = retrieveAccountConsoleUrl(),
  account_id = retrieveAccountId()
)
# ...

Databricks ワークスペース レベルの操作の構成

databricks auth login --host <worskpace-url>

プレースホルダー <workspace-url> をターゲットの Databricks ワークスペース URL に置き換えます (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

注:

既存の Databricks 構成プロファイルhost フィールドが既に設定されている場合は、 --host <workspace-url>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、ワークスペース URL を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、次のスニペットのいずれかのようなPythonコードを使用します。

デフォルトの認証の場合:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

直接設定の場合 ( retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは他の設定ストア ( AWS Systems Manager パラメーターストアなど) から値を取得します)。 この場合、ホストは Databricks ワークスペースの URL です (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(host = retrieveWorkspaceUrl())
# ...

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

アカウント レベルワークスペース レベルのどちらの操作でも、Java コードを実行する前に、Databricks CLI を使用して次のコマンドを実行する必要があります。このコマンドは、必要なDatabricksCLI OAuthトークンを生成して、コンピューター上のユーザーのホーム.databricks/token-cache.json フォルダーのパス にキャッシュするように に指示します。

Databricks アカウント レベルの操作の構成

databricks auth login --host <account-console-url> --account-id <account-id>

次のプレースホルダーを置き換えます。

  • <account-console-url>https://accounts.cloud.databricks.com の値に置き換えます。(これをDatabricksワークスペースURLの値に設定することはできません。)

  • <account-id>を Databricks アカウントの値に置き換えます。 「アカウント ID を見つける」を参照してください。

注:

既存の Databricks 構成プロファイルhost フィールドと account_id フィールドが既に設定されている場合は、 --host <account-console-url> --account-id <account-id>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、アカウントのログイン URL とアカウント ID を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、次のスニペットのいずれかのようなJavaコードを使用します。

デフォルトの認証の場合:

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

直接構成の場合(retrieve プレースホルダーを独自の実装に置き換えて、コンソールや AWS Systems Managerパラメーターストアなどの他の構成ストアから値を取得します)。この場合、DatabricksアカウントのコンソールURLは https://accounts.cloud.databricks.com です。

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...

Databricks ワークスペース レベルの操作の構成

ワークスペース レベルの操作の場合は、Java コードを実行する前に、まず Databricks CLI を使用して次のコマンドを実行する必要があります。 このコマンドは、 Databricks CLI 、マシン上のユーザーのホームフォルダー内のパス .databricks/token-cache.json に必要なOAuthトークンを生成してキャッシュするように指示します。

databricks auth login --host <worskpace-url>

プレースホルダー <workspace-url> をターゲットの Databricks ワークスペース URL に置き換えます (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

注:

既存の Databricks 構成プロファイルhost フィールドが既に設定されている場合は、 --host <workspace-url>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、ワークスペース URL を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、次のスニペットのいずれかのようなJavaコードを使用します。

デフォルトの認証の場合:

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

直接設定の場合 ( retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは他の設定ストア ( AWS Systems Manager パラメーターストアなど) から値を取得します)。 この場合、ホストは Databricks ワークスペースの URL です (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

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

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

アカウント レベルワークスペース レベルのどちらの操作でも、Go コードを実行する前に、Databricks CLI を使用して次のコマンドを実行する必要があります。このコマンドは、マシン上のユーザーのホームフォルダー内のパスDatabricksCLI に必要なOAuth トークンを生成してキャッシュするように.databricks/token-cache.json に指示します。

Databricks アカウント レベルの操作の構成

databricks auth login --host <account-login-url> --account-id <account-id>

次のプレースホルダーを置き換えます。

  • <account-console-url>https://accounts.cloud.databricks.com の値に置き換えます。(これをDatabricksワークスペースURLの値に設定することはできません。)

  • <account-id>を Databricks アカウントの値に置き換えます。 「アカウント ID を見つける」を参照してください。

注:

既存の Databricks 構成プロファイルhost フィールドと account_id フィールドが既に設定されている場合は、 --host <account-console-url> --account-id <account-id>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、アカウントのログイン URL とアカウント ID を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、次のスニペットのいずれかのようなGoコードを使用します。

デフォルトの認証の場合:

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

直接構成の場合(retrieve プレースホルダーを独自の実装に置き換えて、コンソールや AWS Systems Managerパラメーターストアなどの他の構成ストアから値を取得します)。この場合、DatabricksアカウントのコンソールURLは https://accounts.cloud.databricks.com です。

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:      retrieveAccountConsoleUrl(),
  AccountId: retrieveAccountId(),
}))
// ...

Databricks ワークスペース レベルの操作の構成

ワークスペース レベルの操作の場合は、Go コードを実行する前に、まず Databricks CLI を使用して次のコマンドを実行する必要があります。 このコマンドは、 Databricks CLI 、マシン上のユーザーのホームフォルダー内のパス .databricks/token-cache.json に必要なOAuthトークンを生成してキャッシュするように指示します。

databricks auth login --host <worskpace-url>

プレースホルダー <workspace-url> をターゲットの Databricks ワークスペース URL に置き換えます (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

注:

既存の Databricks 構成プロファイルhost フィールドが既に設定されている場合は、 --host <workspace-url>--profile <profile-name>に置き換えることができます。

auth login コマンドを実行すると、ワークスペース URL を Databricks 構成プロファイルとして保存するように求められます。プロンプトが表示されたら、 .databrickscfg ファイル内の新規または既存のプロファイルの名前を入力します。 .databrickscfgファイル内に同じ名前の既存のプロファイルは上書きされます。

プロンプトが表示されたら、Webブラウザの画面上の指示に従ってログインを完了します。次に、次のスニペットのいずれかのようなGoコードを使用します。

デフォルトの認証の場合:

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

直接設定の場合 ( retrieve プレースホルダーを独自の実装に置き換えて、コンソールまたは他の設定ストア ( AWS Systems Manager パラメーターストアなど) から値を取得します)。 この場合、ホストは Databricks ワークスペースの URL です (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host: retrieveWorkspaceUrl(),
}))
// ...

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

OAuth ユーザー対マシン (U2M) 認証用のアクセストークンを手動で生成して使用する

注:

このセクションは、 Databricks クライアントの統合認証 標準で動作しないサードパーティのツールまたはサービスを使用しているユーザーを対象としています。

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

ステップ 1: OAuth コードベリファイアとコード チャレンジのペアを生成する

OAuth U2M 認証用のアクセストークンを手動で生成して使用するには、まず OAuth コード検証ツールと、コード検証ツールから派生した OAuth コード チャレンジが必要です。ステップ 2 のコード チャレンジを使用して、OAuth 認証コードを生成します。 ステップ 3 のコード検証ツールと認証コードを使用して、 OAuth アクセストークンを生成します。

注:

技術的には、コード検証ツールとコード チャレンジにエンコードされていないプレーンテキスト文字列を使用することは可能ですが、Databricks では、 代わりに OAuth 標準に従ってコード検証ツールとコード チャレンジを生成する ことを強くお勧めします。

具体的には、コードベリファイアは、セットA-Za-z0-9および句読点文字-._~ (ハイフン、ピリオド、アンダースコア、チルダ) の文字を使用した、43 ~ 128 の暗号学的にランダムな文字列である必要があります。文字が長い。 コード チャレンジは、コード ベリファイアの SHA256 ハッシュを Base64 URL でエンコードした文字列である必要があります。 詳細については、 「認可リクエスト」を参照してください。

次の Python スクリプトを実行すると、一意のコードベリファイアとコード チャレンジのペアをすばやく生成できます。 この生成されたコード ベリファイアとコード チャレンジのペアは複数回再利用できますが、Databricks では、OAuth U2M 認証のアクセス許可を手動で生成するたびに、新しいコード ベリファイアとコード チャレンジのペアを生成することをお勧めします。

import uuid, hashlib, base64

# Generate a UUID.
uuid1 = uuid.uuid4()

# Convert the UUID to a string.
uuid_str1 = str(uuid1).upper()

# Create the code verifier.
code_verifier = uuid_str1 + "-" + uuid_str1

# Create the code challenge based on the code verifier.
code_challenge = base64.urlsafe_b64encode(hashlib.sha256(code_verifier.encode()).digest()).decode('utf-8')

# Remove all padding from the code challenge.
code_challenge = code_challenge.replace('=', '')

# Print the code verifier and the code challenge.
# Use these in your calls to manually generate
# access tokens for OAuth U2M authentication.
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

ステップ 2: 認可コードを生成する

OAuth 認可コードを使用して、Databricks OAuth アクセストークンを生成します。 認可コードは、Databricks OAuth アクセストークンの生成に使用した直後に期限切れになります。 認可コードのスコープは、生成元のレベルによって異なります。 次のように、Databricks アカウント レベルまたはワークスペース レベルで認可コードを生成できます。

アカウントレベルの認可コードを生成する

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

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

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

  4. Web ブラウザーのアドレス バーで、次の URL を参照します。 読みやすくするために改行が追加されています。 URL にこれらの改行を含めることはできません。

    次の URL で、以下を置き換えます。

    • <account-id>をコピーしたアカウント IDに置き換えます。

    • <redirect-url> をローカル コンピューターへのリダイレクト URL に置き換えます (例: http://localhost:8020)。

    • <state>認可コードの整合性を検証するために使用できるプレーンテキスト文字列に置き換えます。

    • <code-challenge>をステップ 1 で生成したコード チャレンジに置き換えます。

    https://accounts.cloud.databricks.com/oidc/accounts/<account-id>/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  5. プロンプトが表示されたら、画面上の指示に従って Databricks アカウントにログインします。

  6. Web ブラウザーのアドレスバーで、認可コードをコピーします。 認可コードは、URL 内のcode=&文字の間の完全な文字列です。 たとえば、次の URL の認可コードは dcod...7fe6です。

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    この応答 URL の <state> 値が、要求 URL で指定した state 値と一致することを視覚的に確認して、この承認コードの整合性を確認する必要があります。 値が異なる場合は、侵害される可能性があるため、この認可コードを使用しないでください。

  7. 「アカウントレベルのアクセストークンを生成する」に進んでください。

ワークスペースレベルの認可コードを生成する

  1. Web ブラウザーのアドレス バーで、次の URL を参照します。 読みやすくするために改行が追加されています。 URL にこれらの改行を含めることはできません。

    次の URL で、以下を置き換えます。

    • <databricks-instance> Databricks ワークスペース インスタンス名(例: dbc-a1b2345c-d6e7.cloud.databricks.comに置き換えます。

    • <redirect-url> をローカル コンピューターへのリダイレクト URL に置き換えます (例: http://localhost:8020)。

    • <state>認可コードの整合性を検証するために使用できるプレーンテキスト文字列に置き換えます。

    • <code-challenge>をステップ 1 で生成したコード チャレンジに置き換えます。

    https://<databricks-instance>/oidc/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  2. プロンプトが表示されたら、画面上の指示に従って Databricks ワークスペースにログインします。

  3. Web ブラウザーのアドレスバーで、認可コードをコピーします。 認可コードは、URL 内のcode=&文字の間の完全な文字列です。 たとえば、次の URL の認可コードは dcod...7fe6です。

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    この応答 URL の <state> 値が、要求 URL で指定した state 値と一致することを視覚的に確認して、この承認コードの整合性を確認する必要があります。 値が異なる場合は、侵害される可能性があるため、この認可コードを使用しないでください。

ステップ 3: 認可コードを使用して OAuth アクセストークンを生成する

次のように、前のステップの OAuth 認可コードを使用して、Databricks OAuth アクセストークンを生成します。

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

  1. curlなどのクライアントをアカウント レベルの認可コードとともに使用して、アカウント レベルの OAuth アクセスを生成します。 次の curl 呼び出しで、次のプレースホルダーを置き換えます。

    • <account-id>をステップ 2 のアカウント IDに置き換えます。

    • <redirect-url>をステップ 2 のリダイレクト URL に置き換えます。

    • <code-verifier>ステップ 1 で生成したコードベリファイアに置き換えます。

    • <authorization-code>を、ステップ 2 で生成したアカウントレベルの認可コードに置き換えます。

    curl --request POST \
    https://accounts.cloud.databricks.com/oidc/accounts/<account-id>/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. レスポンス内の、アカウント レベルの OAuth アクセストークンをコピーします。 アクセストークンは、 access_tokenオブジェクト内の完全な文字列です。 たとえば、次のレスポンスのアクセストークンはeyJr...Dkagです。

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    このアクセストークンは 1 時間で有効期限が切れます。 新しいアクセストークンを生成するには、この手順をステップ 1 から繰り返します。

  3. 「ステップ 4: Databricks REST API を呼び出す」に進んでください。

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

  1. curlなどのクライアントをワークスペース レベルの認可コードとともに使用して、ワークスペース レベルの OAuth アクセストークンを生成します。 次の curl 呼び出しで、次のプレースホルダーを置き換えます。

    • <databricks-instance> Databricks ワークスペース インスタンス名(例: dbc-a1b2345c-d6e7.cloud.databricks.comに置き換えます。

    • <redirect-url>をステップ 2 のリダイレクト URL に置き換えます。

    • <code-verifier>ステップ 1 で生成したコードベリファイアに置き換えます。

    • <authorization-code>を、ステップ 2 で生成したワークスペース レベルの認可コードに置き換えます。

    curl --request POST \
    https://<databricks-instance>/oidc/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. レスポンス内の、ワークスペース レベルの OAuth アクセストークンをコピーします。 アクセストークンは、 access_tokenオブジェクト内の完全な文字列です。 たとえば、次のレスポンスのアクセストークンはeyJr...Dkagです。

    {
     "access_token": "eyJr...Dkag",
     "refresh_token": "doau...f26e",
     "scope": "all-apis offline_access",
     "token_type": "Bearer",
     "expires_in": 3600
    }
    

    このアクセストークンは 1 時間で有効期限が切れます。 新しいアクセストークンを生成するには、この手順をステップ 1 から繰り返します。

ステップ 4: Databricks REST API を呼び出す

アクセスインスタンスのスコープに応じて、アカウント レベルまたはワークスペース レベルの OAuth アクセス インスタンスを使用して、Databricks アカウント レベルの REST APIsおよびワークスペース レベルの REST APIsに対する認証を行います。 アカウント レベルの REST APIsを呼び出すには、Databricks ユーザー アカウントがアカウント管理者である必要があります。

アカウントレベルの REST API リクエストの例

この例では、 curlBearer認証を使用して、アカウントに関連付けられたすべてのワークスペースのリストを取得します。

  • <oauth-access-token>をアカウント レベルの OAuth アクセス権に置き換えます。

  • <account-id>をアカウント ID に置き換えます。

export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/workspaces"

ワークスペースレベルの REST API リクエストの例

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

  • <oauth-access-token>アカウント レベルまたはワークスペース レベルの OAuth アクセス ノートに置き換えます。

  • <databricks-instance> Databricks ワークスペース インスタンス名(例: dbc-a1b2345c-d6e7.cloud.databricks.comに置き換えます。

export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"