Udostępnij przez


Konfigurowanie zasad federacji

Federacja tokenów OAuth usługi Databricks umożliwia bezpieczny dostęp do interfejsów API usługi Databricks za pomocą tokenów dostarczanych przez dostawcę tożsamości. Aby włączyć federację tokenów OAuth, należy skonfigurować politykę federacyjną, na poziomie całego konta Databricks lub dla poszczególnych obciążeń.

Na tej stronie opisano sposób tworzenia i konfigurowania zasad federacji tokenu OAuth.

Federacja tożsamości zadaniowej

Federacja tożsamości obciążeń umożliwia automatyczne obciążenia działające poza Azure Databricks dostęp do interfejsów API Azure Databricks bez konieczności używania sekretów Azure Databricks. Administratorzy kont mogą skonfigurować federację tożsamości dla obciążenia roboczego przy użyciu polityki federacji jednostki usługi.

Polityka federacji jednostki usługi jest powiązana z jednostką usługi w Twoim koncie Azure Databricks i zawiera:

  • Dostawca tożsamości (lub wystawca), za pomocą którego podmiot usługi może się uwierzytelniać.
  • Tożsamość obciążenia roboczego (lub podmiot) uprawniona do uwierzytelnienia w roli jednostki usługi Azure Databricks.

Na przykład biorąc pod uwagę następującą zasadę federacji jednostki usługi dla zadania Github Actions:

  • Emitenta:https://token.actions.githubusercontent.com
  • Odbiorców:https://github.com/my-github-org
  • Temat:repo:my-github-org/my-repo:environment:prod

Ta treść JWT umożliwia uwierzytelnianie w usłudze Azure Databricks:

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

Konfigurowanie zasad federacyjnych podmiotu głównego usługi

Administratorzy konta mogą skonfigurować zasady federacji jednostki usługi przy użyciu interfejsu wiersza polecenia usługi Databricks lub interfejsu API usługi Databricks. Możesz utworzyć maksymalnie 20 zasad federacyjnych jednostki usługi na jednostkę usługi Azure Databricks.

Aby skonfigurować zasady federacji jednostki usługi, należy określić następujące elementy:

  • Adres URL wystawcy: Adres URL PROTOKOŁU HTTPS identyfikujący dostawcę tożsamości obciążenia określony w iss oświadczeniach tokenów tożsamości obciążenia.

  • Temat: Unikatowy identyfikator obciążenia w środowisku uruchomieniowym obciążenia. Jeśli nie zostanie określony, wartość domyślna to sub.

  • Odbiorców: Zamierzony odbiorca tokenu określony w oświadczeniu aud . Token jest traktowany jako dopasowanie, jeśli jego odbiorcy pasują do co najmniej jednej grupy odbiorców w zasadach. Jeśli nie zostanie określony, wartością domyślną jest identyfikator konta usługi Azure Databricks.

  • Oświadczenie podmiotu: (opcjonalnie) Określa oświadczenie tokenu, które zawiera tożsamość obciążenia (nazywaną również tematem) tokenu. Jeśli nie zostanie ustawiona, usługa Azure Databricks domyślnie używa sub polecenia . Usługa Databricks zaleca zachowanie domyślnego sub oświadczenia dla federacji tożsamości obciążenia. Wybierz tylko inne oświadczenie, jeśli sub nie jest odpowiednim lub stabilnym identyfikatorem podmiotu, co jest rzadkie. Aby uzyskać szczegółowe informacje, zobacz Przykładowe zasady federacyjne jednostki usługi.

  • Weryfikacja podpisu tokenu: (opcjonalnie) Klucze publiczne lub ich adres URL w formacie zestawów kluczy sieci Web JSON (JWKS) używane do sprawdzania poprawności podpisów tokenu. Kod JWKS JSON obsługuje maksymalnie 5 kluczy. Jeśli dostawca tożsamości publikuje dodatkowe informacje, zamiast tego użyj identyfikatora URI JWKS.

    Jeśli nie określono, usługa Azure Databricks pobiera klucze z dobrze znanego punktu końcowego wystawcy, co jest podejściem zalecanym. Dostawca tożsamości musi obsługiwać metadane dostawcy OpenID pod <issuer-url>/.well-known/openid-configuration, które zawierają jwks_uri określające lokalizację kluczy publicznych używanych do weryfikacji podpisów tokenów.

Interfejs użytkownika usługi Databricks

  1. Jako administrator konta zaloguj się do konsoli konta usługi Azure Databricks pod adresem https://accounts.azuredatabricks.net.
  2. Kliknij pozycję Zarządzanie użytkownikami.
  3. Przejdź do karty Jednostki usługi .
  4. Wybierz jednostkę usługi, dla których chcesz utworzyć zasady.
  5. Przejdź do karty Poświadczenia i wpisy tajne .
  6. Na karcie Zasady federacji kliknij pozycję Utwórz zasady.
  7. Wybierz dostawcę poświadczeń federacyjnych i skonfiguruj odpowiednie pola.
  8. Kliknij pozycję Create policy (Utwórz zasady).

Databricks CLI (Interfejs wiersza polecenia)

Do utworzenia zasad federacyjnych nie można użyć interfejsu wiersza polecenia usługi Azure Databricks w terminalu internetowym obszaru roboczego usługi Azure Databricks.

  1. Zainstaluj lub zaktualizuj najnowszą wersję interfejsu wiersza polecenia usługi Azure Databricks.

  2. Jako administrator konta uwierzytelnij się na koncie usługi Azure Databricks przy użyciu interfejsu wiersza polecenia. Określ ACCOUNT_CONSOLE_URL oraz usługę Azure Databricks ACCOUNT_ID.

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. Pobierz identyfikator liczbowy podmiotu usługi, do którego zostanie zastosowana zasada federacji. (Na przykład 3659993829438643.)

    Jeśli z wyprzedzeniem znasz identyfikator aplikacji jednostki usługi (zazwyczaj wartość identyfikatora GUID, na przykład bc3cfe6c-469e-4130-b425-5384c4aa30bb), możesz określić identyfikator liczbowy jednostki usługi przy użyciu interfejsu wiersza polecenia Databricks.

    databricks account service-principals list --filter 'applicationId eq "<service-principal-application-id>"'
    
  4. Utwórz politykę federacji głównego użytkownika usługi. Oto przykład tworzenia zasad federacyjnych dla akcji usługi 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"
      }
    }'
    

Interfejs API dla konta Databricks

  1. Pobierz identyfikator liczbowy jednostki usługi (na przykład 3659993829438643) z konsoli konta lub przy użyciu interfejsu API jednostki usługi.

  2. Utwórz zasady federacyjne głównej jednostki usługi:

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

    Aby uzyskać pełną dokumentację interfejsu API odniesienia, zobacz Account Federation Policy API.

Przykładowe zasady federacji usługowej jednostki Databricks

Poniższa tabela zawiera przykładowe zasady federacji jednostki usługi i zgodną treść JWT.

Aby uzyskać pełne instrukcje dotyczące włączenia federacji tożsamości dla obciążeń dla niektórych z tych powszechnie używanych dostawców tożsamości, zobacz Włączanie federacji tożsamości dla obciążeń w CI/CD.

Tool Zasady federacji Przykład dopasowania tokenu
Funkcja GitHub Actions Emitenta:https://token.actions.githubusercontent.comAudiencja:https://github.com/<github-org>Temat: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 Emitenta:https://kubernetes.default.svcAudiencja:https://kubernetes.default.svcTemat: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 Emitenta:https://vstoken.dev.azure.com/<org_id>Audiencja:api://AzureADTokenExchangeTemat: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 Emitenta:https://gitlab.example.comAudiencja:https://gitlab.example.comTemat:project_path:my-group/my-project:... { "iss": "https://gitlab.example.com", "aud": "https://gitlab.example.com", "sub": "project_path:my-group/my-project:..." }
CircleCI Emitenta:https://oidc.circleci.com/org/<org_id>Audiencja:<org_id>Temat:7cc1d11b-46c8-4eb2-9482-4c56a910c7ceOświadczenie podmiotu: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" }

Federacja tokenów dla całego konta

Administratorzy kont mogą skonfigurować federację tokenów OAuth na koncie usługi Azure Databricks przy użyciu zasad federacji kont. Zasady federacji kont umożliwiają wszystkim użytkownikom i jednostkom usługi na koncie usługi Azure Databricks uzyskiwanie dostępu do interfejsów API usługi Databricks przy użyciu tokenów od dostawcy tożsamości. Zasady federacji kont określają:

  • Dostawca tożsamości lub wystawca, od którego usługa Azure Databricks będzie przyjmować tokeny.
  • Kryteria mapowania tokenu na odpowiedniego użytkownika lub jednostki usługi Azure Databricks.

Na przykład podane zasady federacji z następującymi polami:

  • Emitenta:https://idp.mycompany.com/oidc
  • Odbiorców:databricks
  • Oświadczenie podmiotu:sub

Ta treść JWT służy do uwierzytelniania w usłudze Azure Databricks jako username@mycompany.com:

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

Konfigurowanie zasad federacji kont

Administratorzy kont mogą skonfigurować zasady federacji kont przy użyciu interfejsu użytkownika usługi Azure Databricks, interfejsu wiersza polecenia usługi Databricks lub interfejsu API REST usługi Databricks. Możesz określić maksymalnie 20 zasad federacji kont na koncie usługi Azure Databricks.

Aby skonfigurować zasady federacji kont, należy określić następujące elementy:

  • Adres URL wystawcy: Adres URL PROTOKOŁU HTTPS identyfikujący dostawcę tożsamości określony w oświadczeniu iss tokenów.

  • Odbiorców: Zamierzony odbiorca tokenu określony w oświadczeniu aud . Token jest traktowany jako dopasowanie, jeśli jego odbiorcy pasują do co najmniej jednej grupy odbiorców w zasadach. Jeśli nie zostanie określony, wartością domyślną jest identyfikator konta usługi Azure Databricks.

  • Oświadczenie podmiotu: Oświadczenie tokenu zawierające nazwę użytkownika usługi Azure Databricks, dla którego wystawiono token. Jeśli nie zostanie określony, wartość domyślna to sub.

  • Weryfikacja podpisu tokenu: (opcjonalnie) Klucze publiczne lub ich adres URL w formacie zestawów kluczy sieci Web JSON (JWKS) używane do sprawdzania poprawności podpisów tokenu. Kod JWKS JSON obsługuje maksymalnie 5 kluczy. Jeśli dostawca tożsamości publikuje dodatkowe informacje, zamiast tego użyj identyfikatora URI JWKS.

    Jeśli nie określono, usługa Azure Databricks pobiera klucze z dobrze znanego punktu końcowego wystawcy, co jest podejściem zalecanym. Dostawca tożsamości musi obsługiwać metadane dostawcy OpenID pod <issuer-url>/.well-known/openid-configuration, które zawierają jwks_uri określające lokalizację kluczy publicznych używanych do weryfikacji podpisów tokenów.

Important

W przypadku federacji całej konta zarejestruj tylko dostawcy tożsamości, które są w pełni zarządzane i zaufane przez organizację, takie jak własny dostawca tożsamości firmy. Nie należy konfigurować federacji całej konta z zewnętrznymi dostawcami tożsamości, które nie są sterowane, takimi jak te zarządzane przez klientów lub partnerów.

Interfejs użytkownika usługi Databricks

  1. Jako administrator konta zaloguj się do konsoli konta usługi Azure Databricks pod adresem https://accounts.azuredatabricks.net.
  2. Kliknij pozycję Ustawienia i przejdź do karty Uwierzytelnianie .
  3. W obszarze Zasady federacji kliknij pozycję Utwórz zasady.
  4. Wprowadź adres URL wystawcy, odbiorców, oświadczenie podmiotu i opcjonalną weryfikację podpisu tokenu.
  5. Kliknij pozycję Create policy (Utwórz zasady).

Databricks CLI (Interfejs wiersza polecenia)

Do utworzenia zasad federacyjnych nie można użyć interfejsu wiersza polecenia usługi Azure Databricks w terminalu internetowym obszaru roboczego usługi Azure Databricks.

  1. Zainstaluj lub zaktualizuj do najnowszej wersji interfejsu wiersza polecenia usługi Databricks.

  2. Jako administrator konta uwierzytelnij się na koncie usługi Azure Databricks przy użyciu interfejsu wiersza polecenia. Określ ACCOUNT_CONSOLE_URL oraz twoje Azure Databricks ACCOUNT_ID.

    databricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
    
  3. Utwórz zasady federacji kont. Przykład:

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

Interfejs API dla konta Databricks

Następujące wywołanie interfejsu API REST usługi Azure Databricks tworzy zasady federacji kont:

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

Aby uzyskać pełną dokumentację interfejsu API odniesienia, zobacz Account Federation Policy API.

Przykładowe zasady federacji kont

Poniższa tabela zawiera przykładowe zasady federacji kont i zgodną treść JWT.

Zasady federacji Przykład dopasowania tokenu
Emitenta:https://idp.mycompany.com/oidcAudiencja:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d { "iss": "https://idp.mycompany.com/oidc", "aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "sub": "username@mycompany.com" }
Emitenta:https://idp.mycompany.com/oidcAudiencja:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dOświadczenie podmiotu: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" }
Emitenta:https://idp.mycompany.com/oidcAudiencja: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" } (podpis zweryfikowany przy użyciu klucza publicznego w zasadach)
Emitenta:https://idp.mycompany.com/oidcAudiencja:2ff814a6-3304-4ab8-85cb-cd0e6f879c1dIdentyfikator URI JWKS:https://idp.mycompany.com/jwks.json { "iss": "https://idp.mycompany.com/oidc", "aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d", "sub": "username@mycompany.com" } (podpis zweryfikowany przy użyciu klucza publicznego pobranego z jwks_uri)

Dalsze kroki

Po skonfigurowaniu zasad federacji dla konta:

  • Skonfiguruj dostawcę tożsamości (IdP), aby wygenerować tokeny, które użytkownicy mogą wymieniać za pomocą usługi Azure Databricks. Aby uzyskać szczegółowe informacje o konfiguracji, zapoznaj się z dokumentacją dostawcy tożsamości. Aby uzyskać instrukcje dotyczące włączania federacji tożsamości obciążenia z typowymi dostawcami tożsamości, zobacz Włączanie federacji tożsamości obciążenia w ciągłej integracji/ciągłego wdrażania.
  • Użyj protokołu JWT od dostawcy tożsamości, aby uzyskać dostęp do interfejsu API usługi Azure Databricks, wymieniając go najpierw na potrzeby tokenu OAuth usługi Azure Databricks. Dołącz token OAuth usługi Azure Databricks w Bearer: nagłówku wywołania interfejsu API, aby ukończyć żądanie. Zestaw JWT musi być prawidłowy i podpisany przy użyciu algorytmów RS256 lub ES256. Aby uzyskać szczegółowe informacje o implementacji, zobacz Uwierzytelnianie przy użyciu tokenu dostawcy tożsamości.