フェデレーション ポリシーを構成する
Databricks OAuth トークンフェデレーションを使用すると、ID プロバイダー (IdP) からトークンを使用して Databricks APIs に安全にアクセスできます。 OAuth トークンのフェデレーションを有効にするには、フェデレーションポリシーを Databricks アカウント全体またはワークロード用に構成する必要があります。
この記事では、OAuth トークン フェデレーション ポリシーを作成および構成する方法について説明します。
ワークロード ID フェデレーション
ワークロード ID フェデレーションを使用すると、 の外部で実行されている自動化されたワークロードは、Databricks DatabricksAPIシークレットを必要とせずにDatabricks にアクセスできます。アカウント 管理者は、サービスプリンシパル フェデレーション ポリシーを使用してワークロード ID フェデレーションを構成できます。
サービスプリンシパル federation ポリシーは、 Databricks アカウントのサービスプリンシパルに関連付けられ、次の項目を指定します。
- サービスプリンシパルが認証できる ID プロバイダー (または発行者)。
- Databricks サービスプリンシパルとしての認証が許可されているワークロード ID (またはサブジェクト)。
たとえば、 GitHub Actions ワークロードに対して次のサービスプリンシパル フェデレーション ポリシーがあるとします。
- 発行者:
https://token.actions.githubusercontent.com
- 観客:
https://github.com/my-github-org
- 件名:
repo:my-github-org/my-repo:environment:prod
この JWT 本文を使用して、Databricks に対して認証できます。
{
"iss": "https://token.actions.githubusercontent.com",
"aud": "https://github.com/my-github-org",
"sub": "repo:my-github-org/my-repo:environment:prod"
}
サービスプリンシパル フェデレーション ポリシーを構成する
アカウント管理者は、 Databricks CLI または Databricks APIを使用してサービスプリンシパルフェデレーションポリシーを構成できます。 サービスプリンシパルごとに最大 20 個のサービスプリンシパル フェデレーション ポリシーを作成できます Databricks プリンシパル。
サービスプリンシパル フェデレーション ポリシーを設定するには、以下を指定する必要があります。
-
発行者URL: ワークロード ID トークンの
iss
要求で指定された、ワークロード ID プロバイダーを識別する HTTPS URL。 -
件名: ワークロード ランタイム環境内のワークロードの一意の識別子。指定しない場合は、デフォルトは
sub
です。 -
観客:
aud
要求で指定されているトークンの意図された受信者。トークンは、その対象ユーザーがポリシー内の少なくとも 1 つの対象と一致する場合、一致と見なされます。指定しない場合、 デフォルト は アカウント ID Databricks です。 -
サブジェクト要求: (省略可能) トークンのワークロード ID (サブジェクトとも呼ばれます) を含むトークン要求を指定します。設定しない場合、 Databricks は
sub
by デフォルトを使用します。 Databricks 、ワークロード ID フェデレーションの デフォルトsub
要求を維持することをお勧めします。 別の主張を選択するのは、sub
が適切または安定したサブジェクト識別子でない場合のみであり、これはまれです。詳細については、「 サービスプリンシパル フェデレーション ポリシーの例」を参照してください。 -
いつ署名の検証: (オプション) ウィルス署名の検証に使用されるJSON Web Key Sets (JWKS) 形式の公開キーまたはその URL。 JWKS JSON は最大 5 個のキーをサポートします。アイデンティティプロバイダーがさらに公開する場合は、代わりに JWKS URI を使用します。
指定されていない場合、Databricks は発行者の既知のエンドポイントからキーを取得します。これが推奨される方法です。ID プロバイダーは、トークン署名の検証に使用される公開キーの場所を指定する
jwks_uri
を含む OpenID プロバイダー メタデータを<issuer-url>/.well-known/openid-configuration
で提供する必要があります。
- Databricks UI
- Databricks CLI
- Databricks Account API
- アカウント管理者として、
https://accounts.cloud.databricks.com
で Databricks アカウント コンソールにサインインします。 - [ ユーザー管理 ] をクリックします。
- サービスプリンシパル タブに移動します。
- ポリシーを作成するサービスプリンシパルを選択します。
- [ 資格情報とシークレット ] タブに移動します。
- [フェデレーション ポリシー ] タブで、[ ポリシーの作成 ] をクリックします。
- フェデレーション資格情報プロバイダーを選択し、対応するフィールドを構成します。
- 「 ポリシーの作成 」をクリックします。
Databricks ワークスペース Web ターミナルのDatabricks CLIを使用してフェデレーション ポリシーを作成することはできません。
-
最新バージョンの Databricks CLI をインストールまたは更新します。
-
アカウント管理者として、CLI を使用して Databricks アカウントに対して認証します。
ACCOUNT_CONSOLE_URL
と DatabricksACCOUNT_ID
を指定します。Bashdatabricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
-
フェデレーション ポリシーが適用されるサービスプリンシパルの数値 ID を取得します。 (たとえば、
3659993829438643
などです。サービスプリンシパル アプリケーション ID (通常は
bc3cfe6c-469e-4130-b425-5384c4aa30bb
などの GUID 値) が事前にわかっている場合は、次の Databricks CLIを使用してサービスプリンシパルの数値 ID を特定できます。Bashdatabricks account service-principals list --filter 'applicationId eq "<service-principal-application-id>"'
-
サービスプリンシパル federation ポリシーを作成します。 次に、 GitHub Actionsのフェデレーション ポリシーを作成する例を示します。
Bashdatabricks account service-principal-federation-policy create ${SERVICE_PRINCIPAL_NUMERIC_ID} --json \
'{
"oidc_policy": {
"issuer": "https://token.actions.githubusercontent.com",
"audiences": [
"https://github.com/my-github-org"
],
"subject": "repo:my-github-org/my-repo:environment:prod"
}
}'
-
アカウント コンソールから、またはサービスプリンシパルAPIを使用して、サービスプリンシパルの数値 ID (例:
3659993829438643
) を取得します。 -
サービスプリンシパルフェデレーションポリシーを作成します。
Bashcurl --request POST \
--header "Authorization: Bearer $TOKEN" \
"https://accounts.cloud.databricks.com/api/2.0/accounts/${ACCOUNT_ID}/servicePrincipals/${SERVICE_PRINCIPAL_NUMERIC_ID}/federationPolicies" \
--data '{
"oidc_policy": {
"issuer": "https://token.actions.githubusercontent.com",
"audiences": [
"https://github.com/my-github-org"
],
"subject": "repo:my-github-org/my-repo:environment:prod"
}
}'完全な API リファレンス ドキュメントについては、アカウント フェデレーション ポリシー API を参照してください。
Example Databricks サービスプリンシパル federation ポリシー
次の表に、サービスプリンシパル federation ポリシーと対応する JWT 本文の例を示します。
これらの一般的な ID プロバイダーの一部でワークロード ID フェデレーションを有効にするための完全な構成手順については、「 CI/CD でワークロード ID フェデレーションを有効にする」を参照してください。
ツール | フェデレーション ポリシー | 一致するトークンの例 |
---|---|---|
GitHub Actions | 発行者: |
|
Kubernetes の | 発行者: |
|
Azure DevOps | 発行者: |
|
GitLab | 発行者: |
|
CircleCIの | 発行者: |
|
アカウント全体のトークンフェデレーション
アカウント 管理者は OAuth アカウント フェデレーション ポリシーを使用して、 Databricks アカウントでトークン フェデレーションを構成できます。 アカウント federation ポリシー を使用すると、 Databricks アカウント内のすべてのユーザーとサービスプリンシパルが、ID プロバイダーからのトークンを使用して Databricks API にアクセスできます。 アカウント フェデレーション ポリシーでは、次のものを指定します。
- Databricks がトークンを受け入れる ID プロバイダーまたは発行者。
- トークンを対応する Databricks ユーザーまたはサービスプリンシパルにマッピングするための基準。
たとえば、次のフィールドを持つフェデレーションポリシーがあるとします。
- 発行者:
https://idp.mycompany.com/oidc
- 観客:
databricks
- 主題の主張:
sub
この JWT 本文を使用して、次のように Databricks に認証しますusername@mycompany.com
{
"iss": "https://idp.mycompany.com/oidc",
"aud": "databricks",
"sub": "username@mycompany.com"
}
アカウントフェデレーションポリシーを構成する
アカウント 管理者は、 Databricks UI、 Databricks CLI 、または Databricks REST APIを使用してアカウントフェデレーションポリシーを構成できます。 Databricks アカウントでは、最大 20 個のアカウント フェデレーション ポリシーを指定できます。
アカウントフェデレーションポリシーを設定するには、以下を指定する必要があります。
-
発行者URL: トークンの
iss
要求で指定された ID プロバイダーを識別する HTTPS URL。 -
観客:
aud
要求で指定されているトークンの意図された受信者。トークンは、その対象ユーザーがポリシー内の少なくとも 1 つの対象と一致する場合、一致と見なされます。指定しない場合、 デフォルト は アカウント ID Databricks です。 -
主題の主張: トークンが発行されたユーザーの Databricks ユーザー名を含むトークン要求。指定しない場合、デフォルトは
sub
です。 -
いつ署名の検証: (オプション) ウィルス署名の検証に使用されるJSON Web Key Sets (JWKS) 形式の公開キーまたはその URL。 JWKS JSON は最大 5 個のキーをサポートします。アイデンティティプロバイダーがさらに公開する場合は、代わりに JWKS URI を使用します。
指定されていない場合、Databricks は発行者の既知のエンドポイントからキーを取得します。これが推奨される方法です。ID プロバイダーは、トークン署名の検証に使用される公開キーの場所を指定する
jwks_uri
を含む OpenID プロバイダー メタデータを<issuer-url>/.well-known/openid-configuration
で提供する必要があります。
アカウント全体のフェデレーションの場合、 登録する フルマネージド 会社独自の IdP など、組織から信頼されています。 顧客やパートナーが管理するIdPなど、制御できない外部IdPとのアカウント全体のフェデレーションは構成しないでください。
- Databricks UI
- Databricks CLI
- Databricks Account API
- アカウント管理者として、
https://accounts.cloud.databricks.com
で Databricks アカウント コンソールにサインインします。 - [ 設定 ] をクリックし、[ 認証] タブに移動します。
- [フェデレーション ポリシー] で、[ ポリシーの作成 ] をクリックします。
- 発行者の URL、対象ユーザー、サブジェクト要求、およびオプションのトークン署名検証を入力します。
- 「 ポリシーの作成 」をクリックします。
Databricks ワークスペース Web ターミナルのDatabricks CLIを使用してフェデレーション ポリシーを作成することはできません。
-
最新バージョンの Databricks CLI をインストールまたは更新します。
-
アカウント管理者として、CLI を使用して Databricks アカウントに対して認証します。
ACCOUNT_CONSOLE_URL
と DatabricksACCOUNT_ID
を指定します。Bashdatabricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
-
アカウント フェデレーション ポリシーを作成します。例えば:
Bashdatabricks account federation-policy create --json \
'{
"oidc_policy": {
"issuer": "https://idp.mycompany.com/oidc",
"audiences": [
"databricks"
],
"subject_claim": "sub"
}
}'
次の Databricks REST API 呼び出しは、アカウント フェデレーション ポリシーを作成します。
curl --request POST \
--header "Authorization: Bearer $TOKEN" \
"https://accounts.cloud.databricks.com/api/2.0/accounts/${ACCOUNT_ID}/federationPolicies" \
--data '{
"oidc_policy": {
"issuer": "https://idp.mycompany.com/oidc",
"audiences": [
"databricks"
],
"subject_claim": "sub"
}
}'
完全な API リファレンス ドキュメントについては、アカウント フェデレーション ポリシー API を参照してください。
アカウントフェデレーションポリシーの例
次の表に、アカウント フェデレーション ポリシーの例と、一致する JWT 本文を示します。
フェデレーション ポリシー | 一致するトークンの例 |
---|---|
発行者: |
|
発行者: |
|
発行者: |
|
発行者: |
|
次のステップ
アカウントのフェデレーションポリシーを設定した後、次の操作を行います。
- ユーザーが Databricks と交換できるトークンを生成するように ID プロバイダー (IdP) を構成します。セットアップの詳細については、IdP のドキュメントを参照してください。一般的な IdP でワークロード ID フェデレーションを有効にする手順については、「 CI/CD でのワークロード ID フェデレーションの有効化」を参照してください。
- IdP の JWT を使用して、最初に Databricks OAuth トークンと交換して Databricks API にアクセスします。API 呼び出しの
Bearer:
ヘッダーに Databricks OAuth トークンを含めて、要求を完了します。JWT は有効であり、RS256 または ES256 アルゴリズムを使用して署名されている必要があります。実装の詳細については、「 ID プロバイダートークンを使用した認証」を参照してください。