OAuth (OAuth U2M)を使用してユーザー アカウントを使用して Azure Databricks へのアクセスを認証する
Azure Databricks では、OAuth ユーザー対マシン (U2M) 認証を使用して、ユーザーに代わって Azure Databricks アカウントとワークスペース リソースへの CLI および API アクセスを有効にします。 ユーザーが最初にサインインし、OAuth認証リクエストに同意すると、参加ツールまたはSDKにOAuthトークンが発行され、それ以降、ユーザーに代わってトークンベースの認証が実行されます。 OAuth トークンの有効期間は 1 時間です。その後、関連するツールまたは SDK は、1 時間有効な新しいトークンを自動的に取得しようとします。
Azure Databricks では、OAuth を使用してユーザー アカウントのアクセスを認証する 2 つの方法をサポートしています。
- Databricks 統合クライアント認証のサポートを使用して、ほぼ自動的に実行されます。 特定の Azure Databricks SDK (Databricks Terraform SDK など) やツールを使用している場合は、この簡略化されたアプローチを使用します。 サポートされているツールと SDK は、Databricks 統合クライアント認証に記載がされています。
- 手動で、OAuth コード検証/チャレンジ ペアと承認コードを直接生成し、それぞれを使用して構成で指定する初期 OAuth トークンを作成します。 Databricks 統合クライアント認証でサポートされている API を使用していない場合には、この方法を使用します。 詳細は、OAuth ユーザー対マシン (U2M) 認証用のアクセス トークンを手動で生成して使用する」を参照してください。
Databricks 統合クライアント認証を使用する U2M 認証
Note
認証の構成を開始する前に、ワークスペース オブジェクトに対する操作の特定のカテゴリの ACL アクセス許可を確認し、アカウントに必要なアクセス レベルがあるかどうかの判断をします。 詳細については、「アクセス制御リスト」を参照してください。
Azure Databricks SDKs および統一クライアント認証をサポートするツールで OAuth U2M 認証を実行するには、コード内に次の内容を統合します。
環境
ツールまたは SDK で特定の Azure Databricks 認証の種類に環境変数を使用するには、「Azure Databricks ツールと API の認証」またはツールまたは SDK のドキュメントを参照してください。 「クライアント統合認証の環境変数とフィールド」、および「クライアント統合認証のデフォルトの方法」も参照してください。
アカウントレベルの操作の場合、次の環境変数を設定します。
DATABRICKS_HOST
。Azure Databricks アカウント コンソール URL (https://accounts.azuredatabricks.net
) の値に設定します。DATABRICKS_ACCOUNT_ID
ワークスペースレベルの操作の場合は、次の環境変数を設定します。
DATABRICKS_HOST
。Azure Databricks のワークスペースごとの URL (例:https://adb-1234567890123456.7.azuredatabricks.net
) に設定します。
プロファイル
.databrickscfg
ファイルで次のフィールドを使用して、Azure Databricks 構成プロファイルを作成または識別します 。 プロファイルを作成する場合は、プレースホルダーを適切な値に置き換えます。 ツールまたは SDK でプロファイルを使用するには、「Azure Databricks リソースへのアクセスの認証」またはツールまたは SDK のドキュメントを参照してください。 「クライアント統合認証の環境変数とフィールド」、および「クライアント統合認証のデフォルトの方法」も参照してください。
アカウントレベルの操作の場合、.databrickscfg
ファイルで次の値を設定します。 この場合、Azure Databricks アカウント コンソール の URL は https://accounts.azuredatabricks.net
です。
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
ワークスペース レベルの操作の場合は、.databrickscfg
ファイルに次の値を設定します。 この場合、ホストは Azure Databricks のワークスペースごとの URL です (例: https://adb-1234567890123456.7.azuredatabricks.net
)。
[<some-unique-configuration-profile-name>]
host = <workspace-url>
CLI
Databricks CLI の場合は、次のオプションを指定して databricks auth login
コマンドを実行します。
--host <account-console-url> --account-id <account-id>
(Azure Databricks アカウント レベルの操作の場合)。--host <workspace-url>
(Azure Databricks ワークスペース レベルの操作の場合)。
このコマンドを実行した後、Web ブラウザーの指示に従って、Azure Databricks アカウントまたはワークスペースにログインします。
詳細については、「Databricks CLI を使用した OAuth U2M 認証」を参照してください。
のインスタンスに接続するときには、
Note
OAuth U2M 認証は、次の Databricks Connect バージョンでサポートされています。
- Python の場合、Databricks Connect for Databricks Runtime 13.1 以降。
- Scala の場合、Databricks Connect for Databricks Runtime 13.3 LTS 以降。
Databricks Connect の場合は、次のいずれかを行うことができます。
- この記事の「プロファイル」セクションで指定されているように、Azure Databricks ワークスペースレベルの操作の
.databrickscfg
ファイル内の値を設定します。 また、プロファイル内のcluster_id
環境変数をワークスペースごとの URL に設定します (例:https://adb-1234567890123456.7.azuredatabricks.net
)。 - この記事の「環境」セクションで指定されているように、Azure Databricks ワークスペース レベルの操作の環境変数を設定します。 また、
DATABRICKS_CLUSTER_ID
環境変数をワークスペースごとの URL に設定します (例:https://adb-1234567890123456.7.azuredatabricks.net
)。
.databrickscfg
ファイル内の値は、環境変数よりも常に優先されます。
これらの環境変数または .databrickscfg
ファイル内の値を使用して Databricks Connect クライアントを初期化するには、次のいずれかを参照してください。
- Python の場合は、Python の接続プロパティの構成に関する記事を参照してください。
- Scala の場合は、Scala の接続プロパティの構成に関する記事を参照してください。
VS Code
Visual Studio Code 用 Databricks 拡張機能の場合は、次を実行します。
- [構成] ウィンドウで、[Configure Databricks](Databricks の構成) をクリックします。
- コマンド パレットの Databricks Host に、ワークスペースごとの URL (例:
https://adb-1234567890123456.7.azuredatabricks.net
) を入力し、Enter
キーを押します。 - [OAuth (user to machine)]\(OAuth (ユーザー対マシン)\) を選択します。
- Web ブラウザーの画面の指示に従って Azure Databricks アカウントの認証を完了し、[all-apis]\(すべての API\) アクセスを許可します。
詳細については、「Databricks CLI を使用した OAuth U2M 認証」を参照してください。
Terraform
Note
OAuth U2M 認証は、まだサポートされていません。
Python
アカウントレベルおよびワークスペースレベルの操作の両方において、Pythonコードを実行する前に、Databricks CLIを使用して次のコマンドを実行する必要があります。 このコマンドは、必要な OAuth トークンを、ご使用のマシン上のユーザーのホーム フォルダーのパス .databricks/token-cache.json
に生成してキャッシュするように Databricks CLI に指示します。
Databricksのアカウントレベル操作のための設定
databricks auth login --host <account-console-url> --account-id <account-id>
次のプレースホルダーを置き換えます。
<account-console-url>
を値https://accounts.azuredatabricks.net
で置き換えます。 (これを Azure Databricks ワークスペース URL の値に設定しないでください。)<account-id>
を Azure Databricks アカウントの値で置き換えます。 「アカウント ID を特定する」を参照してください。
Note
host
および account_id
のフィールドが既に設定された、既存の Azure Databricks 構成プロファイルがある場合は、--host <account-console-url> --account-id <account-id>
を --profile <profile-name>
で置き換えることができます。
auth login
コマンドを実行した後で、アカウント ログイン URL とアカウント ID を Azure Databricks 構成プロファイルとして保存するように求められます。 プロンプトが表示されたら、.databrickscfg
ファイルに新規または既存のプロファイルの名前を入力します。 .databrickscfg
ファイル内に同じ名前の既存のプロファイルがあると上書きされます。
プロンプトが表示されたら、Web ブラウザーの画面の指示に従ってログインを完了します。 その後、次のいずれかのスニペットのような 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 = retrieveAccountConsoleUrl(),
account_id = retrieveAccountId()
)
# ...
Databricks ワークスペースレベルの操作のための設定
databricks auth login --host <worskpace-url>
プレースホルダー <workspace-url>
を対象の Azure Databricks の ワークスペース単位の URL で置き換えます (例: https://adb-1234567890123456.7.azuredatabricks.net
)。
Note
host
フィールドが既に設定された、既存の Azure Databricks 構成プロファイルがある場合は、--host <workspace-url>
を --profile <profile-name>
で置き換えることができます。
auth login
コマンドを実行した後で、ワークスペース URL を Azure Databricks 構成プロファイルとして保存するように求められます。 プロンプトが表示されたら、.databrickscfg
ファイルに新規または既存のプロファイルの名前を入力します。 .databrickscfg
ファイル内に同じ名前の既存のプロファイルがあると上書きされます。
プロンプトが表示されたら、Web ブラウザーの画面の指示に従ってログインを完了します。 その後、次のいずれかのスニペットのような Python コードを使用します。
既定の認証の場合:
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 = retrieveWorkspaceUrl())
# ...
Python を使用し、Databricks クライアント統合認証を実装した Databricks ツールや SDK を使用した認証については、以下を参照してください。
- Python 用に Databricks Connect クライアントを設定する
- Visual Studio Code 用 Databricks 拡張機能の認証の設定
- Azure Databricks アカウントまたはワークスペースで Databricks SDK for Python を認証する
Java
アカウントレベルとワークスペースレベルの両方の操作では、Javaコードを実行する前に、Databricks CLIを使用して次のコマンドを実行する必要があります。 このコマンドは、必要な OAuth トークンを、ご使用のマシン上のユーザーのホーム フォルダーのパス .databricks/token-cache.json
に生成してキャッシュするように Databricks CLI に指示します。
Databricksのアカウントレベル操作のための設定
databricks auth login --host <account-console-url> --account-id <account-id>
次のプレースホルダーを置き換えます。
<account-console-url>
を値https://accounts.azuredatabricks.net
で置き換えます。 (これを Azure Databricks ワークスペース URL の値に設定しないでください。)<account-id>
を Azure Databricks アカウントの値で置き換えます。 「アカウント ID を特定する」を参照してください。
Note
host
および account_id
のフィールドが既に設定された、既存の Azure Databricks 構成プロファイルがある場合は、--host <account-console-url> --account-id <account-id>
を --profile <profile-name>
で置き換えることができます。
auth login
コマンドを実行した後で、アカウント ログイン URL とアカウント ID を Azure Databricks 構成プロファイルとして保存するように求められます。 プロンプトが表示されたら、.databrickscfg
ファイルに新規または既存のプロファイルの名前を入力します。 .databrickscfg
ファイル内に同じ名前の既存のプロファイルがあると上書きされます。
プロンプトが表示されたら、Web ブラウザーの画面の指示に従ってログインを完了します。 その後、次のいずれかのスニペットのような Java コードを使用します。
既定の認証の場合:
import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...
直接構成の場合 (retrieve
プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します)。 この場合、Azure Databricks アカウント コンソール の URL は https://accounts.azuredatabricks.net
です。
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 を使用して次のコマンドを実行する必要があります。 このコマンドは、必要な OAuth トークンを、ご使用のマシン上のユーザーのホーム フォルダーのパス .databricks/token-cache.json
に生成してキャッシュするように Databricks CLI に指示します。
databricks auth login --host <worskpace-url>
プレースホルダー <workspace-url>
を対象の Azure Databricks の ワークスペース単位の URL で置き換えます (例: https://adb-1234567890123456.7.azuredatabricks.net
)。
Note
host
フィールドが既に設定された、既存の Azure Databricks 構成プロファイルがある場合は、--host <workspace-url>
を --profile <profile-name>
で置き換えることができます。
auth login
コマンドを実行した後で、ワークスペース URL を Azure Databricks 構成プロファイルとして保存するように求められます。 プロンプトが表示されたら、.databrickscfg
ファイルに新規または既存のプロファイルの名前を入力します。 .databrickscfg
ファイル内に同じ名前の既存のプロファイルがあると上書きされます。
プロンプトが表示されたら、Web ブラウザーの画面の指示に従ってログインを完了します。 その後、次のいずれかのスニペットのような 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())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...
Java を使用し、Databricks クライアント統合認証を実装した Databricks ツールや SDK を使用した認証については、以下を参照してください。
- Scala 用に Databricks Connect クライアントを設定する (Scala 用 Databricks Connect クライアントは、同梱の Java 用 Databricks SDK を認証に使用します)
- Azure Databricks アカウントまたはワークスペースで Databricks SDK for Java を認証する
Go
アカウントレベルおよびワークスペースレベルの操作の両方において、Goコードを実行する前に、Databricks CLIを使用して次のコマンドを実行する必要があります。 このコマンドは、必要な OAuth トークンを、ご使用のマシン上のユーザーのホーム フォルダーのパス .databricks/token-cache.json
に生成してキャッシュするように Databricks CLI に指示します。
Databricksのアカウントレベル操作のための設定
databricks auth login --host <account-login-url> --account-id <account-id>
次のプレースホルダーを置き換えます。
<account-console-url>
を値https://accounts.azuredatabricks.net
で置き換えます。 (これを Azure Databricks ワークスペース URL の値に設定しないでください。)<account-id>
を Azure Databricks アカウントの値で置き換えます。 「アカウント ID を特定する」を参照してください。
Note
host
および account_id
のフィールドが既に設定された、既存の Azure Databricks 構成プロファイルがある場合は、--host <account-console-url> --account-id <account-id>
を --profile <profile-name>
で置き換えることができます。
auth login
コマンドを実行した後で、アカウント ログイン URL とアカウント ID を Azure Databricks 構成プロファイルとして保存するように求められます。 プロンプトが表示されたら、.databrickscfg
ファイルに新規または既存のプロファイルの名前を入力します。 .databrickscfg
ファイル内に同じ名前の既存のプロファイルがあると上書きされます。
プロンプトが表示されたら、Web ブラウザーの画面の指示に従ってログインを完了します。 その後、次のいずれかのスニペットのような Go コードを使用します。
既定の認証の場合:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
直接構成の場合 (retrieve
プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します)。 この場合、Azure Databricks アカウント コンソール の URL は https://accounts.azuredatabricks.net
です。
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
}))
// ...
Databricks ワークスペースレベルの操作のための設定
ワークスペース レベルの操作の場合、Go コードを実行する前に、Databricks CLI を使用して次のコマンドを実行する必要があります。 このコマンドは、必要な OAuth トークンを、ご使用のマシン上のユーザーのホーム フォルダーのパス .databricks/token-cache.json
に生成してキャッシュするように Databricks CLI に指示します。
databricks auth login --host <worskpace-url>
プレースホルダー <workspace-url>
を対象の Azure Databricks の ワークスペース単位の URL で置き換えます (例: https://adb-1234567890123456.7.azuredatabricks.net
)。
Note
host
フィールドが既に設定された、既存の Azure Databricks 構成プロファイルがある場合は、--host <workspace-url>
を --profile <profile-name>
で置き換えることができます。
auth login
コマンドを実行した後で、ワークスペース URL を Azure Databricks 構成プロファイルとして保存するように求められます。 プロンプトが表示されたら、.databrickscfg
ファイルに新規または既存のプロファイルの名前を入力します。 .databrickscfg
ファイル内に同じ名前の既存のプロファイルがあると上書きされます。
プロンプトが表示されたら、Web ブラウザーの画面の指示に従ってログインを完了します。 その後、次のいずれかのスニペットのような Go コードを使用します。
既定の認証の場合:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
直接構成の場合 (retrieve
プレースホルダーを独自の実装に置き換えて、コンソールまたは Azure KeyVault のような他の構成ストアから値を取得します)。 この場合、ホストは Azure Databricks のワークスペースごとの URL です (例: https://adb-1234567890123456.7.azuredatabricks.net
)。
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveWorkspaceUrl(),
}))
// ...
Go を使用し、Databricks クライアント統合認証を実装する Databricks ツールおよび SDK を使用した認証の詳細については、「Azure Databricks アカウントまたはワークスペースで Databricks SDK for Go を認証する」を参照してください。
OAuth ユーザー対マシン (U2M) 認証用のアクセス トークンを手動で生成して使用する
Databricks クライアント統合認証標準を実装する Azure Databricks ツールと SDK は、OAuth U2M 認証に必要な場合に、ユーザーに代わって Azure Databricks OAuth アクセス トークンを自動的に生成、更新、使用します。
何らかの理由で、OAuth U2M 認証に Azure Databricks OAuth アクセス トークンを手動で生成、更新、または使用する必要がある場合は、このセクションの手順に従ってください。
手順 1: OAuth コード検証ツールとコード チャレンジのペアを生成する
OAuth U2M 認証のためのアクセス トークンを手動で生成して使用するには、まず、OAuth コード検証ツールと、コード検証ツールから導出される OAuth コード チャレンジが必要です。 コード チャレンジを後の手順 2 で使用して、OAuth 承認コードを生成します。 コード検証ツールと承認コードを後の手順 3 で使用して、OAuth アクセス トークンを生成します。
Note
エンコードされていないプレーンテキスト文字列をコード検証ツールとコード チャレンジで使用することは技術的には可能ですが、Databricks では、コード検証ツールとコード チャレンジの生成には OAuth 標準に従うように強くお勧めします。
具体的には、コード検証ツールは、A-Z
、a-z
、0-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 承認コードを使用して、Azure Databricks OAuth アクセス トークンを生成します。 承認コードは、Azure Databricks OAuth アクセス トークンの生成に使用した直後に期限切れになります。 承認コードのスコープは、それを生成するレベルによって異なります。 承認コードは、次のように、Azure Databricks アカウント レベルまたはワークスペース レベルで生成できます。
- ご使用の Azure Databricks ユーザー アカウントでアクセスできるアカウントとワークスペース内のアカウントレベルおよびワークスペースレベルの REST API を呼び出すには、アカウント レベルで承認コードを生成します。
- ご使用のユーザー アカウントがアクセスできる 1 つのワークスペース内でのみ REST API を呼び出すには、そのワークスペースに対してのみワークスペース レベルで承認コードを生成します。
アカウント レベルの承認コードを生成する
アカウント管理者として、アカウント コンソールにログインします。
右上隅のユーザー名の横にある下矢印をクリックします。
お使いのアカウント ID をコピーします。
Web ブラウザーのアドレス バーで次の URL をブラウズします。 読みやすいように改行が追加されています。 URL にはこれらの改行を含めることはできません。
この後の URL で次を置き換えます。
<account-id>
を、コピーしたアカウント ID で置き換えます。<redirect-url>
を、ローカル マシンへのリダイレクト URL で置き換えます (例:http://localhost:8020
)。<state>
を、承認コードの整合性の確認に使用できるプレーン テキスト文字列で置き換えます。<code-challenge>
を、手順 1 で生成したコード チャレンジで置き換えます。
https://accounts.azuredatabricks.net/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
プロンプトが表示されたら、画面の指示に従って Azure Databricks アカウントにログインします。
Web ブラウザーのアドレス バーで承認コードをコピーします。 承認コードは、URL の
code=
と&
文字の間にあるすべての文字の文字列です。 たとえば、次の URL の承認コードはdcod...7fe6
です。http://localhost:8020/?code=dcod...7fe6&state=<state>
この承認コードの整合性を確認するには、この応答 URL の
<state>
値が、要求 URL で指定したstate
値と一致することを目視して確認する必要があります。 値が異なる場合は、侵害される可能性があるため、この承認コードを使用しないでください。「アカウント レベルのアクセス トークンを手動で生成する」に進みます。
ワークスペース レベルの承認コードを生成する
Web ブラウザーのアドレス バーで次の URL をブラウズします。 読みやすいように改行が追加されています。 URL にはこれらの改行を含めることはできません。
この後の URL で次を置き換えます。
<databricks-instance>
は、Azure Databricks のワークスペース インスタンスの名前 (例:adb-1234567890123456.7.azuredatabricks.net
) に置き換えます。<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
プロンプトが表示されたら、画面の指示に従って Azure Databricks ワークスペースにログインします。
Web ブラウザーのアドレス バーで承認コードをコピーします。 承認コードは、URL の
code=
と&
文字の間にあるすべての文字の文字列です。 たとえば、次の URL の承認コードはdcod...7fe6
です。http://localhost:8020/?code=dcod...7fe6&state=<state>
この承認コードの整合性を確認するには、この応答 URL の
<state>
値が、要求 URL で指定したstate
値と一致することを目視して確認する必要があります。 値が異なる場合は、侵害される可能性があるため、この承認コードを使用しないでください。
手順 3: 承認コードを使用して OAuth アクセス トークンを生成する
前の手順の OAuth 承認コードを使用し、Azure Databricks OAuth アクセス トークンを次のように生成します。
- ご使用の Azure Databricks ユーザー アカウントでアクセスできるアカウントとワークスペース内のアカウントレベルおよびワークスペースレベルの REST API を呼び出すには、アカウント レベルの承認コードを使用してアカウント レベルでアクセス トークンを生成します。
- ご使用のユーザー アカウントがアクセスできる 1 つのワークスペース内でのみ REST API を呼び出すには、ワークスペース レベルの承認コードを使用して、そのワークスペースに対してのみワークスペース レベルでアクセス トークンを生成します。
アカウント レベルのアクセス トークンを生成する
curl
などのクライアントと共にアカウント レベルの承認コードを使用して、アカウント レベルの OAuth アクセス トークンを生成します。 次のcurl
呼び出しで、次のプレースホルダーを置き換えます。<account-id>
を、手順 2 のアカウント ID で置き換えます。<redirect-url>
を、手順 2 のリダイレクト URL で置き換えます。<code-verifier>
を、手順 1 で生成したコード検証ツールで置き換えます。<authorization-code>
を、手順 2 で生成したアカウント レベルの承認コードで置き換えます。
curl --request POST \ https://accounts.azuredatabricks.net/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>"
応答で、アカウント レベルの 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 を呼び出す」に進みます。
ワークスペース レベルのアクセス トークンを生成する
curl
などのクライアントと共にワークスペース レベルの承認コードを使用して、ワークスペース レベルの OAuth アクセス トークンを生成します。 次のcurl
呼び出しで、次のプレースホルダーを置き換えます。<databricks-instance>
は、Azure Databricks のワークスペース インスタンスの名前 (例:adb-1234567890123456.7.azuredatabricks.net
) に置き換えます。<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>"
応答で、ワークスペース レベルの 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 アクセス トークンを使用し、アクセス トークンのスコープに応じて、Azure Databricks アカウント レベルの REST API とワークスペース レベルの REST API に対する認証を行います。 アカウント レベルの REST API を呼び出すには、ご使用の Azure Databricks ユーザー アカウントがアカウント管理者である必要があります。
アカウント レベルの REST API 要求の例
この例では、curl
を Bearer
認証と共に使用して、アカウントに関連付けられているすべてのワークスペースの一覧を取得します。
<oauth-access-token>
を、アカウント レベルの 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 要求の例
この例では、curl
を Bearer
認証と共に使用して、指定されたワークスペースで使用可能なすべてのクラスターを一覧表示します。
<oauth-access-token>
を、アカウント レベルまたはワークスペース レベルの OAuth アクセス トークンで置き換えます。<databricks-instance>
は、Azure Databricks のワークスペース インスタンスの名前 (例:adb-1234567890123456.7.azuredatabricks.net
) に置き換えます。
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"