Configurar uma política de federação
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.
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:
- Emissor:
https://token.actions.githubusercontent.com
- Públicos:
https://github.com/my-github-org
- Assunto:
repo:my-github-org/my-repo:environment:prod
O senhor pode usar esse corpo JWT para se autenticar na 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
Os administradores de conta podem configurar uma política de federação de entidade de serviço usando o Databricks CLI ou o Databricks API. O senhor pode criar um máximo de 20 políticas de federação de entidade de serviço por entidade de serviço Databricks.
Para configurar uma política de federação de entidade de serviço, o senhor deve especificar o seguinte:
- URL do emissor: Um URL HTTPS que identifica o provedor de identidade da carga de trabalho, especificado na declaração
iss
dos tokens de identidade da carga de trabalho. - Assunto: O identificador exclusivo da carga de trabalho no ambiente de execução da carga de trabalho. O site default é
sub
, a menos que o senhor - Públicos: O destinatário pretendido dos tokens, especificado na declaração
aud
. Os tokens são considerados correspondentes se seu público corresponder a pelo menos um público na política. Se não for especificado, default é sua ID Databricks account . - Subject claim: (Opcional) Especifica a reivindicação de tokens que contém a identidade da carga de trabalho (também chamada de subject) dos tokens. Se não for definido, Databricks usa
sub
por default. Databricks recomenda manter a reivindicação defaultsub
para federação de identidade de carga de trabalho. Escolha uma afirmação diferente somente sesub
não for um identificador de assunto adequado ou estável, o que é raro. Para obter detalhes, consulte Exemplo de políticas de federação de entidades de serviço. - validação de assinatura de tokens: (Opcional) A chave pública, ou seu URL, no formato JSON Web key Sets (JWKS) usado para validar assinaturas de tokens. Se não for especificado, o Databricks os recupera automaticamente do endpoint conhecido do emissor, que é a abordagem recomendada. Se o senhor não especificar a chave pública, o provedor de identidade deverá fornecer metadados do provedor OpenID em
<issuer-url>/.well-known/openid-configuration
. Os metadados devem incluir umjwks_uri
que especifique o local da chave pública usada para verificar as assinaturas dos tokens.
- Databricks UI
- Databricks CLI
- Databricks Account API
- Como administrador do account, faça login no console Databricks account em
https://accounts.cloud.databricks.com
. - Clique em Gerenciamento de usuários .
- Acesse a entidade de serviço tab.
- Selecione a entidade de serviço para a qual a política será criada.
- Acesse os segredos de Credentials & tab.
- Em Políticas de federação tab, clique em Create policy (Criar política ).
- Selecione um provedor de credenciais federado e configure os campos correspondentes.
- Clique em Criar política .
O senhor não pode usar o Databricks CLI no terminal da Web Databricks workspace para criar uma política de federação.
-
Instale ou atualize para a versão mais recente da CLI da Databricks.
-
Como administrador do account, autentique-se em Databricks account utilizando o CLI. Especifique o
ACCOUNT_CONSOLE_URL
e o seu DatabricksACCOUNT_ID
: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 | Emissor: |
|
Kubernetes | Emissor: |
|
Azure DevOps | Emissor: |
|
GitLab | Emissor: |
|
Círculo CI | Emissor: |
|
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, dada uma política de federação com os seguintes campos:
- Emissor:
https://idp.mycompany.com/oidc
- Públicos:
databricks
- Assunto da reclamação:
sub
Use esse corpo JWT para se autenticar na 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
Os administradores de conta podem configurar uma política de federação account usando a interface do usuário Databricks, o Databricks CLI ou o Databricks REST API. O senhor pode especificar um máximo de 20 políticas de federação account em seu Databricks account.
Para configurar uma política de federação account, o senhor deve especificar o seguinte:
- URL do emissor: Um URL HTTPS que identifica seu provedor de identidade, especificado na declaração
iss
de seus tokens. - Públicos: O destinatário pretendido dos tokens, especificado na declaração
aud
. Os tokens são considerados correspondentes se seu público corresponder a pelo menos um público na política. Se não for especificado, default é sua ID Databricks account . - Subject claim (Solicitação de assunto): a solicitação de tokens que contém o nome de usuário Databricks do usuário para o qual os tokens foram emitidos. Se não for especificado, o endereço default é
sub
. - validação de assinatura de tokens: (Opcional) A chave pública, ou seu URL, no formato JSON Web key Sets (JWKS) usado para validar assinaturas de tokens. Se não for especificado, o Databricks os recupera automaticamente do endpoint conhecido do emissor, que é a abordagem recomendada. Se o senhor não especificar a chave pública, o provedor de identidade deverá fornecer metadados do provedor OpenID em
<issuer-url>/.well-known/openid-configuration
. Os metadados devem incluir umjwks_uri
que especifique o local da chave pública usada para verificar as assinaturas dos tokens.
Para a federação em todo o site account, registre apenas IdPs que sejam totalmente gerenciados e confiáveis pela sua organização, como o IdP da sua própria empresa. Não configure a federação accountcom IdPs externos que o senhor não controla, como os gerenciados por clientes ou parceiros.
- Databricks UI
- Databricks CLI
- Databricks Account API
- Como administrador do account, faça login no console Databricks account em
https://accounts.cloud.databricks.com
. - Clique em Settings (Configurações ) e vá para Authentication (Autenticação ) tab.
- Em Políticas de federação , clique em Criar política .
- Insira o URL do emissor, os públicos, a reivindicação de assunto e a validação de assinatura de tokens opcionais.
- Clique em Criar política .
O senhor não pode usar o Databricks CLI no terminal da Web Databricks workspace para criar uma política de federação.
-
Instale ou atualize para a versão mais recente da CLI da Databricks.
-
Como administrador do account, autentique-se em Databricks account utilizando o CLI. Especifique o nome do usuário do Databricks (
ACCOUNT_CONSOLE_URL
) e o nome do usuário do Databricks (ACCOUNT_ID
).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 |
---|---|
Emissor: |
|
Emissor: |
|
Emissor: |
|
Emissor: |
|
Próximas etapas
Depois que o senhor configurar uma política de federação para seu account:
- Configure seu provedor de identidade (IdP) para gerar tokens que seus usuários possam trocar com a Databricks. Consulte a documentação do seu IdP para obter detalhes de configuração. Para obter instruções sobre como habilitar a federação de identidade de carga de trabalho com IdPs comuns, consulte Habilitar a federação de identidade de carga de trabalho em CI/CD.
- Use um JWT do seu IdP para acessar o Databricks API trocando-o primeiro por um token Databricks OAuth . Inclua os tokens Databricks OAuth no cabeçalho
Bearer:
da sua chamada API para concluir a solicitação. O JWT deve ser válido e assinado usando os algoritmos RS256 ou ES256. Para obter detalhes de implementação, consulte Usar tokens de um provedor de identidade para autenticar Databricks REST APIs .