ID プロバイダー トークンを使用して Databricks に対して認証する
この記事では、フェデレーション ID プロバイダーからトークンを渡す手順に従って、 Databricks REST APIs を安全に呼び出し、 Databricks リソースにアクセスします。
始める前に
このタスクを開始する前に、Databricks アカウントまたはサービスプリンシパルのフェデレーション ポリシーを構成しておく必要があります。
設定が完了したら、ID プロバイダーから JSON Web トークン (JWT) を取得して使用し、 Databricks APIsにアクセスできます。 トークンは、RS256 または ES256 アルゴリズムを使用して署名された有効な JWT である必要があります。
フェデレーション ID プロバイダーからのトークンから始まる Databricks APIs へのアクセスを認証するプロセスは次のとおりです。

ID プロバイダーに要求を発行して、フェデレーション JWT を取得します。 フェデレーション JWT を取得する方法の詳細は、ID プロバイダーによって異なります。 詳細については、ID プロバイダーのドキュメントまたは管理者に問い合わせてください。
ID プロバイダーからの JWT を Databricks OAuth トークンと交換します。
Databricks OAuth トークンを使用して Databricks APIsにアクセスします。
ステップ 1: ID プロバイダーに要求を発行して、フェデレーション JWT を取得する
フェデレーション JWT を取得する方法の詳細は、ID プロバイダーによって異なります。 詳細については、ID プロバイダーのドキュメントまたは管理者に問い合わせてください。
ステップ 2: ID プロバイダーからの JWT を Databricks OAuth トークンと交換する
DatabricksOAuthIDDatabricks プロバイダーからの JWT を トークンと交換するには、OAuth 2.0 トークン交換 ( RFC 8693) を使用して、アカウントまたはワークスペースの トークン エンドポイントに要求を送信します。
たとえば、次のコマンドは、アカウントフェデレーションポリシーを使用して、ID プロバイダーからのフェデレーション JWT を Databricks OAuth トークンと交換します。
curl --request POST https://<databricks-workspace-host>/oidc/v1/token \
--data "subject_token=${FEDERATED_JWT_TOKEN}" \
--data 'subject_token_type=urn:ietf:params:oauth:token-type:jwt' \
--data 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
--data 'scope=all-apis'
ヒント
OAuth を使用して Databricks アカウント リソースにアクセスするには、URL を使用します https://<databricks-account-host>/oidc/accounts/<account-id>/v1/token
.
次のコマンド例では、サービスプリンシパル フェデレーション ポリシーを使用して、フェデレーション JWT を Databricks OAuth トークンと交換します。
curl --request POST https://<databricks-workspace-host>/oidc/v1/token \
--data "client_id=${CLIENT_ID}" \
--data "subject_token=${FEDERATED_JWT_TOKEN}" \
--data 'subject_token_type=urn:ietf:params:oauth:token-type:jwt' \
--data 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
--data 'scope=all-apis'
CLIENT_ID
をサービスプリンシパル UUID (7cb2f8a4-49a7-4147-83db-35cb69e5cede
など) に置き換えます。
ID プロバイダーからのトークンが有効で、フェデレーション ポリシーと一致する場合は、 access_token
フィールドに Databricks OAuth トークンを含む標準の JSON 応答を受け取ります。 この OAuth トークンは、 Databricks APIs. 結果の Databricks OAuth トークンには、subject_token
パラメーターで指定された JWT と同じ有効期限 (exp
) 要求があります。
OAuth トークンエンドポイントの応答の例を次に示します。
{
"access_token": "eyJraWQ...odi0WFNqQw",
"scope": "all-apis",
"token_type": "Bearer",
"expires_in": 3600
}
手順 3: 交換された Databricks OAuth トークンを使用して Databricks API に対する認証を行う
その後、生成された Databricks OAuth トークンをベアラー トークンとして使用して、 Databricks APIs. たとえば、Databricks SCIM Me API を呼び出して Databricks ユーザーと表示名を取得するには、次のようにします。
TOKEN='<your-databricks-oauth-token>'
curl --header "Authorization: Bearer $TOKEN" \
--url https://${DATABRICKS_WORKSPACE_HOSTNAME}/api/2.0/preview/scim/v2/Me
応答は次のように表示されます。
{
"userName": "username@mycompany.com",
"displayName": "Firstname Lastname",
}