Partilhar via


Autorizar o acesso do usuário ao Azure Databricks com 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ários fora da interface do usuário. A autenticação de cliente unificada automatiza a geração e a atualização de tokens. Depois que um usuário entra e concede consentimento, o OAuth emite um token de acesso para a CLI, 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, autorização refere-se ao uso do OAuth para conceder acesso aos recursos do Azure Databricks, enquanto a autenticação se refere à validação de credenciais por meio de tokens de acesso.

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

Maneiras de autorizar o acesso aos recursos do Azure Databricks

O Azure Databricks suporta duas maneiras de autorizar contas de usuário com OAuth:

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

  • Manual: Gere um verificador de código e desafie e, em seguida, troque-os por um token OAuth. Use esse método se sua ferramenta não oferecer suporte à autenticação unificada. Para obter detalhes, consulte Gerar manualmente tokens de acesso OAuth U2M.

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

Nota

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

Para executar a autorização 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 a documentação da ferramenta ou do SDK. Consulte também Variáveis e campos de ambiente 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 URL do console da sua conta Azure Databricks, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID

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

Perfil

Crie ou identifique um perfil de configuração do Azure Databricks com os seguintes campos em seu .databrickscfg arquivo. Se criar o perfil, substitua os marcadores pelos valores apropriados. Para usar o perfil com uma ferramenta ou SDK, consulte Autorizar o acesso aos recursos do Azure Databricks ou a documentação da ferramenta ou do SDK. Consulte também Variáveis e campos de ambiente 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 .databrickscfg arquivo. 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 arquivo .databrickscfg . Neste caso, o host é a URL por espaço de trabalho do Azure Databricks, por exemplo:

[<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 em seu navegador da Web para fazer logon em sua conta ou espaço de trabalho do Azure Databricks.

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

Código VS

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

Ligar

A autenticação OAuth U2M é suportada no Databricks Connect para Python começando com Databricks Runtime 13.1 e para Scala começando com Databricks Runtime 13.3 LTS.

Para o Databricks Connect, você pode:

  • Use um perfil de configuração: Defina valores no nível do espaço de trabalho em seu .databrickscfg arquivo conforme descrito na guia Perfil . Defina também a URL da instância do cluster_id espaço de trabalho.
  • 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 espaço de trabalho.

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

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

Terraformação

Antes de aplicar sua configuração do Terraform, você deve executar um dos databricks auth login comandos na guia CLI , dependendo se sua configuração usa espaço de trabalho ou operações 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 ao 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 marcadores de posição retrieve- pela sua própria implementação para obter os valores do console ou de algum outro repositório de configuração, como HashiCorp Vault. Consulte também Provedor do Vault. Neste exemplo, você pode definir account_id a URL do console da conta do Azure Databricks.

Operações no nível do espaço de trabalho

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 o código, você deve executar o databricks auth login comando na guia CLI com as opções de espaço de trabalho ou operações 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 ao 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 espaço de trabalho

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 a autenticação com ferramentas e SDKs do Azure Databricks que usam Python e que implementam a autenticação unificada do Databricks, consulte:

Java

Antes de executar o código, você deve executar o databricks auth login comando na guia CLI com as opções de espaço de trabalho ou operações 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 ao 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 espaço de trabalho

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 o código, você deve executar o databricks auth login comando na guia CLI com as opções de espaço de trabalho ou operações 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 ao 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 espaço de trabalho

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 a autenticação com ferramentas e SDKs do Databricks que usam o Go e que implementam a autenticação unificada do cliente Databricks, consulte Autenticar o SDK do Databricks para Go com sua conta ou espaço de trabalho do Azure Databricks.

Gerar manualmente tokens de acesso OAuth U2M

Esta seção é para usuários que trabalham com ferramentas ou serviços de terceiros que não suportam o padrão de autenticação unificada 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 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.

Nota

Siga o padrão PKCE OAuth:

  • O verificador de código é uma cadeia criptograficamente aleatória (43–128 caracteres) usando caracteres A–Z, a–z, 0–9, -._~.
  • O desafio de código é um hash SHA256 codificado por 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, você deve primeiro gerar um código de autorização OAuth. Este código expira imediatamente após a utilização. Você pode gerar o código no nível da conta ou do espaço de trabalho:

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

Nota

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

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

  1. Localize o ID da sua conta.

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

    • <account-id>: Sua ID de conta do Azure Databricks
    • <redirect-url>: Um URI de redirecionamento local (por exemplo, http://localhost:8020)
    • <state>: Qualquer cadeia de caracteres de texto simples para validar a resposta
    • <code-challenge>: O desafio do 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ço do navegador. É o valor depois code= e antes & no 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 para Gerar um token de acesso no nível da conta.

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

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

    • <databricks-instance>: Seu <databricks-instance> com o nome da instância do espaço de trabalho 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 simples para validação de resposta
    • <code-challenge>: A sequência de desafios do Passo 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ço do navegador. É o valor depois code= e antes & no 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 para Gerar um token de acesso no nível do espaço de trabalho.

Etapa 3: Trocar o código de autorização por 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 APIs REST no nível da conta e no nível do espaço de trabalho em todos os espaços de trabalho que o usuário pode acessar.
  • Nível do espaço de trabalho: Use para chamar APIs REST em um único espaço de trabalho.

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 de conta do Azure Databricks
    • <redirect-url>: O URL de redirecionamento da etapa anterior
    • <code-verifier>: O verificador gerado 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 access_token valor 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: chamar uma API REST do Azure Databricks.

Gerar um token de acesso no nível do espaço de trabalho

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

    Substitua o seguinte na solicitação:

    • <databricks-instance>: Seu <databricks-instance> com o nome da instância do espaço de trabalho do Azure Databricks, por exemplo adb-1234567890123456.7.azuredatabricks.net
    • <redirect-url>: O URL de redirecionamento da etapa anterior
    • <code-verifier>: O verificador gerado anteriormente
    • <authorization-code>: O código de autorização no nível do espaço de trabalho
    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 access_token valor 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 da conta ou do espaço de trabalho, dependendo do escopo. Para chamar APIs no nível da conta, seu usuário do Azure Databricks deve ser um administrador de conta.

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

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

  • Substitua <oauth-access-token> pelo token de acesso OAuth no nível da conta.
  • Substitua <account-id> pelo 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 de API REST no nível do espaço de trabalho

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

export OAUTH_TOKEN=<oauth-access-token>

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