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.

Esta página 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 para a carga de trabalho no ambiente de tempo de execução da carga de trabalho. Se não especificado, o default é sub.

  • 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 sua URL, no formato JSON Web Key Sets (JWKS) usada para validar assinaturas de tokens. O JWKS JSON suporta até 5 chaves. Se o seu provedor de identidade publicar mais, use um URI JWKS.

    Se não for especificado, Databricks recupera a chave do endpoint conhecido do emissor, que é a abordagem recomendada. Seu provedor de identidade deve fornecer metadados do provedor OpenID em <issuer-url>/.well-known/openid-configuration que incluam um jwks_uri especificando o local da chave pública usada para verificar assinaturas de 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"
}

Melhores práticas para políticas de entidades de serviço federadas

Cada entidade de serviço suporta um máximo de 20 políticas de federação. Siga estas orientações para evitar atingir esse limite.

Mapeie uma identidade externa por entidade de serviço.

Crie uma entidade de serviço dedicada para cada identidade de carga de trabalho externa distinta. Várias políticas de federação em uma única entidade de serviço são apropriadas somente quando a mesma identidade lógica é autenticada por meio de diferentes provedores de identidade. Por exemplo, uma carga de trabalho que é executada tanto no GitHub Actions quanto Azure DevOps precisa de duas políticas, uma por provedor, na mesma entidade de serviço.

Não utilize várias políticas para mapear diferentes cargas de trabalho (como pods Kubernetes separados por região) para uma única entidade de serviço. Em vez disso, crie uma entidade de serviço separada para cada carga de trabalho. Isso preserva a atribuição do log de auditoria e permite revogar o acesso para uma carga de trabalho sem afetar as outras.

Simplifique as permissões com grupos

Quando várias entidades de serviço precisam das mesmas permissões, adicione-as como membros de um grupo Databricks e atribua permissões ao grupo. Consulte as melhores práticas de identidade.

Use a propriedade subject_claim para reivindicações alternativas

Por default, Databricks usa a declaração sub dos tokens de identidade para identificar a carga de trabalho. Se o seu provedor de identidade não usar a declaração sub como um identificador de carga de trabalho estável, defina a propriedade subject_claim para o nome da declaração que o seu provedor usa. Por exemplo, consulte a configuração do CircleCI em Exemplo de políticas de federação de entidade de serviço Databricks. .

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 sua URL, no formato JSON Web Key Sets (JWKS) usada para validar assinaturas de tokens. O JWKS JSON suporta até 5 chaves. Se o seu provedor de identidade publicar mais, use um URI JWKS.

    Se não for especificado, Databricks recupera a chave do endpoint conhecido do emissor, que é a abordagem recomendada. Seu provedor de identidade deve fornecer metadados do provedor OpenID em <issuer-url>/.well-known/openid-configuration que incluam um jwks_uri especificando o local da chave pública usada para verificar assinaturas de tokens.

importante

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 Autenticar com tokens de um provedor de identidade.