Pular para o conteúdo principal

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:

JSON
{
"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 default sub para federação de identidade de carga de trabalho. Escolha uma afirmação diferente somente se sub 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 um jwks_uri que especifique o local da chave pública usada para verificar as assinaturas dos tokens.
  1. Como administrador do account, faça login no console Databricks account em https://accounts.cloud.databricks.com.
  2. Clique em Gerenciamento de usuários .
  3. Acesse a entidade de serviço tab.
  4. Selecione a entidade de serviço para a qual a política será criada.
  5. Acesse os segredos de Credentials & tab.
  6. Em Políticas de federação tab, clique em Create policy (Criar política ).
  7. Selecione um provedor de credenciais federado e configure os campos correspondentes.
  8. Clique em Criar política .

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: https://token.actions.githubusercontent.com
Público: https://github.com/<github-org>
Assunto: 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

Emissor: https://kubernetes.default.svc
Público: https://kubernetes.default.svc
Assunto: system:serviceaccount:namespace:podname
JWKS 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

Emissor: https://vstoken.dev.azure.com/<org_id>
Público: api://AzureADTokenExchange
Assunto: 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

Emissor: https://gitlab.example.com
Público: https://gitlab.example.com
Assunto: project_path:my-group/my-project:...

{
"iss": "https://gitlab.example.com",
"aud": "https://gitlab.example.com",
"sub": "project_path:my-group/my-project:..."
}

Círculo CI

Emissor: https://oidc.circleci.com/org/<org_id>
Público: <org_id>
Assunto: 7cc1d11b-46c8-4eb2-9482-4c56a910c7ce
Assunto da reclamação: 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"
}

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:

JSON
{
"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 um jwks_uri que especifique o local da chave pública usada para verificar as assinaturas dos tokens.
important

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.

  1. Como administrador do account, faça login no console Databricks account em https://accounts.cloud.databricks.com.
  2. Clique em Settings (Configurações ) e vá para Authentication (Autenticação ) tab.
  3. Em Políticas de federação , clique em Criar política .
  4. Insira o URL do emissor, os públicos, a reivindicação de assunto e a validação de assinatura de tokens opcionais.
  5. Clique em Criar política .

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: https://idp.mycompany.com/oidc
Público: 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d

{
"iss": "https://idp.mycompany.com/oidc",
"aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d",
"sub": "username@mycompany.com"
}

Emissor: https://idp.mycompany.com/oidc
Público: 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
Assunto da reclamação: 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"
}

Emissor: https://idp.mycompany.com/oidc
Público: 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
JWKS 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"
}
(assinatura verificada usando o site público key na política)

Emissor: https://idp.mycompany.com/oidc
Público: 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
JWKS DIZ: https://idp.mycompany.com/jwks.json

{
"iss": "https://idp.mycompany.com/oidc",
"aud": "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d",
"sub": "username@mycompany.com"
}
(assinatura verificada usando o site público key obtido de jwks_uri)

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 .