Pular para o conteúdo principal

Autenticação com tokens de ID do Google

Para autenticar em Databricks, REST e APIs, utilize Databricks OAuth, nossas soluções recomendadas em todas as plataformas de nuvem. OAuth 2.0 é o protocolo padrão que a Databricks utiliza para autorização delegada. Ele fornece acesso seguro a REST APIs e suporta mecanismos como refresh tokens para manter o acesso ao longo do tempo.

Também é possível utilizar tokens de identificação do Google para autenticação, principalmente no Google Cloud. Esses tokens seguem padrões abertos, como OpenID Connect (OIDC).

As APIs REST da Databricks suportam apenas os tokens OIDC emitidos pelo Google, que são comumente conhecidos como tokens de ID do Google. Para reduzir a confusão, o restante deste artigo usa o termo tokens de ID do Google e não tokens OIDC .

nota

Se o usuário utilizar seu próprio provedor de identidade para configurar o login único no Databricks, não será possível autenticar com tokens de identificação do Google.

Este artigo descreve as etapas de autenticação para usar Databricks REST APIs e como criar a conta de serviço do Google Cloud necessária e gerar tokens para essa conta.

Serviço de configuração e fluxo de autenticação do account

É possível utilizar um único token de ID do Google para account-level APIs ou workspace-level APIs, mas não é possível utilizá-lo para ambos os fins. Os passos para configurar tokens para workspace-level e account-level APIs são praticamente os mesmos. As diferenças importantes são apresentadas nas instruções.

Para ambientes de produção, o Databricks recomenda o uso de duas contas do serviço Google Cloud:

  • SA-1 : execute suas cargas de trabalho e busque tokens.
  • SA-2 : Possui permissões para o seu recurso Databricks e GCP.

Conceda permissão ao SA-1 para se passar pelo SA-2 a fim de chamar as APIs REST do Databricks.

Com esse modelo de personificação, uma equipe pode gerenciar a segurança da carga de trabalho e outra equipe pode gerenciar a segurança do recurso. Como você só concede as permissões de representação conforme necessário, essa abordagem oferece segurança e flexibilidade à sua organização.

Para desenvolvimento ou teste, você pode simplificar a configuração usando uma das seguintes opções:

  • Utilize o seu nome de usuário do Google account para representar o SA-2. Você deve ter a função roles/iam.serviceAccountTokenCreator.
  • Utilize um único serviço account para atuar como SA-1 e SA-2.

Passagem de credenciais

Alguns métodos da API REST da Databricks exigem a passagem de credenciais . Para chamar esses métodos, além do ID do Google, o senhor também deve passar um token de acesso do Google OAuth com o escopo cloud-platform em um cabeçalho HTTP. O servidor Databricks usa os tokens de acesso do Google OAuth para chamar o Google Cloud APIs em nome do chamador.

Databricks não valida nem preserva os tokens de acesso.

important

Para determinar se a passagem de credenciais é necessária para uma operação, consulte a documentação API para cada operação API. Essas APIs exigem o cabeçalho HTTP X-Databricks-GCP-SA-Access-Token na solicitação.

Etapa 1: Criar duas contas de serviço

  1. Crie duas novas contas de serviço do Google Cloud. Siga as instruções nos artigos do Google Criando um serviço account. Para usar o Google Cloud Console, acesse a página da conta de serviço e escolha um projeto do Google Cloud para criá-lo. O projeto do Google Cloud no qual o senhor cria essa conta de serviço não precisa corresponder ao projeto que o senhor usa para Databricks workspace, nem a nova conta de serviço precisa usar o mesmo projeto do Google Cloud.

    • serviço de criação de tokens account (SA-1) : Esse serviço account automatiza a criação de tokens para o serviço principal account. Esses tokens serão usados para chamar as APIs REST da Databricks. A documentação do Google chama isso de SA-1 .
    • Serviço principal account para Databricks REST APIs (SA-2) : Esse serviço account atua como principal (o usuário de automação) para Databricks REST APIs e fluxo de trabalho automatizado. A documentação do Google chama isso de SA-2 .

    Salve o endereço email de ambas as contas de serviço para uso em etapas posteriores.

  2. Crie um serviço account keypara seu serviço de criação de tokens account (SA-1) e salve-o em um arquivo local chamado SA-1-key.json.

    1. Na página da conta de serviço do Google Cloud Console, clique no endereço email do SA-1.
    2. Acesse o link tab.
    3. Clique em “Adicionar” ( key ) e selecione “ > ” ( ). Crie um novo arquivo com o nome “ key ”.
    4. Para o tipo " key ", selecione JSON .
    5. Clique em Criar .
    6. A página da Web downloads um arquivo key para seu navegador. Mova esse arquivo para seu diretório de trabalho local e renomeie-o para SA-1-key.json.

    Para obter instruções adicionais, consulte os artigos do Google Criando serviço account key.

  3. Conceda ao seu serviço de criação de tokens account (SA-1) a função de criador de tokens da conta de serviço no seu serviço principal account (SA-2).

    1. Na página da conta de serviço do Google Cloud Console, clique no endereço email do SA-2.
    2. Acesse as permissões tab.
    3. Clique em Diretores com acesso .
    4. Clique em Conceder acesso .
    5. No campo New Principals , cole o endereço email do SA (SA-1) que está criando tokens.
    6. No campo Função , selecione Criador de tokens de conta de serviço .
    7. Clique em Salvar .

Etapa 2: Criar tokens de ID do Google

A Databricks recomenda usar o Google Cloud CLI (gcloud) para gerar tokens de ID para chamar as APIs REST da Databricks.

important

Os tokens de ID gerados expiram em uma hora. Você deve concluir todas as etapas restantes dentro desse período. Se os tokens expirarem antes de o senhor concluir as etapas posteriores, como ligar para Databricks APIs, será necessário repetir esta etapa para gerar novos tokens de ID do Google.

  1. Instale o Google Cloud CLI em seu computador. Consulte os artigos do Google sobre a instalação da ferramenta gcloud.

  2. Gere o ID tokens para seu serviço principal account executando o seguinte comando.

    • Substitua <SA-1-key-json> pelo caminho para o arquivo SA-1 key no formato JSON.
    • Substitua <SA-2-email> pelo endereço email do SA-2.
    • Substitua <audience> da seguinte forma com base no seu caso de uso:
      • Para workspace-level APIs , substitua por sua URL workspace, que tem o formato https://999999999992360.0.gcp.databricks.com. Cada workspace possui uma URL workspace única. Para acessar o APIs em várias áreas de trabalho, crie várias IDs do Google tokens com valores diferentes para audience.
      • Para account-level API, substitua por https://accounts.gcp.databricks.com. Todas as contas diferentes compartilham o mesmo valor audience.

    executar o seguinte comando para uso com sistemas de produção:

    Bash
    gcloud auth login --cred-file=<SA-1-key-json>

    gcloud auth print-identity-token \
    --impersonate-service-account="<SA-2-email>" \
    --include-email \
    --audiences="<audience>"

    Para uso fora da produção, se o senhor usar o usuário account para se passar por SA-2, use este comando:

    Bash
    gcloud auth login

    gcloud auth print-identity-token \
    --impersonate-service-account="<SA-2-email>" \
    --audiences="<audience>" --include-email

    Para uso fora da produção, se o senhor usar um serviço account para SA-1 e SA-2, use esses comandos com account o key JSON arquivo do serviço:

    Bash
    gcloud auth login --cred-file=<SA-key-json>

    gcloud auth print-identity-token --audiences="<audience>"
  3. Salve a linha longa no final da saída em um arquivo chamado google-id-token-sa-2.txt.

    Ele gera um texto semelhante ao seguinte:

    WARNING: This command is using service account impersonation. All API calls will be executed as [<SA-2-email>].

    eyJhba7s86dfa9s8f6a99das7fa68s7d6...N8s67f6saa78sa8s7dfiLlA

Etapa 3: Crie um token de acesso ao Google OAuth (somente para APIs que exige a passagem de credenciais)

nota

Essa etapa é necessária apenas para chamar APIs que exigem a passagem de credenciais. Para determinar se a passagem de credenciais é necessária para uma operação, consulte a documentação API para cada operação API.

A solicitação para gerar tokens de acesso inclui um campo lifetime que define por quanto tempo os tokens de acesso são válidos. Se o senhor só precisar que os tokens fiquem ativos por cinco minutos, defina como 300s (300 segundos). O exemplo a seguir usa 3600s, que representa uma hora.

important
  • Você deve concluir todas as etapas restantes dentro desse limite de tempo. Se o tempo expirar antes de concluir as etapas posteriores, como ligar para Databricks APIs, o senhor deverá repetir esta etapa para gerar um novo token de acesso ao Google OAuth.
  • Em default, uma hora (3600s) é a duração máxima que o senhor pode definir para o campo lifetime. Para estender esse limite, entre em contato com o atendimento ao cliente do Google e solicite uma exceção.
  1. executar o seguinte comando. Substitua <SA-2-email> pelo serviço account email endereço do SA-2. Para uso não produtivo ou testes, se o senhor estiver usando um único serviço account ou usando um usuário account para se passar por um serviço account, substitua <SA-2-email> pelo endereço email do serviço account.

    Bash
    gcloud auth print-access-token --impersonate-service-account=<SA-2-email>
  2. Salve a linha longa no final da saída em um arquivo chamado access-token-sa-2.txt.

    Ele gera um texto semelhante ao seguinte:

    WARNING: This command is using service account impersonation. All API calls will be executed as [<SA-2-email>].

    eyJhba7s86dfa9s8f6a99das7fa68s7d6...N8s67f6saa78sa8s7dfiLlA

Passo 4: Adicione o serviço principal account como usuário

Para utilizar o Google ID tokens para chamar Databricks workspace-level APIs ou account-level APIs, adicione o serviço principal account (SA-2) como usuário no ambiente Databricks apropriado:

É necessário gerar tokens de ID do Google separados para cada tipo de API, pois o campo audience muda de acordo com a URL base. Para obter mais detalhes, consulte Criar tokens de ID do Google.

nota

A Databricks utiliza SA-2 como identidade do chamador em solicitações de API. Não é necessário adicionar o serviço de criação de tokens account (SA-1) a Databricks. O SA-1 apenas se faz passar pelo SA-2 para gerar tokens e não interage diretamente com o Databricks.

espaço de trabalho APIs

Para autenticar workspace-level APIs com os tokens de identificação do Google, siga as etapas nas configurações de administração do workspace tab em Adicionar usuários ao seu account. Insira o endereço email do seu serviço principal account (SA-2) quando solicitado.

Opcionalmente, adicione quaisquer associações de grupo necessárias e configurações de controle de acesso Databricks para o seu novo serviço account, dependendo de qual REST APIs você planeja chamar e dos objetos de dados que deseja utilizar. Consulte Grupos e listas de controle de acesso.

em nível de conta APIs

Para autenticar account-level APIs com os tokens de identificação do Google, siga as etapas na consola da conta tab em Adicionar utilizadores ao seu account. Insira o endereço email do seu serviço principal account (SA-2) quando solicitado. Defina o nome de forma a refletir claramente a finalidade do serviço account.

Etapa 5: chamar uma API da Databricks

O tokens que o senhor precisa fornecer durante a autenticação REST API varia de acordo com o uso planejado: conta API ou nível de espaço de trabalho APIs. Observe que o senhor não pode usar um token de ID do Google para acessar os dois tipos de APIs devido à diferença no campo audiences ao criar os tokens de ID do Google.

Os seguintes cabeçalhos HTTP são usados para autenticação do Databricks com IDs do Google.

Nome do cabeçalho HTTP

Descrição

Quais tipos de APIs exigem isso?

Authorization

Tokens de ID do Google para SA-2 como tokens portadores. A sintaxe é Authentication: Bearer <token>.

Todas as APIs

X-Databricks-GCP-SA-Access-Token

Google OAuth tokens de acesso para SA-2.

account-level APIs only

Exemplo workspace-level API request

Para chamar um Databricks REST API para um workspace, passe um token de ID do Google no cabeçalho HTTP Authorization com a seguinte sintaxe:

Authorization: Bearer <google-id-token>

Os tokens fornecidos pelo senhor devem ter os seguintes atributos:

O exemplo a seguir chama workspace-level API para listar o clustering.

  • Substitua <google-id-token> pelos tokens de ID do Google que o senhor salvou no arquivo google-id-token-sa-2.txt.
  • Substitua <workspace-URL> pela URL de seu workspace básico, que tem um formato semelhante a https://1234567890123456.7.gcp.databricks.com.
Bash
curl \
-X GET \
--header 'Authorization: Bearer <google-id-token>' \
<workspace-URL>/api/2.0/clusters/list

Exemplo account-level API solicitação para um API que não usa a passagem de credenciais

O exemplo a seguir chama a conta API para obter uma lista de espaços de trabalho.

  • Substitua <google-id-token> pelos tokens de ID do Google que o senhor salvou no arquivo google-id-token-sa-2.txt.
  • Substitua <account-id> por sua ID account. Para encontrar sua ID account:
    1. Como administrador do account, acesse o consoleDatabricks account.
    2. Clique na seta para baixo ao lado de seu nome de usuário no canto superior direito.
    3. No menu dropdown, o senhor pode copiar o ID da sua conta.
Bash
curl \
-X GET \
--header 'Authorization: Bearer <google-id-token>' \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/workspaces

Exemplo account-level API request with credential passthrough

O exemplo a seguir chama a conta API para obter uma lista de espaços de trabalho.

  • Substitua <google-id-token> pelos tokens de ID do Google que o senhor salvou no arquivo google-id-token-sa-2.txt.

  • Substitua <access-token-sa-2> pelos tokens de acesso SA-2 que o senhor salvou no arquivo access-token-sa-2.txt.

  • Substitua <account-id> por sua ID account. Para encontrar sua ID account:

    1. Como administrador do account, acesse o consoleDatabricks account.
    2. No canto superior direito, clique no ícone do perfil do usuário.
    3. Na janela pop-up que aparece, copie o ID do account clicando no ícone à direita do ID.

    Encontre seu account ID.

Bash
curl \
-X GET \
--header 'Authorization: Bearer <google-id-token>' \
--header 'X-Databricks-GCP-SA-Access-Token: <access-token-sa-2>' \
https://accounts.gcp.databricks.com/api/2.0/accounts/<account-id>/workspaces