Pular para o conteúdo principal

Autorizar o acesso da entidade de serviço ao Databricks com o OAuth

Este artigo explica como autorizar o acesso ao Databricks recurso a partir de processos não supervisionados, como o CLI comando automatizado ou REST API chamadas feitas a partir de scripts ou aplicativos.

A Databricks usa o OAuth 2.0 como o protocolo preferencial para autorização e autenticação da entidade de serviço fora da interface do usuário. A autenticação unificada de clientes automatiza a geração de tokens e o refresh. Quando uma entidade de serviço se inscreve e recebe consentimento, o site OAuth emite tokens de acesso para o site CLI, SDK, ou outra ferramenta para usar em seu nome. Cada token de acesso é válido por uma hora, após o qual um novo token é solicitado automaticamente.

Neste artigo, a autorização refere-se ao uso do site OAuth para conceder a uma entidade de serviço acesso ao recurso Databricks, enquanto a autenticação refere-se à validação de credenciais por meio do acesso tokens.

Para obter mais detalhes de alto nível, consulte Autorização de acesso a Databricks recurso.

Formas de autorizar uma entidade de serviço

A Databricks oferece suporte a duas maneiras de autorizar uma entidade de serviço:

  • Automático (recomendado): Use a autenticação unificada de cliente com ferramentas e SDKs compatíveis, como o Databricks Terraform SDK. Essa abordagem lida com a geração de tokens e com o site refresh automaticamente e é ideal para automação ou outras cargas de trabalho não supervisionadas.

  • Manual: Gere um verificador de código e um desafio e, em seguida, troque-os por um token OAuth. Use esse método se sua ferramenta ou API não for compatível com a autenticação unificada de cliente. Talvez o senhor precise criar seu próprio mecanismo de tokens refresh para seu aplicativo. Para obter detalhes, consulte Gerar manualmente tokens de acesso OAuth M2M.

Pré-requisitos

Antes de configurar o OAuth, execute as seguintes etapas:

  1. Crie uma entidade de serviço Databricks. Consulte Adicionar entidade de serviço ao seu account.
  2. Acesse o site de configuração tab para a entidade de serviço e selecione os direitos que ela deve ter para este workspace.
  3. Acesse o site Permissions (Permissões ) tab e conceda acesso a todos os usuários, entidades de serviço e grupos do Databricks que o senhor deseja gerenciar e usar essa entidade de serviço. Veja Quem pode gerenciar e usar a entidade de serviço?

Etapa 1: Criar um segredo OAuth

Para autorizar o acesso ao seu recurso Databricks com OAuth, o senhor deve criar um segredo OAuth. O segredo é usado para gerar tokens de acesso OAuth para autenticação. Uma entidade de serviço pode ter até cinco segredos OAuth, e cada segredo pode ser válido por até dois anos.

Os administradores de contas e os administradores de workspaces podem criar um segredo do OAuth para uma entidade de serviço.

  1. Na página de detalhes da entidade de serviço, abra a seção Segredos tab.
  2. Em Segredos do OAuth , clique em Gerar segredo .
  3. Defina a vida útil do segredo em dias (máximo de 730 dias).
  4. Copie o segredo e o ID do cliente exibidos e clique em Concluído . O segredo é mostrado apenas uma vez. O ID do cliente é o mesmo que o ID do aplicativo da entidade de serviço.

Os administradores de conta também podem criar um segredo OAuth no console account. Em User management (Gerenciamento de usuários ) tab, selecione a entidade de serviço e, em seguida, vá para Credentials (Credenciais) & secrets (Segredos ) tab.

nota

Para permitir que a entidade de serviço use o armazenamento em cluster ou SQL, o senhor deve conceder à entidade de serviço acesso a eles. Consulte computar permissões ou gerenciar SQL warehouse a.

Etapa 2: Use a autorização OAuth

Para usar a autorização OAuth com a ferramenta de autenticação de cliente unificada, o senhor deve definir os seguintes campos associados variável de ambiente, .databrickscfg, Terraform ou Config:

  • O Databricks host, especificado como https://accounts.cloud.databricks.com para account operações ou o workspace URL de destino, por exemplo,https://dbc-a1b2345c-d6e7.cloud.databricks.com para workspace operações.
  • O ID da conta do Databricks, para operações da conta do Databricks.
  • O ID do cliente da entidade de serviço.
  • O segredo da entidade de serviço.

Para realizar a autenticação da OAuth entidade de serviço, integre o seguinte em seu código, com base na ferramenta participante ou SDK:

Para usar a variável de ambiente para um tipo específico de autenticação Databricks com uma ferramenta ou SDK, consulte Autorização de acesso a Databricks recurso ou a documentação da ferramenta ou SDK. Consulte também variável de ambiente e campos para autenticação unificada de cliente e os métodos padrão para autenticação unificada de cliente.

Para operações de nível account, defina as seguintes variáveis de ambiente:

  • DATABRICKS_HOST, defina para o valor da URL do console da sua conta Databricks, https://accounts.cloud.databricks.com.
  • DATABRICKS_ACCOUNT_ID
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

Para operações em nível workspace, defina as seguintes variáveis de ambiente:

  • DATABRICKS_HOST, definido como o valor do Databricks workspace URL, por https://dbc-a1b2345c-d6e7.cloud.databricks.com exemplo,.
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

Gerar manualmente tokens de acesso OAuth M2M

Esta seção destina-se a ferramentas ou serviços que não oferecem suporte à autenticação de cliente unificadaDatabricks. Se o senhor precisar gerar manualmente, refresh, ou usar Databricks OAuth tokens para autenticação M2M, siga estas etapas.

Para gerar tokens de acesso OAuth M2M, use o ID do cliente da entidade de serviço e o segredo OAuth. Cada token de acesso é válido por uma hora. Após a expiração, solicite novos tokens. O senhor pode gerar tokens no nível account ou workspace:

Gerar um account-level access tokens

Use um token de nível accountpara chamar REST APIs para o account e qualquer espaço de trabalho que a entidade de serviço possa acessar.

  1. Localize o seu ID do account.

  2. Construa o URL de tokens endpoint substituindo <account-id> no URL a seguir pelo seu ID account.

    https://accounts.cloud.databricks.com/oidc/accounts/<my-account-id>/v1/token
  3. Use curl para solicitar tokens de acesso OAuth. Substitua:

    • <token-endpoint-URL> com o URL acima.
    • <client-id> com o ID do cliente da entidade de serviço (ID do aplicativo).
    • <client-secret> com o segredo OAuth da entidade de serviço.
    Bash
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>

    curl --request POST \
    --url <token-endpoint-URL> \
    --user "$CLIENT_ID:$CLIENT_SECRET" \
    --data 'grant_type=client_credentials&scope=all-apis'

    Isso gera uma resposta semelhante a:

    JSON
    {
    "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
    "token_type": "Bearer",
    "expires_in": 3600
    }

    O escopo all-apis solicita um token de acesso OAuth que permite que a entidade de serviço chame qualquer Databricks REST API que tenha permissão para acessar.

  4. Copie o valor access_token da resposta.

Gerar um workspace-level access tokens

Use tokens de nível workspacesomente com REST APIs em que workspace.

  1. Construa o endpoint URL dos tokens substituindo <databricks-instance> pelo seu <databricks-instance> pelo Databricks workspace nome da instância, por dbc-a1b2345c-d6e7.cloud.databricks.com exemplo,:

    https://<databricks-instance>/oidc/v1/token
  2. Use curl para solicitar tokens de acesso OAuth. Substitua:

    • <token-endpoint-URL> com o URL acima.
    • <client-id> com o ID do cliente da entidade de serviço (ID do aplicativo).
    • <client-secret> com o segredo OAuth da entidade de serviço.
    Bash
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>

    curl --request POST \
    --url <token-endpoint-URL> \
    --user "$CLIENT_ID:$CLIENT_SECRET" \
    --data 'grant_type=client_credentials&scope=all-apis'

    Isso gera uma resposta semelhante a:

    JSON
    {
    "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
    "token_type": "Bearer",
    "expires_in": 3600
    }
  3. Copie o valor access_token da resposta.

nota

Para gerar tokens para um serviço endpoint, inclua a ID endpoint e a ação em sua solicitação. Consulte Obter um OAuth tokens manualmente.

Chamar uma API REST da Databricks

Use os tokens de acesso OAuth para chamar account-level ou workspace-level REST APIs. Para chamar o account-level APIs, a entidade de serviço deve ser um administrador do account.

Inclua os tokens no cabeçalho de autorização com a autenticação Bearer.

Exemplo account-level REST API request

Este exemplo lista todos os espaços de trabalho de um account. Substitua:

  • <oauth-access-token> com os tokens de acesso OAuth da entidade de serviço.
  • <account-id> com sua ID account.
Bash
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/workspaces'

Exemplo workspace-level REST API request

Este exemplo lista todos os clusters disponíveis em um workspace. Substitua:

  • <oauth-access-token> com os tokens de acesso OAuth da entidade de serviço.
  • <databricks-instance> com o Databricks workspace nome da instância, por dbc-a1b2345c-d6e7.cloud.databricks.com exemplo,.
Bash
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://<workspace-URL>/api/2.0/clusters/list'

Recurso adicional