次の方法で共有


フェデレーション ポリシーを構成する

Databricks OAuth トークン フェデレーションを使用すると、ID プロバイダー (IdP) のトークンを使用して Databricks API に安全にアクセスできます。 OAuth トークンフェデレーションを有効にするには、Databricks アカウント全体またはワークロードのフェデレーション ポリシーを構成する必要があります。

このページでは、OAuth トークンフェデレーション ポリシーを作成して構成する方法について説明します。

ワークロード アイデンティティ フェデレーション

ワークロード ID フェデレーションにより、Azure Databricks の外部で実行されている自動化されたワークロードは、Azure Databricks シークレットを必要とせずに Azure Databricks API にアクセスできます。 アカウント管理者は、サービス プリンシパルのフェデレーション ポリシーを使用してワークロード ID フェデレーションを構成できます。

サービス プリンシパルフェデレーション ポリシーは、Azure Databricks アカウントのサービス プリンシパルに関連付けされ、次を指定します。

  • サービス プリンシパルが認証できる ID プロバイダー (または発行者)。
  • Azure Databricks サービス プリンシパルとして認証することが許可されているワークロード ID (またはサブジェクト)。

たとえば、Github Actions ワークロードの次のサービス プリンシパル フェデレーション ポリシーを考えます。

  • 発行者:https://token.actions.githubusercontent.com
  • 観客:https://github.com/my-github-org
  • 件名:repo:my-github-org/my-repo:environment:prod

この JWT 本文を使用して、Azure 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 を使用して、サービス プリンシパルのフェデレーション ポリシーを構成できます。 Azure Databricks サービス プリンシパルごとに最大 20 個のサービス プリンシパル フェデレーション ポリシーを作成できます。

サービス プリンシパルのフェデレーション ポリシーを構成するには、次を指定する必要があります。

  • 発行者 URL: ワークロード ID トークンの iss 要求で指定された、ワークロード ID プロバイダーを識別する HTTPS URL。

  • 件名: ワークロード ランタイム環境のワークロードの一意識別子。 指定しない場合、既定値は sub です。

  • 観客:aud要求で指定されたトークンの目的の受信者。 対象ユーザーがポリシー内の少なくとも 1 人の対象ユーザーと一致する場合、トークンは一致と見なされます。 指定しない場合、既定値は Azure Databricks アカウント ID です。

  • サブジェクト要求: (省略可能) トークンのワークロード ID (サブジェクトとも呼ばれます) を含むトークン要求を指定します。 設定されていない場合、Azure Databricks では既定で sub が使用されます。 Databricks では、ワークロード ID フェデレーションの既定の sub 要求を保持することをお勧めします。 subが適切または安定したサブジェクト識別子ではない場合にのみ、別の要求を選択します。これはまれです。 詳細については、「 サービス プリンシパルのフェデレーション ポリシーの例」を参照してください。

  • トークン署名の検証: (省略可能) トークン署名の検証に使用される JSON Web キー セット (JWKS) 形式の公開キーまたはその URL。 JWKS JSON では、最大 5 つのキーがサポートされます。 ID プロバイダーが発行する数が多い場合は、代わりに JWKS URI を使用します。

    指定しない場合、Azure Databricks は発行者の既知のエンドポイントからキーを取得します。これが推奨される方法です。 ID プロバイダーは、トークン署名の検証に使用される公開キーの場所を指定する<issuer-url>/.well-known/openid-configurationを含む OpenID プロバイダー メタデータをjwks_uriで提供する必要があります。

Databricks ユーザーインターフェース

  1. アカウント管理者として、 https://accounts.azuredatabricks.netで Azure Databricks アカウント コンソールにサインインします。
  2. [ ユーザー管理] をクリックします。
  3. [ サービス プリンシパル ] タブに移動します。
  4. ポリシーを作成するサービス プリンシパルを選択します。
  5. [ 資格情報とシークレット ] タブに移動します。
  6. [ フェデレーション ポリシー ] タブで、[ ポリシーの作成] をクリックします。
  7. フェデレーション資格情報プロバイダーを選択し、対応するフィールドを構成します。
  8. [ ポリシーの作成] をクリックします。

Databricks コマンドラインインターフェース (CLI)

Azure Databricks ワークスペース Web ターミナル で Azure Databricks CLI を使用してフェデレーション ポリシーを作成することはできません。

  1. Azure Databricks CLI の最新バージョンをインストールまたは更新します。

  2. アカウント管理者として、CLI を使用して Azure Databricks アカウントに対して認証を行います。 ACCOUNT_CONSOLE_URLと Azure Databricks ACCOUNT_IDを指定します。

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. フェデレーション ポリシーが適用されるサービス プリンシパルの数値 ID を取得します。 (例: 3659993829438643)。

    サービス プリンシパル アプリケーション ID (通常は bc3cfe6c-469e-4130-b425-5384c4aa30bb などの GUID 値) が事前にわかっている場合は、Databricks CLI を使用してサービス プリンシパルの数値 ID を特定できます。

    databricks account service-principals list --filter 'applicationId eq "<service-principal-application-id>"'
    
  4. サービス プリンシパルのフェデレーション ポリシーを作成します。 GitHub アクションのフェデレーション ポリシーを作成する例を次に示します。

    databricks 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"
      }
    }'
    

Databricks アカウント API

  1. アカウント コンソールから、またはサービス プリンシパル 3659993829438643 を使用して、サービス プリンシパルの数値 ID (たとえば、) を取得します。

  2. サービス プリンシパルのフェデレーション ポリシーを設定してください。

    curl --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 を参照してください。

Databricks サービス プリンシパル フェデレーション ポリシー例

次の表は、サービス プリンシパルのフェデレーション ポリシーの例と、一致する JWT 本文を示しています。

これらの一部の共通 ID プロバイダーに対してワークロード ID フェデレーションを有効にするための完全な構成手順については、「 CI/CD でワークロード ID フェデレーションを有効にする」を参照してください。

Tool フェデレーション ポリシー 一致するトークン の例
GitHub のアクション Issuer:https://token.actions.githubusercontent.com対象ユーザー:https://github.com/<github-org>件名:repo:<github-org>/<repo>:environment:prod { "iss": "https://token.actions.githubusercontent.com", "aud": "https://github.com/<github-org>", "sub": "repo:<github-org>/<repo>:environment:prod" }
Kubernetes Issuer:https://kubernetes.default.svc対象ユーザー:https://kubernetes.default.svc件名:system:serviceaccount:namespace:podnameJWKS JSON:{"keys":[{"kty":"rsa","e":"AQAB","use":"sig","kid":"<key-id>","alg":"RS256","n":"uPUViFv..."}]} { "iss": "https://kubernetes.default.svc", "aud": ["https://kubernetes.default.svc"], "sub": "system:serviceaccount:namespace:podname" }
Azure DevOps Issuer:https://vstoken.dev.azure.com/<org_id>対象ユーザー:api://AzureADTokenExchange件名:sc://my-org/my-project/my-connection { "iss": "https://vstoken.dev.azure.com/<org_id>", "aud": "api://AzureADTokenExchange", "sub": "sc://my-org/my-project/my-connection" }
GitLab Issuer:https://gitlab.example.com対象ユーザー:https://gitlab.example.com件名:project_path:my-group/my-project:... { "iss": "https://gitlab.example.com", "aud": "https://gitlab.example.com", "sub": "project_path:my-group/my-project:..." }
CircleCI Issuer:https://oidc.circleci.com/org/<org_id>対象ユーザー:<org_id>件名:7cc1d11b-46c8-4eb2-9482-4c56a910c7ceサブジェクト要求:oidc.circleci.com/project-id { "iss": "https://oidc.circleci.com/org/<org_id>", "aud": "<org_id>", "oidc.circleci.com/project-id": "7cc1d11b-46c8-4eb2-9482-4c56a910c7ce" }

アカウント全体のトークン フェデレーション

アカウント管理者は、アカウントフェデレーション ポリシーを使用して、Azure Databricks アカウントで OAuth トークンフェデレーションを構成できます。 アカウントフェデレーション ポリシーを使用すると、Azure Databricks アカウント内のすべてのユーザーとサービス プリンシパルが、ID プロバイダーのトークンを使用して Databricks API にアクセスできるようになります。 アカウント フェデレーション ポリシーでは、次を指定します。

  • Azure Databricks がトークンを受け入れる ID プロバイダーまたは発行者。
  • トークンを対応する Azure Databricks ユーザーまたはサービス プリンシパルにマッピングするための条件。

たとえば、次のフィールドを持つフェデレーション ポリシーを指定します。

  • 発行者:https://idp.mycompany.com/oidc
  • 観客:databricks
  • サブジェクト要求:sub

次の JWT 本文を使用して、 username@mycompany.comとして Azure Databricks に対する認証を行います。

{
  "iss": "https://idp.mycompany.com/oidc",
  "aud": "databricks",
  "sub": "username@mycompany.com"
}

アカウントのフェデレーション ポリシーを構成する

アカウント管理者は、Azure Databricks UI、 Databricks CLI 、または Databricks REST API を使用して、アカウントフェデレーション ポリシーを構成できます。 Azure Databricks アカウントには、最大 20 個のアカウント フェデレーション ポリシーを指定できます。

アカウントのフェデレーション ポリシーを構成するには、次を指定する必要があります。

  • 発行者 URL: トークンの iss 要求で指定された ID プロバイダーを識別する HTTPS URL。

  • 観客:aud要求で指定されたトークンの目的の受信者。 対象ユーザーがポリシー内の少なくとも 1 人の対象ユーザーと一致する場合、トークンは一致と見なされます。 指定しない場合、既定値は Azure Databricks アカウント ID です。

  • サブジェクト要求: トークンが発行されたユーザーの Azure Databricks ユーザー名を含むトークン要求。 指定しない場合、既定値は sub です。

  • トークン署名の検証: (省略可能) トークン署名の検証に使用される JSON Web キー セット (JWKS) 形式の公開キーまたはその URL。 JWKS JSON では、最大 5 つのキーがサポートされます。 ID プロバイダーが発行する数が多い場合は、代わりに JWKS URI を使用します。

    指定しない場合、Azure Databricks は発行者の既知のエンドポイントからキーを取得します。これが推奨される方法です。 ID プロバイダーは、トークン署名の検証に使用される公開キーの場所を指定する<issuer-url>/.well-known/openid-configurationを含む OpenID プロバイダー メタデータをjwks_uriで提供する必要があります。

Important

アカウント全体のフェデレーションの場合は、会社独自の IdP など、組織によって完全に管理され、信頼されている IdP のみを登録します。 顧客やパートナーによって管理される IDP など、制御しない外部 IdP とのアカウント全体のフェデレーションを構成しないでください。

Databricks ユーザーインターフェース

  1. アカウント管理者として、 https://accounts.azuredatabricks.netで Azure Databricks アカウント コンソールにサインインします。
  2. [ 設定] をクリックし、[ 認証 ] タブに移動します。
  3. [ フェデレーション ポリシー] で、[ ポリシーの作成] をクリックします。
  4. 発行者の URL、対象ユーザー、サブジェクト要求、およびオプションのトークン署名の検証を入力します。
  5. [ ポリシーの作成] をクリックします。

Databricks コマンドラインインターフェース (CLI)

Azure Databricks ワークスペース Web ターミナル で Azure Databricks CLI を使用してフェデレーション ポリシーを作成することはできません。

  1. Databricks CLI の最新バージョンをインストールまたは更新します。

  2. アカウント管理者として、CLI を使用して Azure Databricks アカウントに対して認証を行います。 ACCOUNT_CONSOLE_URLと Azure Databricks ACCOUNT_IDを指定します。

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. アカウントのフェデレーション ポリシーを作成します。 例えば次が挙げられます。

    databricks account federation-policy create --json \
    '{
      "oidc_policy": {
        "issuer": "https://idp.mycompany.com/oidc",
        "audiences": [
          "databricks"
        ],
        "subject_claim": "sub"
      }
    }'
    

Databricks アカウント API

次の Azure 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 本文を示します。

フェデレーション ポリシー 一致するトークン の例
Issuer:https://idp.mycompany.com/oidc聴衆:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d { "iss": "https://idp.mycompany.com/oidc", "aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "sub": "username@mycompany.com" }
Issuer:https://idp.mycompany.com/oidc対象ユーザー:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dサブジェクト要求:preferred_username { "iss": "https://idp.mycompany.com/oidc", "aud": ["2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "other-audience"], "preferred_username": "username@mycompany.com", "sub": "some-other-ignored-value" }
Issuer:https://idp.mycompany.com/oidc対象ユーザー:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dJWKS JSON:{"keys":[{"kty":"RSA","e":"AQAB","use":"sig","kid":"<key-id>","alg":"RS256","n":"uPUViFv..."}]} { "iss": "https://idp.mycompany.com/oidc", "aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "sub": "username@mycompany.com" } (ポリシーで公開キーを使用して検証された署名)
Issuer:https://idp.mycompany.com/oidc対象ユーザー:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dJWKS URI:https://idp.mycompany.com/jwks.json { "iss": "https://idp.mycompany.com/oidc", "aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "sub": "username@mycompany.com" } (jwks_uriからフェッチされた公開キーを使用して検証された署名)

次のステップ

アカウントのフェデレーション ポリシーを構成した後:

  • ユーザーが Azure Databricks と交換できるトークンを生成するように ID プロバイダー (IdP) を構成します。 セットアップの詳細については、IdP のドキュメントを参照してください。 一般的な IdP とのワークロード ID フェデレーションを有効にする手順については、「 CI/CD でワークロード ID フェデレーションを有効にする」を参照してください。
  • IdP の JWT を使用して、最初に Azure Databricks OAuth トークンと交換することで、Azure Databricks API にアクセスします。 API 呼び出しの Bearer: ヘッダーに Azure Databricks OAuth トークンを含め、要求を完了します。 JWT は有効であり、RS256 または ES256 アルゴリズムを使用して署名されている必要があります。 実装の詳細については、「 ID プロバイダー トークンを使用した認証」を参照してください。