Dela via


Konfigurera en federationspolicy

Med Databricks OAuth-tokenfederation kan du på ett säkert sätt komma åt Databricks-API:er med hjälp av token från din identitetsprovider (IdP). Om du vill aktivera OAuth-tokenfederation måste du konfigurera en federationsprincip, antingen som Databricks-kontoomfattande eller för arbetsbelastningar.

På den här sidan beskrivs hur du skapar och konfigurerar en federationsprincip för OAuth-token.

Identitetsfederation för arbetsbelastning

Med arbetsbelastningsidentitetsfederation kan dina automatiserade arbetsbelastningar som körs utanför Azure Databricks komma åt Azure Databricks-API:er utan att azure Databricks-hemligheter behövs. Kontoadministratörer kan konfigurera arbetsbördsidentitetsfederation med hjälp av en federationsprincip för tjänsthuvudnamn.

En federationspolicy för tjänstehuvudidentitet är associerad med en tjänstehuvudidentitet i ditt Azure Databricks-konto och anger:

  • Identitetsprovidern (eller utfärdaren) från vilken tjänstens huvudprincip kan autentiseras.
  • Den arbetsbelastningsidentitet (eller ämne) som tillåts autentiseras som Tjänstens huvudnamn för Azure Databricks.

Till exempel, givet följande federationspolicy för tjänsteprincipal för ett arbetsflöde med GitHub Actions:

  • Utfärdare:https://token.actions.githubusercontent.com
  • Publik:https://github.com/my-github-org
  • Subjekt:repo:my-github-org/my-repo:environment:prod

Du kan använda den här JWT-brödtexten för att autentisera till Azure Databricks:

{
  "iss": "https://token.actions.githubusercontent.com",
  "aud": "https://github.com/my-github-org",
  "sub": "repo:my-github-org/my-repo:environment:prod"
}

Konfigurera en federationspolicy för tjänstehuvudenhet

Kontoadministratörer kan konfigurera en federationsprincip för tjänstens huvudnamn med hjälp av Databricks CLI eller Databricks-API:et. Du kan skapa högst 20 federationsprinciper för tjänstens huvudnamn per Azure Databricks-tjänstens huvudnamn.

Om du vill konfigurera en federationsprincip för tjänstens huvudnamn måste du ange följande:

  • Utfärdar-URL: En HTTPS-URL som identifierar arbetsbelastningsidentitetsprovidern, som anges i anspråket iss för arbetsbelastningsidentitetstoken.

  • Subjekt: Den unika identifieraren för arbetsbelastningen i arbetsbelastningens körningsmiljö. Om det är ospecificerat är substandardvärdet .

  • Publik: Den avsedda mottagaren av token, som anges i anspråket aud . Token betraktas som en matchning om dess målgrupp matchar minst en målgrupp i principen. Om det är ospecificerat är standardinställningen ditt Azure Databricks-konto-ID.

  • Ämnesanspråk: (Valfritt) Anger tokenanspråket som innehåller arbetsbelastningsidentiteten (kallas även ämne) för token. Om den inte har angetts använder sub Azure Databricks som standard. Databricks rekommenderar att du behåller standardanspråket sub för arbetsbelastningsidentitetsfederation. Välj bara ett annat anspråk om sub det inte är en lämplig eller stabil ämnesidentifierare, vilket är sällsynt. Mer information finns i Exempel på federationsprinciper för tjänstens huvudnamn.

  • Validering av tokensignatur: (valfritt) De offentliga nycklarna, eller deras URL, i JSON Web Key Sets-format (JWKS) som används för att verifiera tokensignaturer. JWKS JSON stöder upp till 5 nycklar. Om din identitetsprovider publicerar mer använder du en JWKS-URI i stället.

    Om det är ospecificerat hämtar Azure Databricks nycklarna från utfärdarens välkända slutpunkt, vilket är den rekommenderade metoden. Din identitetsleverantör måste tillhandahålla OpenID-leverantörsmetadata på <issuer-url>/.well-known/openid-configuration som innehåller en jwks_uri angiven plats för de offentliga nycklar som används för att verifiera tokensignaturerna.

Databricks-användargränssnitt

  1. Som kontoadministratör loggar du in på Azure Databricks-kontokonsolen på https://accounts.azuredatabricks.net.
  2. Klicka på Användarhantering.
  3. Gå till fliken Tjänstens huvudnamn .
  4. Välj tjänstens huvudnamn att skapa principen för.
  5. Gå till fliken Autentiseringsuppgifter och hemligheter .
  6. Under fliken Federationsprinciper klickar du på Skapa princip.
  7. Välj en federerad provider för autentiseringsuppgifter och konfigurera motsvarande fält.
  8. Klicka på Create policy (Skapa princip).

Databricks kommandoradsgränssnitt (CLI)

Du kan inte använda Azure Databricks CLI i webbterminalen för Azure Databricks-arbetsytan för att skapa en federationsprincip.

  1. Installera eller uppdatera till den senaste versionen av Azure Databricks CLI.

  2. Som kontoadministratör autentiserar du till ditt Azure Databricks-konto med hjälp av CLI. Ange ACCOUNT_CONSOLE_URL och din Azure Databricks ACCOUNT_ID:

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. Hämta det numeriska ID:t för tjänstens huvudenhet som ska ha federationsprincipen tillämpad. (Till exempel 3659993829438643.)

    Om du känner till program-ID:t för tjänstens huvudnamn (vanligtvis ett GUID-värde, till exempel bc3cfe6c-469e-4130-b425-5384c4aa30bb) i förväg, kan du sedan fastställa tjänstens huvudnamns numeriska ID med hjälp av Databricks CLI:

    databricks account service-principals list --filter 'applicationId eq "<service-principal-application-id>"'
    
  4. Skapa federationspolicyn för tjänstens huvudprincip. Här är ett exempel på hur du skapar en federationsprincip för en GitHub-åtgärd:

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

Api för Databricks-konto

  1. Hämta det numeriska ID:t för tjänstens huvudnamn (till exempel 3659993829438643) från kontokonsolen eller med hjälp av API:et för tjänstens huvudnamn.

  2. Skapa federationsprincipen för tjänstens huvudnamn:

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

    Fullständig API-referensdokumentation finns i Account Federation Policy API.

Exempel på federationsprinciper för Databricks-tjänstehuvud

Följande tabell innehåller exempel på federationsprinciper för tjänstehuvud och det matchande JWT-innehållet.

Fullständiga konfigurationssteg för att aktivera arbetsbelastningsidentitetsfederation för några av dessa vanliga identitetsprovidrar finns i Aktivera arbetsbelastningsidentitetsfederation i CI/CD.

Tool Federationsprincip Exempel på matchande token
GitHub Actions Utfärdare:https://token.actions.githubusercontent.comPublik:https://github.com/<github-org>Subjekt: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 Utfärdare:https://kubernetes.default.svcPublik:https://kubernetes.default.svcSubjekt: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 Utfärdare:https://vstoken.dev.azure.com/<org_id>Publik:api://AzureADTokenExchangeSubjekt: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 Utfärdare:https://gitlab.example.comPublik:https://gitlab.example.comSubjekt:project_path:my-group/my-project:... { "iss": "https://gitlab.example.com", "aud": "https://gitlab.example.com", "sub": "project_path:my-group/my-project:..." }
CircleCI Utfärdare:https://oidc.circleci.com/org/<org_id>Publik:<org_id>Subjekt:7cc1d11b-46c8-4eb2-9482-4c56a910c7ceÄmnesanspråk: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" }

Kontoomfattande tokenintegration

Kontoadministratörer kan konfigurera OAuth-tokenfederation i Azure Databricks-kontot med hjälp av en kontofederationsprincip. Med en kontofederationsprincip kan alla användare och tjänsthuvudnamn i ditt Azure Databricks-konto komma åt Databricks-API:er med hjälp av token från din identitetsprovider. En kontofederationspolicy anger följande:

  • Identitetsprovidern eller utfärdaren som Azure Databricks accepterar token från.
  • Kriterierna för att mappa en token till motsvarande Azure Databricks-användare eller tjänstens huvudnamn.

Till exempel med en federationsprincip med följande fält:

  • Utfärdare:https://idp.mycompany.com/oidc
  • Publik:databricks
  • Ämnesanspråk:sub

Använd den här JWT-brödtexten för att autentisera till Azure Databricks som username@mycompany.com:

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

Konfigurera en kontofederationspolicy

Kontoadministratörer kan konfigurera en kontofederationsprincip med hjälp av Azure Databricks-användargränssnittet, Databricks CLI eller Databricks REST API. Du kan ange högst 20 kontofederationsprinciper i ditt Azure Databricks-konto.

Om du vill konfigurera en kontofederationsprincip måste du ange följande:

  • Utfärdar-URL: En HTTPS-URL som identifierar din identitetsprovider, som anges i anspråket iss för dina token.

  • Publik: Den avsedda mottagaren av token, som anges i anspråket aud . Token betraktas som en matchning om dess målgrupp matchar minst en målgrupp i principen. Om det är ospecificerat är standardinställningen ditt Azure Databricks-konto-ID.

  • Ämnesanspråk: Tokenanspråket som innehåller Azure Databricks-användarnamnet för användaren som token utfärdades för. Om det är ospecificerat är substandardvärdet .

  • Validering av tokensignatur: (valfritt) De offentliga nycklarna, eller deras URL, i JSON Web Key Sets-format (JWKS) som används för att verifiera tokensignaturer. JWKS JSON stöder upp till 5 nycklar. Om din identitetsprovider publicerar mer använder du en JWKS-URI i stället.

    Om det är ospecificerat hämtar Azure Databricks nycklarna från utfärdarens välkända slutpunkt, vilket är den rekommenderade metoden. Din identitetsleverantör måste tillhandahålla OpenID-leverantörsmetadata på <issuer-url>/.well-known/openid-configuration som innehåller en jwks_uri angiven plats för de offentliga nycklar som används för att verifiera tokensignaturerna.

Important

För kontoomfattande federation bör du bara registrera IP-adresser som är fullständigt hanterade och betrodda av din organisation, till exempel företagets egen IdP. Konfigurera inte kontoomfattande federation med externa IP-adresser som du inte kontrollerar, till exempel de som hanteras av kunder eller partner.

Databricks-användargränssnitt

  1. Som kontoadministratör loggar du in på Azure Databricks-kontokonsolen på https://accounts.azuredatabricks.net.
  2. Klicka på Inställningar och gå till fliken Autentisering .
  3. Under Federationsprinciper klickar du på Skapa princip.
  4. Ange utfärdarens URL, målgrupper, ämnesanspråk och valfri validering av tokensignatur.
  5. Klicka på Create policy (Skapa princip).

Databricks kommandoradsgränssnitt (CLI)

Du kan inte använda Azure Databricks CLI i webbterminalen för Azure Databricks-arbetsytan för att skapa en federationsprincip.

  1. Installera eller uppdatera till den senaste versionen av Databricks CLI.

  2. Som kontoadministratör autentiserar du till ditt Azure Databricks-konto med hjälp av CLI. Ange ACCOUNT_CONSOLE_URL och din Azure Databricks ACCOUNT_ID.

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. Skapa principen för kontofederation. Till exempel:

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

Api för Databricks-konto

Följande AZURE Databricks REST API-anrop skapar en kontofederationsprincip:

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

Fullständig API-referensdokumentation finns i Account Federation Policy API.

Exempel på kontofederationsprinciper

Följande tabell innehåller exempel på kontofederationsprinciper och matchande JWT-innehåll.

Federationsprincip Exempel på matchande token
Utfärdare:https://idp.mycompany.com/oidcPublik:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d { "iss": "https://idp.mycompany.com/oidc", "aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "sub": "username@mycompany.com" }
Utfärdare:https://idp.mycompany.com/oidcPublik:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dÄmnesanspråk: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" }
Utfärdare:https://idp.mycompany.com/oidcPublik: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" } (signatur verifierad med offentlig nyckel i principen)
Utfärdare:https://idp.mycompany.com/oidcPublik: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" } (signatur verifierad med offentlig nyckel som hämtats från jwks_uri)

Nästa steg

När du har konfigurerat en federationsprincip för ditt konto:

  • Konfigurera identitetsprovidern (IdP) för att generera token som användarna kan utbyta med Azure Databricks. Mer information finns i IdP:ts dokumentation. Anvisningar för att aktivera arbetsbelastningsidentitetsfederation med vanliga IP-adresser finns i Aktivera arbetsbelastningsidentitetsfederation i CI/CD.
  • Använd en JWT från din IdP för att komma åt Azure Databricks-API:et genom att först byta ut den mot en Azure Databricks OAuth-token. Inkludera Azure Databricks OAuth-token i Bearer: rubriken för DITT API-anrop för att slutföra begäran. JWT måste vara giltig och signerad med RS256- eller ES256-algoritmerna. Mer information om implementering finns i Autentisera med en identitetsprovidertoken.