メインコンテンツまでスキップ

Google IDで認証する

認証するには Databricks REST APIs、 Databricks OAuth、すべてのクラウド プラットフォームで推奨されるソリューション。OAuth 2.0 は、Databricks が委任された承認に使用する標準プロトコルです。REST APIsへの安全なアクセスを提供し、次のようなメカニズムをサポートします 更新トークン 長期にわたってアクセスを維持します。

また、主に Google Cloud で Google ID トークンを使用して認証することもできます。これらのトークンは、 OpenID Connect(OIDC)などのオープンスタンダードに従っています。

Databricks REST APIs 、一般に Google ID として知られる Google 発行の OIDC のみをサポートします。 混乱を避けるため、このページの残りの部分では 、 OIDC トークン ではなく Google ID トークン という用語を使用します。

注記

独自の ID プロバイダーを持ち込んで Databricks へのシングル サインオンを構成する場合、Google ID トークンで認証することはできません。

このページでは、 Databricks REST APIs使用するための認証ステップと、必要な Google クラウド サービス アカウントを作成し、これらのアカウントのアカウントを生成する方法について説明します。

サービス アカウントの設定と認証フロー​

アカウントレベルのAPIsまたはワークスペースレベルのAPIsに 1 つの Google ID トークンを使用できますが、両方の目的に使用することはできません。ワークスペースレベルとアカウントレベルの APIs にトークンを設定する手順は、ほとんど同じです。 重要な違いは、説明書に記載されています。

本番運用環境では Databricks 、次の 2 つの Google Cloud サービス アカウントを使用することをお勧めします。

  • SA-1 : ワークロードを実行し、トークンを取得します。
  • SA-2 : Databricks リソースと GCP リソースに対するアクセス許可を保持します。

SA-1 を Databricks REST APIs呼び出すために、SA-2 を偽装する権限を SA-1 に付与します。

この偽装モデルでは、1 つのチームがワークロードのセキュリティを管理し、別のチームがリソースのセキュリティを管理できます。偽装のアクセス許可は必要な場合にのみ付与するため、このアプローチは組織にセキュリティと柔軟性を提供します。

開発またはテストでは、次のいずれかのオプションを使用してセットアップを簡略化できます。

  • Google ユーザー アカウント を使用して SA-2 になりすます。roles/iam.serviceAccountTokenCreatorロールが必要です。
  • 1 つのサービス アカウント を使用して、SA-1 と SA-2 の両方として機能します。

資格情報のパススルー​

いくつかの Databricks REST API メソッドでは 、資格情報のパススルー が必要です。これらのメソッドを呼び出すには、Google ID に加えて、HTTP ヘッダーで cloud-platform スコープを含む Google OAuth アクセス トークン も渡す必要があります。Databricks サーバーは、Google OAuth アクセス トークンを使用して、呼び出し元の代わりに Google Cloud APIを呼び出します。

Databricks では、アクセス トークンは検証または保持されません。

重要

操作に認証情報のパススルーが必要かどうかを判断するには、各 API 操作の API ドキュメントを参照してください。これらの API には、要求に X-Databricks-GCP-SA-Access-Token HTTP ヘッダーが必要です。

ステップ 1: 2 つのサービス アカウントを作成する​

  1. 新しい Google Cloud サービス アカウントを 2 つ作成します。Google の記事 「サービス アカウントの作成」の指示に従います。Google Cloud Console を使用するには、 サービス アカウント ページに移動し、作成する Google Cloud プロジェクトを選択します。 これらのサービス アカウントを作成するGoogle Cloud プロジェクトは、 Databricks ワークスペースに使用するプロジェクトと一致する必要はなく、新しいサービス アカウントも互いに同じ Google Cloud プロジェクトを使用する必要はありません。

    • トークン-creating サービス アカウント (SA-1): このサービス アカウントは、メイン サービス アカウントのトークンの作成を自動化します。 これらのトークンは、 Databricks REST APIを呼び出すために使用されます。 Googleのドキュメントではこれを SA-1 と呼んでいます。
    • Main サービス アカウント for Databricks REST API (SA-2): このサービス アカウントは、 Databricks REST API および自動化されたワークフローのプリンシパル (自動化ユーザー) として機能します。 Googleのドキュメントではこれを SA-2 と呼んでいます。

    両方のサービス アカウントのEメール アドレスを保存して、後の手順で使用します。

  2. トークン作成サービス アカウント (SA-1) の サービス アカウント キー を作成し、 SA-1-key.jsonというローカル ファイルに保存します。

    1. Google Cloud Console のサービス アカウント ページで、SA-1 の Eメール アドレスをクリックします。
    2. [ キー] タブに移動します。
    3. [キーの追加 ] > [ 新しいキーの作成 ] をクリックします。
    4. キータイプとして、[ JSON] を選択します。
    5. 作成 をクリックします。
    6. Web ページは、キー ファイルをブラウザにダウンロードします。そのファイルをローカルの作業ディレクトリに移動し、名前を . SA-1-key.jsonに変更します。

    その他の手順については、Google の記事「 サービス アカウント キーの作成」を参照してください。

  3. トークン作成サービスアカウント (SA-1) に、メインのサービスアカウント アカウント (SA-2) のサービスアカウントトークン作成者ロールを付与します。

    1. Google Cloud Console のサービス アカウント ページで、SA-2 の Eメール アドレスをクリックします。
    2. 権限 タブに移動します。
    3. [アクセス権を持つプリンシパル] をクリックします。
    4. [ アクセス権を付与 ] をクリックします。
    5. [新しいプリンシパル ] フィールドに、トークンを作成する SA (SA-1) の Eメール アドレスを貼り付けます。
    6. [ ロール] フィールドで、[ サービスアカウントトークン作成者 ] を選択します。
    7. 保存 をクリックします。

ステップ 2: Google ID トークンを作成する​

Databricks では、Google Cloud CLI (gcloud) を使用して ID トークンを生成し、 Databricks REST APIを呼び出すことをお勧めします。

重要

生成された ID トークンは 1 時間で期限切れになります。その時間内に残りのすべてのステップを完了する必要があります。Databricks APIの呼び出しなど、後の手順を完了する前にトークンの有効期限が切れた場合は、この手順を繰り返して新しい Google ID トークンを生成する必要があります。

  1. Google Cloud CLI をマシンにインストールします。gcloud ツールのインストールに関する Google の記事をご覧ください。

  2. 次のコマンドを実行して、メイン サービス アカウントの ID トークンを生成します。

    • <SA-1-key-json> を JSON 形式の SA-1 キー ファイルへのパスに置き換えます。
    • <SA-2-email>をSA-2のEメールアドレスに置き換えてください。
    • ユースケースに基づいて、次のように <audience> を置き換えます。
      • ワークスペースレベルのAPIsの場合は 、 https://999999999992360.0.gcp.databricks.comの形式のワークスペース URL に置き換えます。すべてのワークスペースには、異なる一意のワークスペース URL があります。複数のワークスペースで APIs を呼び出すには、異なる audience 値を持つ複数のGoogle ID トークンを作成します。
      • アカウントレベルの API の場合は 、 https://accounts.gcp.databricks.comに置き換えます。異なるアカウントはすべて同じ audience 値を共有します。

    本番運用システムで使用する以下のコマンドを実行します。

    Bash
    gcloud auth login --cred-file=<SA-1-key-json>

    gcloud auth print-identity-token \
    --impersonate-service-account="<SA-2-email>" \
    --include-email \
    --audiences="<audience>"

    本番運用以外で、ユーザーアカウントを使用してSA-2になりすます場合は、次のコマンドを使用します。

    Bash
    gcloud auth login

    gcloud auth print-identity-token \
    --impersonate-service-account="<SA-2-email>" \
    --audiences="<audience>" --include-email

    本番運用以外で使用する場合、SA-1 と SA-2 の両方に 1 つのサービス アカウントを使用する場合は、サービス アカウントのキー JSON ファイルと共に次のコマンドを使用します。

    Bash
    gcloud auth login --cred-file=<SA-key-json>

    gcloud auth print-identity-token --audiences="<audience>"
  3. 出力の末尾にある長い行を google-id-token-sa-2.txtというファイルに保存します。

    次のようなテキストが出力されます。

    WARNING: This command is using service account impersonation. All API calls will be executed as [<SA-2-email>].

    eyJhba7s86dfa9s8f6a99das7fa68s7d6...N8s67f6saa78sa8s7dfiLlA

ステップ 3: Google OAuth アクセス トークンを作成する(認証情報のパススルーが必要な API のみ)​

注記

この手順は、資格情報のパススルーが必要な API を呼び出す場合にのみ必要です。 操作に認証情報のパススルーが必要かどうかを判断するには、各 API 操作の API ドキュメントを参照してください。

アクセス トークンを生成する要求には、アクセス トークンの有効期間を定義する lifetime フィールドが含まれます。トークンを 5 分間だけアクティブにする必要がある場合は、 300s (300 秒) に設定します。次の例では、1 時間を表す 3600sを使用しています。

重要
  • 残りのすべてのステップをその制限時間内に完了する必要があります。Databricks APIの呼び出しなど、後の手順を完了する前に時間が経過した場合は、この手順を繰り返して新しい Google OAuth アクセス トークンを生成する必要があります。
  • デフォルトでは、時間 (3600s) が lifetime フィールドに設定できる最大期間です。この制限を延長するには、Google 顧客サポートに連絡して例外をリクエストしてください。
  1. 次のコマンドを実行します。<SA-2-email> を SA-2 のサービス アカウント Eメール アドレスに置き換えます。本番運用以外の使用またはテストで、単一のサービスアカウントを使用している場合、またはユーザーアカウントを使用してサービスアカウントを偽装している場合は、 <SA-2-email> をサービスアカウントのEメールアドレスに置き換えてください。

    Bash
    gcloud auth print-access-token --impersonate-service-account=<SA-2-email>
  2. 出力の末尾にある長い行を access-token-sa-2.txtというファイルに保存します。

    次のようなテキストが出力されます。

    WARNING: This command is using service account impersonation. All API calls will be executed as [<SA-2-email>].

    eyJhba7s86dfa9s8f6a99das7fa68s7d6...N8s67f6saa78sa8s7dfiLlA

ステップ 4: メイン サービス アカウントをユーザーとして追加する​

Google ID トークンを使用してワークスペースレベルのAPIsまたはアカウントレベルのDatabricksAPIsを呼び出すには、適切なDatabricks環境のユーザーとしてメインサービスアカウント(SA-2)を追加します。

  • ワークスペース レベルの APIsの場合、SA-2 をワークスペースにユーザーとして追加します。
  • アカウント レベルの APIsの場合、アカウントコンソールでSA-2をユーザーとして追加します。

audience フィールドはベース URL に基づいて変化するため、API タイプごとに個別の Google ID トークンを生成する必要があります。詳しくは、 Google ID トークンを作成するをご覧ください。

注記

Databricks では、API 要求の呼び出し元 ID として SA-2 が使用されます。トークン作成サービス アカウント (SA-1) を Databricks に追加する必要はありません。SA-1 は SA-2 を偽装してトークンを生成するだけで、Databricks と直接対話しません。

ワークスペース API​

Google ID トークンを使用して ワークスペースレベルの APIsを認証するには、アカウント にユーザーを追加する の ワークスペース管理者設定 タブの手順に従ってください。プロンプトが表示されたら、メインサービスアカウント(SA-2)のEメールアドレスを入力します。

オプションで、呼び出し Databricks 予定の REST APIs と使用するデータオブジェクトに応じて、新しいサービスアカウントに必要なグループメンバーシップとアクセス制御設定を追加します。 グループとアクセス制御リストを参照してください。

アカウントレベルの API​

Google ID トークンを使用して アカウントレベルの APIs を認証するには、アカウントに ユーザーを追加する アカウント コンソール タブの手順に従ってください。プロンプトが表示されたら、メインサービスアカウント(SA-2)のEメールアドレスを入力します。 サービス アカウントの目的を明確に反映するように名前を設定します。

手順 5: Databricks API を呼び出す​

REST API認証時に提供する必要があるトークンは、予定されている使用方法 (アカウント API またはワークスペース レベルのAPI) によって異なります。Google ID トークンの作成時に フィールドが異なるため、1 つの GoogleAPI audiencesID トークンを使用して両方のタイプの にアクセスすることはできません。

次の HTTP ヘッダーは、Google ID を使用した Databricks 認証に使用されます。

HTTP ヘッダー名

説明

どのような種類の API が必要ですか?

Authorization

ベアラートークンとしてのSA-2のGoogle IDトークン。 構文は Authentication: Bearer <token>です。

すべてのAPI

X-Databricks-GCP-SA-Access-Token

SA-2 の Google OAuth アクセス トークン。

アカウントレベルの API のみ

HTTP ヘッダー名

説明

どのような種類の API が必要ですか?

Authorization

ベアラートークンとしてのSA-2のGoogle IDトークン。 構文は Authentication: Bearer <token>です。

すべてのAPI

X-Databricks-GCP-SA-Access-Token

SA-2 の Google OAuth アクセス トークン。

アカウントレベルの API のみ

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

ワークスペースの Databricks REST API を呼び出すには、次の構文で Authorization HTTP ヘッダーに Google ID トークンを渡します。

Authorization: Bearer <google-id-token>

提供するトークンには、次の属性が必要です。

  • アクセスするワークスペースは、トークンの作成時に指定したワークスペース URL と一致する必要があります。「ステップ 2: Google ID トークンを作成する」を参照してください。
  • 偽装されるサービス アカウント (SA-2) は、ワークスペースのユーザーである必要があります。ワークスペース APIを参照してください。

次の例では、ワークスペース レベルのAPIを呼び出して、クラスターを一覧表示します。

  • <google-id-token> を google-id-token-sa-2.txtファイルに保存した Google ID トークンに置き換えます。
  • <workspace-URL>を、 https://1234567890123456.7.gcp.databricks.comのような形式のベースとなるワークスペースURLに置き換えます。
Bash
curl \
-X GET \
--header 'Authorization: Bearer <google-id-token>' \
<workspace-URL>/api/2.0/clusters/list

認証情報のパススルーを使用しない API のアカウントレベルの API リクエストの例​

次の例では、アカウント API を呼び出してワークスペースの一覧を取得します。

  • <google-id-token> を google-id-token-sa-2.txtファイルに保存した Google ID トークンに置き換えます。
  • <account-id>をアカウントIDに置き換えてください。アカウントIDを見つけるには:
    1. アカウント管理者として、 Databricks アカウント コンソールに移動します。
    2. 右上のユーザー名の横にある下向きの矢印をクリックします。
    3. ドロップダウンメニューでは、 アカウントID をコピーできます。
Bash
curl \
-X GET \
--header 'Authorization: Bearer <google-id-token>' \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/workspaces

認証情報のパススルーを使用したアカウントレベルの API リクエストの例​

次の例では、アカウント API を呼び出してワークスペースの一覧を取得します。

  • <google-id-token> を google-id-token-sa-2.txtファイルに保存した Google ID トークンに置き換えます。

  • <access-token-sa-2> を、ファイル access-token-sa-2.txtに保存した SA-2 アクセス トークンに置き換えます。

  • <account-id>をアカウントIDに置き換えてください。アカウントIDを見つけるには:

    1. アカウント管理者として、 Databricks アカウント コンソールに移動します。
    2. 右上のユーザープロファイルアイコンをクリックします。
    3. 表示されるポップアップで、ID の右側にあるアイコンをクリックしてアカウント ID をコピーします。

    アカウント ID を見つけます。

Bash
curl \
-X GET \
--header 'Authorization: Bearer <google-id-token>' \
--header 'X-Databricks-GCP-SA-Access-Token: <access-token-sa-2>' \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/workspaces