Configurar uma política de federação
Visualização
A federação de tokens OAuth da Databricks está em Public Preview.
Databricks OAuth A federação de tokens permite que o senhor acesse com segurança Databricks APIs usando tokens do seu provedor de identidade (IdP). Para ativar a federação de tokens OAuth, o senhor deve configurar uma política de federação, seja como Databricks account-wide ou para cargas de trabalho.
Este artigo descreve como criar e configurar uma política de federação de tokens OAuth.
O Databricks CLI Databricks workspace senhor não pode criar uma política de federação usando o no terminal da Web .
federação de tokens em toda a conta
Os administradores de conta podem configurar a federação de tokens OAuth no site Databricks account usando uma política de federação account. Uma política de federação account permite que todos os usuários e entidades de serviço em seu Databricks account acessem Databricks APIs usando tokens de seu provedor de identidade. Uma política de federação account especifica:
- O provedor de identidade ou emissor do qual a Databricks aceitará tokens.
- Os critérios para mapear um token para o usuário ou entidade de serviço correspondente em Databricks.
Por exemplo, a seguinte política de federação account é apresentada:
issuer: "https://idp.mycompany.com/oidc"
audiences: ["databricks"]
subject_claim: "sub"
Esse corpo JWT pode ser usado para autenticar a Databricks como username@mycompany.com
:
{
"iss": "https://idp.mycompany.com/oidc",
"aud": "databricks",
"sub": "username@mycompany.com"
}
Configurar uma política de federação account
Para configurar uma política de federação account, o senhor deve especificar:
-
O emissor de tokens necessário, especificado na reivindicação
iss
do seu tokens. O emissor é um URL HTTPS que identifica seu provedor de identidade. -
Os públicos de tokens permitidos, especificados na reivindicação
aud
do seu tokens. Esse identificador representa o destinatário dos tokens. Desde que o público nos tokens corresponda a pelo menos um público na política, os tokens são considerados correspondentes. Se não for especificado, o valor default será sua ID Databricks account . -
A reivindicação em questão . Isso indica qual reivindicação de tokens contém o nome de usuário Databricks do usuário para o qual os tokens foram emitidos. Se não for especificado, o valor default será
sub
. -
Opcionalmente, a chave pública (ou o URL da chave pública) usada para validar a assinatura do seu tokens, no formato JSON Web key Sets (JWKS). Se não for especificado (recomendado), o site Databricks obtém automaticamente a chave pública do conhecido site do emissor endpoint. Databricks recomenda enfaticamente que o senhor confie no conhecido site endpoint do emissor para descobrir a chave pública.
Se você não especificar um JWKS ou um jwks_uri
em sua política de federação, seu provedor de identidade deverá fornecer metadados do provedor OpenID em {issuer-url}/.well-known/openid-configuration
. Os metadados do provedor OpenID devem incluir um jwks_uri
que especifique o local da chave pública usada para verificar as assinaturas dos tokens.
Os administradores de conta podem configurar uma política de federação account usando o comando Databricks CLI (versão 0.239.0 e acima) ou o Databricks API. O senhor pode especificar até cinco políticas de federação account em seu Databricks account.
- Databricks CLI
- Databricks Account API
-
Instale ou atualize para a versão mais recente da CLI da Databricks.
-
Como administrador do account, autentique-se em seu Databricks account usando o CLI. Especificando o ACCOUNT_CONSOLE_URL (por exemplo, https://accounts.cloud.databricks.com) e seu ACCOUNT_ID da Databricks:
Bashdatabricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
-
Crie a política de federação account. Por exemplo:
Bashdatabricks account federation-policy create --json \
'{
"oidc_policy": {
"issuer": "https://idp.mycompany.com/oidc",
"audiences": [
"databricks"
],
"subject_claim": "sub"
}
}'
A seguir, um exemplo de chamada Databricks REST API para criar uma política de federação account:
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"
}
}'
Exemplo de políticas de federação account
A tabela a seguir fornece exemplos de políticas de federação account e o corpo JWT correspondente.
Política da federação | Exemplo de tokens correspondentes |
---|---|
|
|
|
|
|
|
|
|
Federação de identidades de carga de trabalho
A federação de identidade de carga de trabalho permite que suas cargas de trabalho automatizadas executadas fora do Databricks acessem as APIs do Databricks sem a necessidade de segredos do Databricks. Os administradores de conta podem configurar a federação de identidade de carga de trabalho usando uma política de federação de entidade de serviço.
Uma política de federação de entidade de serviço está associada a uma entidade de serviço em seu site Databricks account e especifica:
- O provedor de identidade (ou emissor) do qual a entidade de serviço pode se autenticar.
- A identidade (ou assunto) da carga de trabalho que tem permissão para se autenticar como a entidade de serviço Databricks.
Por exemplo, dada a seguinte política de federação de entidades de serviço para uma carga de trabalho GitHub Actions:
issuer: "https://token.actions.githubusercontent.com"
audiences: ["https://github.com/my-github-org"]
subject: "repo:my-github-org/my-repo:environment:prod"
Esse corpo JWT pode ser usado para autenticar a Databricks:
{
"iss": "https://token.actions.githubusercontent.com",
"aud": "https://github.com/my-github-org",
"sub": "repo:my-github-org/my-repo:environment:prod"
}
Configurar uma política de federação de entidade de serviço
Para configurar uma política de federação de entidade de serviço, o senhor deve especificar:
-
O emissor dos tokens necessários, especificado na declaração
iss
da identidade da carga de trabalho tokens. O emissor é um URL HTTPS que identifica o provedor de identidade da carga de trabalho. -
O assunto dos tokens necessários, especificado na reivindicação
sub
da identidade da carga de trabalho tokens. O assunto identifica de forma exclusiva a carga de trabalho no ambiente de execução da carga de trabalho. -
Os públicos de tokens permitidos, especificados na declaração
aud
da identidade da carga de trabalho tokens. O público representa o destinatário dos tokens. Desde que o público nos tokens corresponda a pelo menos um público na política, os tokens são considerados correspondentes. Se não for especificado, o valor default será sua ID Databricks account . -
Opcionalmente, a chave pública (ou o URL da chave pública) usada para validar a assinatura da identidade da carga de trabalho tokens, no formato JSON Web key Sets (JWKS). Se não for especificado (recomendado), o site Databricks obtém automaticamente a chave pública do site bem conhecido do emissor endpoint. Databricks recomenda enfaticamente que o senhor confie no conhecido site endpoint do emissor para descobrir a chave pública.
Se você não especificar um JWKS ou um jwks_uri
em sua política de federação, seu provedor de identidade deverá fornecer metadados do provedor OpenID em {issuer-url}/.well-known/openid-configuration
. Os metadados do provedor OpenID devem incluir um jwks_uri
que especifique o local da chave pública usada para verificar as assinaturas dos tokens.
- Opcionalmente, a reivindicação em questão. Isso indica qual reivindicação de tokens contém a identidade da carga de trabalho (ou assunto) dos tokens. Se não for especificado, o valor default será
sub
. Databricks recomenda enfaticamente o uso da reivindicação defaultsub
para federação de identidade de carga de trabalho. Uma afirmação diferente desub
só deve ser usada nos casos em que a afirmaçãosub
não é um identificador de assunto apropriado ou estável, o que é incomum. Para obter detalhes, consulte o exemplo de políticas de federação de entidades de serviço abaixo.
Os administradores de conta podem configurar uma política de federação de entidade de serviço usando o Databricks CLI (versão 0.239.0 e acima) ou o site Databricks API. O senhor pode criar até cinco políticas de federação de entidade de serviço por entidade de serviço da Databricks.
- Databricks CLI
- Databricks Account API
-
Instale ou atualize para a versão mais recente da CLI da Databricks.
-
Como administrador do account, autentique-se em seu Databricks account usando o CLI. Especificando o ACCOUNT_CONSOLE_URL (por exemplo, https://accounts.cloud.databricks.com) e seu ACCOUNT_ID da Databricks:
Bashdatabricks auth login --host ${ACCOUNT_CONSOLE_URL} --account-id ${ACCOUNT_ID}
-
Obtenha a ID numérica da entidade de serviço que terá a política de federação aplicada a ela. (Por exemplo,
3659993829438643
.)Se o senhor souber antecipadamente a ID do aplicativo da entidade de serviço (normalmente um valor GUID, como
bc3cfe6c-469e-4130-b425-5384c4aa30bb
), poderá determinar a ID numérica da entidade de serviço usando a CLI da Databricks:Bashdatabricks account service-principals list --filter 'applicationId eq "<service-principal-application-id>"'
-
Criar a política de federação da entidade de serviço. Aqui está um exemplo de criação de uma política de federação para um 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"
}
}'
-
Obtenha a ID numérica da entidade de serviço que terá a política de federação aplicada a ela, por exemplo,
3659993829438643
. Se o senhor souber antecipadamente o ID do aplicativo da entidade de serviço (normalmente um valor GUID, comobc3cfe6c-469e-4130-b425-5384c4aa30bb
), poderá determinar o ID numérico da entidade de serviço usando a API REST da entidade de serviço da Databricks:Bashcurl --get \
--header "Authorization: Bearer $TOKEN" \
"https://accounts.cloud.databricks.com/api/2.0/accounts/${ACCOUNT_ID}/scim/v2/ServicePrincipals" \
--data-urlencode 'filter=applicationId eq "<service-principal-application-id>"'A ID numérica da entidade de serviço é retornada no campo
id
da resposta. -
Criar a política de federação da entidade de serviço. Aqui está um exemplo de criação de uma política de federação para um GitHub Actions:
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"
}
}'
Exemplo Databricks políticas de federação da entidade de serviço
A tabela a seguir fornece exemplos de políticas de federação de entidades de serviço e o corpo JWT correspondente.
Para obter as etapas completas de configuração para habilitar a federação de identidade de carga de trabalho para alguns desses provedores de identidade comuns, consulte Habilitar a federação de identidade de carga de trabalho em CI/CD.
Ferramenta | Política da federação | Exemplo de tokens correspondentes |
---|---|---|
GitHub Actions |
|
|
Kubernetes |
|
|
Azure DevOps |
|
|
GitLab |
|
|
Círculo CI |
|
|
Próximas etapas
Depois que o senhor tiver configurado uma política de federação para seu account:
- Talvez seja necessário configurar seu provedor de identidade para gerar tokens para seus usuários trocarem com a Databricks. Consulte a documentação do seu provedor de identidade para obter instruções. Para obter as etapas completas de configuração para habilitar a federação de identidade de carga de trabalho para alguns provedores de identidade comuns, consulte Habilitar a federação de identidade de carga de trabalho em CI/CD.
- O senhor pode usar um JWT do seu provedor de identidade para acessar a API da Databricks. Primeiro, troque os tokens JWT do seu provedor de identidade por tokens Databricks OAuth e, em seguida, use os tokens Databricks OAuth no campo
Bearer:
da chamada API para obter acesso e concluir a chamada. Os tokens devem ser JWTs válidos e assinados usando os algoritmos RS256 ou ES256. Para obter detalhes sobre a implementação da troca de tokens, consulte Usar tokens de um provedor de identidade para autenticar Databricks REST APIs .