OAuthユーザー対マシン(U2M)認証

OAuth のユーザー対マシン (U2M) 認証では、リアルタイムの人間によるサインインと同意を使用して、ターゲットの Databricks ユーザーアカウントを認証します。ユーザーがサインインに成功し、OAuth 認証リクエストに同意すると、OAuth トークンが参加ツールまたは SDK に渡され、その時点からユーザーに代わってトークンベースの認証を実行します。OAuth トークンの有効期間は 1 時間で、その後、関連するツールまたは SDK が自動的にバックグラウンドで、同様に 1 時間有効な新しいトークンの取得を試みます。

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

  • アカウント操作の場合は https://accounts.cloud.databricks.com として指定される Databricks ホスト、またはワークスペース操作の場合はターゲット ワークスペース URL (ワークスペース操作の場合は https://dbc-a1b2345c-d6e7.cloud.databricks.com など) として指定されます。

  • Databricksアカウント操作用のDatabricksアカウントID。

Databricks で OAuth U2M 認証を実行するには、参加しているツールまたは SDK に基づいて、コード内に以下を統合します。 コードで呼び出す Databricks 操作によっては、必ずしも Databricks アカウントの管理者である必要はありません。

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

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

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

  • DATABRICKS_ACCOUNT_ID

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

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

.databrickscfg ファイルで次のフィールドを使用して Databricks 構成プロファイルを作成または識別します。プロファイルを作成する場合は、プレースホルダーを適切な値に置き換えます。 ツールまたは SDK でプロファイルを使用するには、「 Databricks ツールまたは SDK でサポートされている認証の種類」、またはツールまたは 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 アカウントまたはワークスペースにログインします。

詳細については、「 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 クライアントを初期化するには、次のいずれかを参照してください。

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

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

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

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

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

詳細については、「 OAuth U2M 認証の設定」を参照してください。

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

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 を見つける」を参照してください。

注:

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

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

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

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

provider "databricks" {
  alias = "account"
}

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

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

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

databricks auth login --host <workspace-url>

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

注:

host フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--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 を使用して次のコマンドを実行する必要があります。 このコマンドは、 Databricks CLI 、マシン上のユーザーのホームフォルダー内のパス .databricks/token-cache.json に必要なOAuthトークンを生成してキャッシュするように指示します。

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 を見つける」を参照してください。

注:

host フィールドと account_id フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--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()
)
# ...

ワークスペース レベルの操作の場合は、Python コードを実行する前に、まず 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)。

注:

host フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--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())
# ...

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

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

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 を見つける」を参照してください。

注:

host フィールドと account_id フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--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);
// ...

ワークスペース レベルの操作の場合は、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)。

注:

host フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--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);
// ...

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

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

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 を見つける」を参照してください。

注:

host フィールドと account_id フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--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(),
}))
// ...

ワークスペース レベルの操作の場合は、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)。

注:

host フィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、--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 クライアント統合認証を実装する Databricks ツールと SDK での認証の詳細については、「Databricks アカウントまたはワークスペースで Databricks SDK for Go を認証する」を参照してください。

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

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

何らかの理由で、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_url=<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"