Compartilhar via


Autorizar o acesso do usuário ao Azure Databricks com o OAuth

Esta página explica como autorizar o acesso do usuário aos recursos do Azure Databricks ao usar a CLI do Azure Databricks ou as APIs REST do Azure Databricks.

O Azure Databricks usa o OAuth 2.0 como o protocolo preferencial para autorização e autenticação de usuário fora da interface do usuário. A autenticação unificada do cliente automatiza a geração e a atualização de token. Depois que um usuário entra e concede consentimento, o OAuth emite um token de acesso para a CLI, O SDK ou outra ferramenta a ser usada em nome do usuário. Cada token de acesso é válido por uma hora, após a qual um novo token é solicitado automaticamente.

Nesta página, a autorização refere-se ao uso do OAuth para conceder acesso aos recursos do Azure Databricks, enquanto a autenticação refere-se à validação de credenciais por meio de tokens de acesso.

Para obter mais detalhes de alto nível, consulte Autorizar o acesso aos recursos do Azure Databricks.

Maneiras de autorizar o acesso aos recursos do Azure Databricks

O Azure Databricks dá suporte a duas maneiras de autorizar contas de usuário com o OAuth:

  • Automático (recomendado): Use a autenticação unificada se você estiver trabalhando com ferramentas e SDKs com suporte, como o SDK do Terraform do Azure Databricks. Essa abordagem manipula a geração de tokens e a atualização automaticamente.

  • 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 não der suporte à autenticação unificada. Para obter detalhes, consulte Gerar manualmente tokens de acesso OAuth U2M.

Autorização automática com autenticação unificada

Observação

Antes de configurar a autorização, examine as permissões de ACL para o tipo de operações de workspace que você planeja executar e confirme se sua conta tem o nível de acesso necessário. Para obter detalhes, consulte listas de controle do Access.

Para executar a autorização do OAuth com SDKs e ferramentas do Azure Databricks que dão suporte à autenticação unificada, integre o seguinte em seu código:

Ambiente

Para usar variáveis de ambiente para um tipo de autenticação específico do Azure Databricks com uma ferramenta ou SDK, consulte Autorizar o acesso aos recursos do Azure Databricks ou à documentação da ferramenta ou do SDK. Consulte também variáveis de ambiente e campos para autenticação unificada e a prioridade do método de autenticação.

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

  • DATABRICKS_HOST, definido como o valor da URL do console da sua conta do Azure Databricks, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID

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

  • DATABRICKS_HOST, defina o valor da sua URL por workspace do Azure Databricks, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net.

Perfil

Crie ou identifique um perfil de configuração do Azure Databricks com os seguintes campos em seu arquivo do .databrickscfg. Se você criar o perfil, substitua os espaços reservados pelos valores apropriados. Para usar o perfil com uma ferramenta ou SDK, consulte Autorizar o acesso aos recursos do Azure Databricks ou à documentação da ferramenta ou do SDK. Consulte também variáveis de ambiente e campos para autenticação unificada e a prioridade do método de autenticação.

Para operações no nível da conta, defina os seguintes valores em seu arquivo .databrickscfg. Nesse caso, a URL do console da conta do Azure Databricks é https://accounts.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host       = <account-console-url>
account_id = <account-id>

Para operações no nível do espaço de trabalho, defina os seguintes valores no seu arquivo .databrickscfg. Nesse caso, o host é a URL por workspace do Azure Databricks, por exemplo https://adb-1234567890123456.7.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host = <workspace-url>

CLI

Para a CLI do Azure Databricks, execute o databricks auth login comando com as seguintes opções:

Em seguida, siga as instruções no navegador da Web para fazer logon em sua conta ou workspace do Azure Databricks.

Para obter mais detalhes, consulte Autorização do OAuth com a CLI do Databricks.

VS Code

Para a extensão do Databricks para Visual Studio Code, siga as etapas em Configurar a autorização para a extensão do Databricks para Visual Studio Code.

Conectar

A autenticação U2M do OAuth tem suporte no Databricks Connect para Python, começando com o Databricks Runtime 13.1 e para Scala a partir do Databricks Runtime 13.3 LTS.

Para o Databricks Connect, você pode:

  • Use um perfil de configuração: Defina valores no nível do workspace em seu .databrickscfg arquivo, conforme descrito na guia Perfil . Defina também a URL da instância do cluster_id workspace.
  • Use variáveis de ambiente: Defina os mesmos valores mostrados na guia Ambiente . Defina também a URL da instância do DATABRICKS_CLUSTER_ID workspace.

Os valores têm .databrickscfg precedência sobre variáveis de ambiente.

Para inicializar o Databricks Connect com essas configurações, consulte a configuração de computação do Databricks Connect.

Terraformação

Antes de aplicar a configuração do Terraform, você deve executar um dos databricks auth login comandos na guia CLI , dependendo de sua configuração usar operações de workspace ou de conta. Esses comandos geram e armazenam em cache o token OAuth necessário na .databricks/token-cache.json pasta inicial do usuário.

Operações no nível da conta

Para autenticação padrão:

provider "databricks" {
  alias = "account"
}

Para configuração direta:

provider "databricks" {
  alias      = "account"
  host       = <retrieve-account-console-url>
  account_id = <retrieve-account-id>
}

Substitua os espaços reservados retrieve- pela sua própria implementação para recuperar os valores do console ou de outro repositório de configurações, como HashiCorp Vault. Consulte também o Provedor do Cofre. Neste exemplo, você pode definir account_id como a URL do console da conta do Azure Databricks.

Operações no nível do workspace

Para autenticação padrão:

  provider "databricks" {
  alias = "workspace"
}

Para configuração direta:

provider "databricks" {
  alias = "workspace"
  host  = <retrieve-workspace-url>
}

Python

Antes de executar seu código, você deve executar o databricks auth login comando na guia CLI com opções de operações de workspace ou de conta. Esses comandos geram e armazenam em cache o token OAuth necessário na .databricks/token-cache.json pasta inicial do usuário.

Operações no nível da conta

Para autenticação padrão:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Para configuração direta:

from databricks.sdk import AccountClient

a = AccountClient(
  host       = retrieveAccountConsoleUrl(),
  account_id = retrieveAccountId()
)
# ...

Substitua os retrieve espaços reservados por sua própria implementação para recuperar os valores do console ou de algum outro repositório de configuração, como o Azure KeyVault.

Operações no nível do workspace

Para autenticação padrão:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Para configuração direta:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(host = retrieve_workspace_url())
# ...

Para obter mais informações sobre como autenticar com ferramentas e SDKs do Azure Databricks que usam o Python e que implementam a autenticação unificada do Databricks, consulte:

Java

Antes de executar seu código, você deve executar o databricks auth login comando na guia CLI com opções de operações de workspace ou de conta. Esses comandos geram e armazenam em cache o token OAuth necessário na .databricks/token-cache.json pasta inicial do usuário.

Operações no nível da conta

Para autenticação padrão:

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

Para configuração direta:

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...

Substitua os retrieve espaços reservados por sua própria implementação para recuperar os valores do console ou de algum outro repositório de configuração, como o Azure KeyVault.

Operações no nível do workspace

Para autenticação padrão:

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

Para configuração direta:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Para obter mais informações sobre como autorizar e autenticar com ferramentas e SDKs do Azure Databricks que usam Java e que implementam a autenticação unificada do Databricks, consulte:

Go

Antes de executar seu código, você deve executar o databricks auth login comando na guia CLI com opções de operações de workspace ou de conta. Esses comandos geram e armazenam em cache o token OAuth necessário na .databricks/token-cache.json pasta inicial do usuário.

Operações no nível da conta

Para autenticação padrão:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

Para configuração direta:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:      retrieveAccountConsoleUrl(),
  AccountId: retrieveAccountId(),
}))
// ...

Substitua os retrieve espaços reservados por sua própria implementação para recuperar os valores do console ou de algum outro repositório de configuração, como o Azure KeyVault.

Operações no nível do workspace

Para autenticação padrão:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

Para configuração direta:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host: retrieveWorkspaceUrl(),
}))
// ...

Para obter mais informações sobre como autenticar com as ferramentas e SDKs do Databricks que usam o Go e que implementam a autenticação unificada do cliente do Databricks, consulte Autenticar o SDK do Databricks para o Go com sua conta ou workspace do Azure Databricks.

Gerar manualmente tokens de acesso U2M do OAuth

Esta seção é para usuários que trabalham com ferramentas ou serviços de terceiros que não dão suporte ao padrão de autenticação unificada do Databricks . Se você precisar gerar, atualizar ou usar manualmente tokens OAuth do Azure Databricks para autenticação OAuth U2M, siga as etapas nesta seção.

Etapa 1: gerar um verificador de código e um desafio

Para gerar tokens de acesso OAuth U2M manualmente, comece criando um verificador de código e um desafio de código correspondente. Você usará o desafio na Etapa 2 para obter um código de autorização e o verificador na Etapa 3 para trocar esse código por um token de acesso.

Observação

Siga o padrão OAuth PKCE:

  • O verificador de código é uma cadeia de caracteres aleatória criptograficamente (43 a 128 caracteres) usando caracteres A–Z, a–z, 0–9, -._~.
  • O desafio de código é um hash SHA256 codificado em URL base64 do verificador.

Para obter mais informações, consulte Solicitação de Autorização.

O script Python a seguir gera um verificador e um desafio. Embora você possa usá-los várias vezes, o Azure Databricks recomenda gerar um novo par sempre que você gerar manualmente tokens de acesso.

import hashlib, base64, secrets, string

# Allowed characters for the code verifier, per PKCE spec
allowed_chars = string.ascii_letters + string.digits + "-._~"

# Generate a secure code verifier (43–128 characters)
code_verifier = ''.join(secrets.choice(allowed_chars) for _ in range(64))

# Create the SHA256 hash of the code verifier
sha256_hash = hashlib.sha256(code_verifier.encode()).digest()

# Base64-url-encode the hash and strip any trailing '=' padding
code_challenge = base64.urlsafe_b64encode(sha256_hash).decode().rstrip("=")

# Output values
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

Etapa 2: Gerar um código de autorização

Para obter um token de acesso OAuth do Azure Databricks, primeiro você deve gerar um código de autorização OAuth. Esse código expira imediatamente após o uso. Você pode gerar o código no nível da conta ou do workspace:

  • Nível da conta: Use para chamar AS APIs REST no nível da conta e do workspace em todos os workspaces que o usuário pode acessar.
  • Nível do workspace: Use para chamar APIs REST em um único workspace.

Observação

Esses exemplos usam databricks-cli como a ID do cliente. Se você não estiver usando uma ferramenta interna do Azure Databricks, como a CLI ou os SDKs, deverá habilitar um aplicativo OAuth personalizado e usá-lo client_id em suas solicitações. Confira Habilitar ou desabilitar aplicativos OAuth de parceiros.

Gerar um código de autorização no nível da conta

  1. Localize a ID da conta.

  2. No navegador, navegue até a URL com as seguintes substituições:

    • <account-id>: sua ID da conta do Azure Databricks
    • <redirect-url>: um URI de redirecionamento local (por exemplo, http://localhost:8020)
    • <state>: qualquer cadeia de caracteres de texto sem formatação para validar a resposta
    • <code-challenge>: o desafio de código da Etapa 1
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  3. Faça logon quando solicitado a acessar sua conta do Azure Databricks.

  4. Copie o código de autorização da barra de endereços do navegador. É o valor após code= e antes & na URL de redirecionamento:

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Verifique se o valor corresponde ao state que você forneceu originalmente. Caso contrário, descarte o código.

  5. Continue a gerar um token de acesso no nível da conta.

Gerar um código de autorização no nível do workspace

  1. No navegador, navegue até a URL com as seguintes substituições:

    • <databricks-instance>: com <databricks-instance> o nome da instância do workspace do Azure Databricks, por exemplo adb-1234567890123456.7.azuredatabricks.net
    • <redirect-url>: um redirecionamento local (por exemplo, http://localhost:8020)
    • <state>: qualquer valor de texto sem formatação para validação de resposta
    • <code-challenge>: a cadeia de caracteres de desafio da Etapa 1
    https://<databricks-instance>/oidc/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  2. Faça logon quando solicitado a acessar sua conta do Azure Databricks.

  3. Copie o código de autorização da barra de endereços do navegador. É o valor após code= e antes & na URL de redirecionamento:

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Verifique se o valor corresponde ao state que você forneceu originalmente. Caso contrário, descarte o código.

  4. Continue a gerar um token de acesso no nível do workspace.

Etapa 3: Trocar o código de autorização para um token de acesso

Para trocar o código de autorização por um token de acesso OAuth do Azure Databricks, escolha o nível apropriado:

  • Nível da conta: Use para chamar as APIs REST no nível da conta e do workspace em todos os workspaces que o usuário pode acessar.
  • Nível do workspace: Use para chamar APIs REST em um único workspace.

Gerar um token de acesso no nível da conta

  1. Use curl para trocar o código de autorização no nível da conta por um token de acesso OAuth.

    Substitua o seguinte na solicitação:

    • <account-id>: sua ID da conta do Azure Databricks
    • <redirect-url>: a URL de redirecionamento da etapa anterior
    • <code-verifier>: o verificador que você gerou anteriormente
    • <authorization-code>: o código de autorização da etapa anterior
    curl --request POST \
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Copie o valor access_token da resposta. Por exemplo:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    O token é válido por uma hora.

  3. Continue para a etapa 4: chame uma API REST do Azure Databricks.

Gerar um token de acesso no nível do workspace

  1. Use curl para trocar o código de autorização no nível do workspace por um token de acesso OAuth.

    Substitua o seguinte na solicitação:

    • <databricks-instance>: com <databricks-instance> o nome da instância do workspace do Azure Databricks, por exemplo adb-1234567890123456.7.azuredatabricks.net
    • <redirect-url>: a URL de redirecionamento da etapa anterior
    • <code-verifier>: o verificador que você gerou anteriormente
    • <authorization-code>: o código de autorização no nível do workspace
    curl --request POST \
    https://<databricks-instance>/oidc/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Copie o valor access_token da resposta. Por exemplo:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    O token é válido por uma hora.

Etapa 4: Chamar uma API REST do Azure Databricks

Use o token de acesso para chamar APIs REST no nível de conta ou de workspace, dependendo de seu escopo. Para chamar APIs no nível da conta, o usuário do Azure Databricks deve ser um administrador de conta.

Exemplo de solicitação da API REST no nível da conta

Este exemplo usa curl junto com a autenticação Bearer para obter uma lista de todos os workspaces associados a uma conta.

  • Substitua <oauth-access-token> pelo token de acesso OAuth no nível da conta.
  • Substitua <account-id> pela ID da sua conta.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces"

Exemplo de solicitação da API REST no nível do workspace

Este exemplo usa curl junto com a autenticação Bearer para listar todos os clusters disponíveis no workspace especificado.

  • Substitua <oauth-access-token> pelo token de acesso OAuth no nível da conta ou no nível do workspace.
  • Substitua <databricks-instance> pelo nome da instância do workspace do Azure Databricks, por exemplo adb-1234567890123456.7.azuredatabricks.net.
export OAUTH_TOKEN=<oauth-access-token>

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