Compartilhar via


Autorizar o acesso interativo aos recursos do Azure Databricks com uma conta de usuário usando o OAuth

Este tópico fornece etapas e detalhes para autorizar o acesso aos recursos do Azure Databricks ao executar interativamente comandos da CLI do Azure Databricks ou chamar APIs REST do Azure Databricks.

O Azure Databricks usa o OAuth como o protocolo preferencial para autorização e autenticação do usuário ao interagir com recursos do Azure Databricks fora da interface do usuário. O Azure Databricks também fornece a ferramenta de autenticação de cliente unificada para automatizar a atualização dos tokens de acesso gerados como parte do método de autenticação do OAuth.

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

Quais são as minhas opções de autorização e autenticação ao acessar recursos do Azure Databricks?

Neste tópico, autorização refere-se ao protocolo (OAuth) usado para negociar o acesso a recursos específicos do Azure Databricks por meio da delegação. A autenticação se refere ao mecanismo pelo qual as credenciais são representadas, transmitidas e verificadas, que, nesse caso, são tokens de acesso.

O Azure Databricks usa autorização baseada em OAuth 2.0 para habilitar o acesso aos recursos de conta e de workspace do Azure Databricks a partir da linha de comando ou código em nome de um usuário com permissões para acessar esses recursos. Depois que um usuário faz login inicialmente e consente com a solicitação de autenticação OAuth, um token OAuth é fornecido à ferramenta participante ou SDK para executar a autenticação baseada em token em nome do usuário daquele momento em diante. O token de acesso OAuth tem um tempo de vida útil de uma hora, seguindo o qual a ferramenta ou o SDK envolvido fará uma tentativa automática em segundo plano de obter um novo token que também é válido por uma hora.

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

  • Principalmente automaticamente, usando o suporte à autenticação de cliente unificada do Databricks. Use essa abordagem simplificada se você estiver usando SDKs (como o SDK do Databricks Terraform) e ferramentas específicos do Azure Databricks. As ferramentas e SDKs com suporte estão listados na autenticação de cliente unificada do Databricks.
  • Manualmente, gerando diretamente um par de verificador/desafio de código OAuth e um código de autorização e usando-os para criar o token OAuth inicial que você fornecerá em sua configuração. Use essa abordagem quando não estiver usando uma API compatível com a autenticação unificada de cliente do Databricks. Para obter mais detalhes, consulte Gerar manualmente e usar tokens de acesso para autenticação U2M (usuário para computador) do OAuth.

Autorização de usuário interativo com a autenticação de cliente unificada do Databricks

Observação

Antes de começar a configurar sua autorização, examine as permissões de ACL para a categoria específica de operações que você executará em objetos de workspace e determine se sua conta tem o nível de acesso necessário. Para obter detalhes, confira Listas de controle de acesso.

Para executar a autorização do OAuth com SDKs e ferramentas do Azure Databricks que dão suporte à autenticação unificada do cliente, 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 Autorizando o acesso aos recursos do Azure Databricks ou a documentação da ferramenta ou do SDK. Consulte também Variáveis de ambiente e campos para autenticação unificada do cliente e Métodos padrão para autenticação unificada do cliente.

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, veja Autorização de acesso aos recursos do Azure Databricks ou a documentação da ferramenta ou do SDK. Consulte também Variáveis de ambiente e campos para autenticação unificada do cliente e Métodos padrão para autenticação unificada do cliente.

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 workspace, defina os seguintes valores em 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 Databricks, execute o comando databricks auth login com as opções a seguir:

Depois de executar esse comando, 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.

Conectar

Observação

A autenticação U2M do OAuth é compatível com as seguintes versões do Databricks Connect:

  • Para Python, Databricks Connect para o Databricks Runtime 13.1 e superior.
  • No caso do Scala, o Databricks Connect para Databricks Runtime 13.3 LTS e superior.

No Databricks Connect, siga um destes procedimentos:

  • Defina os valores em seu arquivo .databrickscfg para operações no nível do workspace do Azure Databricks, conforme especificado na seção "Perfil" deste artigo. Defina também a variável de ambiente cluster_id no seu perfil como a URL por workspace, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net.
  • Defina as variáveis de ambiente para operações no nível do workspace do Azure Databricks, conforme especificado na seção "Ambiente" deste artigo. Defina também a variável de ambiente DATABRICKS_CLUSTER_ID como a URL por workspace, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net.

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

Para inicializar o cliente do Databricks Connect com essas variáveis de ambiente ou valores em seu .databrickscfg arquivo, consulte Configuração de computação para o Databricks Connect.

Código VS

Na extensão do Databricks para Visual Studio Code, faça o seguinte:

  1. No painel Configuração, clique em Configurar o Databricks.
  2. Na Paleta de Comandos, em Host do Databricks, insira a URL por workspace, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net, e pressione Enter.
  3. Selecione OAuth (usuário para computador).
  4. Conclua as instruções na tela no navegador da Web para concluir a autenticação com sua conta do Azure Databricks e permitir o acesso a todas as APIs.

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

Terraform

Para operações no nível de conta e no nível do workspace, você deve usar a CLI do Databricks para executar o comando a seguir antes de aplicar a configuração do Terraform. Este comando instrui a CLI do Databricks a gerar e armazenar em cache o token OAuth necessário no caminho .databricks/token-cache.json dentro da pasta inicial do usuário em seu computador:

Configurar para operações no nível da conta do Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Substitua os seguintes espaços reservados:

  • Substitua <account-console-url> pelo valor https://accounts.azuredatabricks.net. (Não defina isso com o valor da URL do seu workspace do Azure Databricks.)
  • Substitua <account-id> pelo valor da sua conta do Azure Databricks. Confira Localizar a ID da conta.

Observação

Se você tiver um perfil de configuração do Azure Databricks com os campos host e account_id já definidos, poderá substituir --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL de logon da conta e a ID da conta como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use o código Terraform semelhante a um dos seguintes snippets:

Para autenticação padrão:

provider "databricks" {
  alias = "account"
}

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

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

Configurar para operações no nível do espaço de trabalho do Azure Databricks

databricks auth login --host <workspace-url>

Substitua o espaço reservado <workspace-url> pela URL por workspace do Azure Databricks de destino, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net.

Observação

Se você tiver um perfil de configuração do Azure Databricks com o campo host já definido, poderá substituir --host <workspace-url> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL do workspace como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use o código Terraform semelhante a um dos seguintes snippets:

Para autenticação padrão:

  provider "databricks" {
  alias = "workspace"
}

Para a configuração direta (substitua os espaços reservados retrieve por sua própria implantação para recuperar os valores do console ou de algum outro repositório de configurações, como o HashiCorp Vault. Consulte também Provedor de Cofre). Nesse caso, o host é a URL por workspace do Azure Databricks, por exemplo https://adb-1234567890123456.7.azuredatabricks.net:

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

Para obter mais informações sobre como autenticar com o provedor Databricks Terraform, consulte Authentication.

Python

Para operações no nível da conta e no nível do espaço de trabalho, primeiro você deve usar a CLI do Databricks para executar o comando a seguir, antes de executar seu código Python. Este comando instrui a CLI do Databricks a gerar e armazenar em cache o token OAuth necessário no caminho .databricks/token-cache.json dentro da pasta inicial do usuário em seu computador:

Configurar para operações no nível da conta do Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Substitua os seguintes espaços reservados:

  • Substitua <account-console-url> pelo valor https://accounts.azuredatabricks.net. (Não defina isso com o valor da URL do seu workspace do Azure Databricks.)
  • Substitua <account-id> pelo valor da sua conta do Azure Databricks. Confira Localizar a ID da conta.

Observação

Se você tiver um perfil de configuração do Azure Databricks com os campos host e account_id já definidos, poderá substituir --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL de logon da conta e a ID da conta como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use código Python semelhante a um dos seguintes snippets:

Para autorização padrão usando a autenticação de cliente unificada do Databricks:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Para a configuração direta (substitua os espaços reservados retrieve por sua própria implantação para recuperar os valores do console ou de algum outro repositório de configurações, como o Azure KeyVault). Nesse caso, a URL do console da conta do Azure Databricks é https://accounts.azuredatabricks.net:

from databricks.sdk import AccountClient

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

Configurar para operações no nível do espaço de trabalho do Azure Databricks

databricks auth login --host <worskpace-url>

Substitua o espaço reservado <workspace-url> pela URL por workspace do Azure Databricks de destino, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net.

Observação

Se você tiver um perfil de configuração do Azure Databricks com o campo host já definido, poderá substituir --host <workspace-url> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL do workspace como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use código Python semelhante a um dos seguintes snippets:

Para autorização padrão usando a autenticação de cliente unificada do Databricks:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Para a configuração direta (substitua os espaços reservados retrieve por sua própria implantação para recuperar os valores do console ou de algum outro repositório de configurações, como o Azure KeyVault). Nesse caso, o host é a URL por workspace do Azure Databricks, por exemplo https://adb-1234567890123456.7.azuredatabricks.net:

from databricks.sdk import WorkspaceClient

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

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

Java

Para operações no nível da conta e no nível do espaço de trabalho, você deve usar a CLI do Databricks para executar o comando a seguir antes de executar o código Java. Este comando instrui a CLI do Databricks a gerar e armazenar em cache o token OAuth necessário no caminho .databricks/token-cache.json dentro da pasta inicial do usuário em seu computador:

Configurar para operações no nível da conta do Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Substitua os seguintes espaços reservados:

  • Substitua <account-console-url> pelo valor https://accounts.azuredatabricks.net. (Não defina isso com o valor da URL do seu workspace do Azure Databricks.)
  • Substitua <account-id> pelo valor da sua conta do Azure Databricks. Confira Localizar a ID da conta.

Observação

Se você tiver um perfil de configuração do Azure Databricks com os campos host e account_id já definidos, poderá substituir --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL de logon da conta e a ID da conta como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use o código Java semelhante a um dos seguintes snippets:

Para autorização padrão usando a autenticação de cliente unificada do Databricks:

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

Para a configuração direta (substitua os espaços reservados retrieve por sua própria implantação para recuperar os valores do console ou de algum outro repositório de configurações, como o Azure KeyVault). Nesse caso, a URL do console da conta do Azure Databricks é https://accounts.azuredatabricks.net:

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

Configurar para operações no nível do espaço de trabalho do Azure Databricks

Para operações no nível do workspace, primeiro você deve usar a CLI do Databricks para executar o comando a seguir antes de executar seu código Java. Este comando instrui a CLI do Databricks a gerar e armazenar em cache o token OAuth necessário no caminho .databricks/token-cache.json dentro da pasta inicial do usuário em seu computador:

databricks auth login --host <worskpace-url>

Substitua o espaço reservado <workspace-url> pela URL por workspace do Azure Databricks de destino, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net.

Observação

Se você tiver um perfil de configuração do Azure Databricks com o campo host já definido, poderá substituir --host <workspace-url> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL do workspace como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use o código Java semelhante a um dos seguintes snippets:

Para autorização padrão usando a autenticação de cliente unificada do Databricks:

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

Para a configuração direta (substitua os espaços reservados retrieve por sua própria implantação para recuperar os valores do console ou de algum outro repositório de configurações, como o Azure KeyVault). Nesse caso, o host é a URL por workspace do Azure Databricks, por exemplo https://adb-1234567890123456.7.azuredatabricks.net:

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 do Databricks e SDKs que usam Java e que implementam de autenticação unificada de cliente do Databricks, consulte:

Go

Para operações no nível da conta e no nível do espaço de trabalho, você deve usar a CLI do Databricks para executar o comando a seguir, antes de executar o código Go. Este comando instrui a CLI do Databricks a gerar e armazenar em cache o token OAuth necessário no caminho .databricks/token-cache.json dentro da pasta inicial do usuário em seu computador:

Configurar para operações no nível da conta do Databricks

databricks auth login --host <account-login-url> --account-id <account-id>

Substitua os seguintes espaços reservados:

  • Substitua <account-console-url> pelo valor https://accounts.azuredatabricks.net. (Não defina isso com o valor da URL do seu workspace do Azure Databricks.)
  • Substitua <account-id> pelo valor da sua conta do Azure Databricks. Confira Localizar a ID da conta.

Observação

Se você tiver um perfil de configuração do Azure Databricks com os campos host e account_id já definidos, poderá substituir --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL de logon da conta e a ID da conta como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use o código Go semelhante a um dos seguintes snippets:

Para autorização padrão usando a autenticação de cliente unificada do Databricks:

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

Para a configuração direta (substitua os espaços reservados retrieve por sua própria implantação para recuperar os valores do console ou de algum outro repositório de configurações, como o Azure KeyVault). Nesse caso, a URL do console da conta do Azure Databricks é https://accounts.azuredatabricks.net:

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

Configurar para operações no nível do espaço de trabalho do Azure Databricks

Para operações no nível do workspace, primeiro você deve usar a CLI do Databricks para executar o comando a seguir, antes de executar o código Go. Este comando instrui a CLI do Databricks a gerar e armazenar em cache o token OAuth necessário no caminho .databricks/token-cache.json dentro da pasta inicial do usuário em seu computador:

databricks auth login --host <worskpace-url>

Substitua o espaço reservado <workspace-url> pela URL por workspace do Azure Databricks de destino, por exemplo, https://adb-1234567890123456.7.azuredatabricks.net.

Observação

Se você tiver um perfil de configuração do Azure Databricks com o campo host já definido, poderá substituir --host <workspace-url> por --profile <profile-name>.

Depois de executar o comando auth login, você será solicitado a salvar a URL do workspace como um perfil de configuração do Azure Databricks. Quando solicitado, insira o nome de um perfil novo ou existente em seu arquivo .databrickscfg. Qualquer perfil existente com o mesmo nome em seu arquivo .databrickscfg é substituído.

Se solicitado, conclua as instruções na tela do navegador da Web para concluir o logon. Em seguida, use o código Go semelhante a um dos seguintes snippets:

Para autenticação padrão:

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

Para a configuração direta (substitua os espaços reservados retrieve por sua própria implantação para recuperar os valores do console ou de algum outro repositório de configurações, como o Azure KeyVault). Nesse caso, o host é a URL por workspace do Azure Databricks, por exemplo https://adb-1234567890123456.7.azuredatabricks.net:

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 espaço de trabalho do Azure Databricks.

Gerar manualmente e usar tokens de acesso para autenticação U2M (usuário para computador) do OAuth

Observação

Esta seção é fornecida para usuários com ferramentas ou serviços de terceiros que não funcionam com o padrão de autenticação unificada do cliente do Databricks.

Se, por algum motivo, você precisar gerar, atualizar ou usar manualmente tokens de acesso OAuth do Azure Databricks para autenticação U2M do OAuth, siga as instruções nesta seção.

Etapa 1: Gerar um verificador de código e um par de desafios de código OAuth

Para gerar manualmente e usar tokens de acesso para autenticação U2M do OAuth, primeiro você deve ter um verificador de código OAuth e um desafio de código OAuth derivado do verificador de código. Use o desafio de código na Etapa 2 para gerar um código de autorização OAuth. Use o verificador de código e o código de autorização na Etapa 3 para gerar o token de acesso OAuth.

Observação

Embora seja tecnicamente possível usar strings de texto sem formatação e não codificadas para o verificador de código e o desafio de código, o Databricks incentiva a seguir o padrão OAuth para gerar o verificador de código e o desafio de código.

Especificamente, o verificador de código deve ser uma cadeia de caracteres criptograficamente aleatória usando caracteres dos conjuntos A-Z, a-z, 0-9, e os caracteres de pontuação -._~ (hífen, ponto, sublinhado e til), entre 43 e 128 caracteres. O desafio de código deve ser uma cadeia de caracteres de URL codificada em base64 do hash SHA256 do verificador de código. Para obter mais informações, consulte Solicitação de Autorização.

Execute o script Python a seguir para gerar rapidamente um par de desafios de código e um verificador de código exclusivos. Embora você possa reutilizar esse verificador de código gerado e o par de desafios de código várias vezes, o Databricks recomenda que você gere um novo verificador de código e um par de desafios de código sempre que gerar manualmente tokens de acesso para autenticação U2M do OAuth.

import uuid, hashlib, base64

# Generate a UUID.
uuid1 = uuid.uuid4()

# Convert the UUID to a string.
uuid_str1 = str(uuid1).upper()

# Create the code verifier.
code_verifier = uuid_str1 + "-" + uuid_str1

# Create the code challenge based on the code verifier.
code_challenge = base64.urlsafe_b64encode(hashlib.sha256(code_verifier.encode()).digest()).decode('utf-8')

# Remove all padding from the code challenge.
code_challenge = code_challenge.replace('=', '')

# Print the code verifier and the code challenge.
# Use these in your calls to manually generate
# access tokens for OAuth U2M authentication.
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

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

Use um código de autorização OAuth para gerar um token de acesso OAuth do Azure Databricks. O código de autorização expira imediatamente após o uso para gerar um token de acesso OAuth do Azure Databricks. O escopo do código de autorização depende do nível do qual você o gera. Você pode gerar um código de autorização no nível da conta ou no nível do workspace do Azure Databricks, da seguinte maneira:

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

  1. Como administrador de conta, faça logon no console da conta.

  2. Clique na seta para baixo ao lado do seu nome de usuário no canto superior direito.

  3. Copie sua ID da conta.

  4. Navegue até a seguinte URL na barra de endereços do navegador da Web. Quebras de linha foram adicionadas para facilitar a leitura. Sua URL não deve conter essas quebras de linha.

    Na URL a seguir, substitua o seguinte:

    • Substitua <account-id> pela ID da conta copiada.
    • Substitua <redirect-url> por uma URL de redirecionamento para seu computador local, por exemplo, http://localhost:8020.
    • Substitua <state> por alguma cadeia de caracteres de texto sem formatação que você pode usar para verificar a integridade do código de autorização.
    • Substitua <code-challenge> pelo desafio de código gerado na 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
    
  5. Quando solicitado, siga as instruções na tela para fazer logon em sua conta do Azure Databricks.

  6. Copie o código de autorização na barra de endereços do navegador da Web. O código de autorização é a cadeia de caracteres completa entre code= e o caractere & na URL. Por exemplo, o código de autorização na URL a seguir é dcod...7fe6:

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

    Verifique a integridade desse código de autorização confirmando visualmente que o valor <state> nessa URL de resposta corresponde ao valor state fornecido na URL de solicitação. Se os valores forem diferentes, não use esse código de autorização, pois ele pode estar comprometido.

  7. Pule para Gerar um token de acesso no nível da conta.

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

  1. Navegue até a seguinte URL na barra de endereços do navegador da Web. Quebras de linha foram adicionadas para facilitar a leitura. Sua URL não deve conter essas quebras de linha.

    Na URL a seguir, substitua o seguinte:

    • Substitua <databricks-instance> pelo nome da instância do workspace do Azure Databricks, por exemplo adb-1234567890123456.7.azuredatabricks.net.
    • Substitua <redirect-url> por uma URL de redirecionamento para seu computador local, por exemplo, http://localhost:8020.
    • Substitua <state> por alguma cadeia de caracteres de texto sem formatação que você pode usar para verificar a integridade do código de autorização.
    • Substitua <code-challenge> pelo desafio de código gerado na 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. Quando solicitado, siga as instruções na tela para fazer logon no workspace do Azure Databricks.

  3. Copie o código de autorização na barra de endereços do navegador da Web. O código de autorização é a cadeia de caracteres completa entre code= e o caractere & na URL. Por exemplo, o código de autorização na URL a seguir é dcod...7fe6:

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

    Verifique a integridade desse código de autorização confirmando visualmente que o valor <state> nessa URL de resposta corresponde ao valor state fornecido na URL de solicitação. Se os valores forem diferentes, não use esse código de autorização, pois ele pode estar comprometido.

Etapa 3: Usar o código de autorização para gerar um token de acesso OAuth

Use o código de autorização OAuth da etapa anterior para gerar um token de acesso OAuth do Azure Databricks, da seguinte maneira:

Gerar um token de acesso no nível da conta

  1. Use um cliente como curl junto com o código de autorização no nível da conta para gerar o token de acesso OAuth no nível da conta. Na seguinte chamada curl, substitua os espaços reservados a seguir:

    • Substitua <account-id> pela ID de conta da Etapa 2.
    • Substitua <redirect-url> pela URL de redirecionamento da Etapa 2.
    • Substitua <code-verifier> pelo verificador de código gerado na Etapa 1.
    • Substitua <authorization-code> pelo código de autorização no nível da conta gerado na Etapa 2.
    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. Na resposta, copie o token de acesso OAuth no nível da conta. O token de acesso é a cadeia de caracteres completa no objeto access_token. Por exemplo, o token de acesso na resposta a seguir é eyJr...Dkag:

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

    Este token de acesso expira em uma hora. Para gerar um novo token de acesso, repita este procedimento da Etapa 1.

  3. Pule para a Etapa 4: Chamar uma API REST do Databricks.

Gerar um token de acesso no nível do workspace

  1. Use um cliente como curl junto com o código de autorização no nível do workspace para gerar o token de acesso OAuth no nível do workspace. Na seguinte chamada curl, substitua os espaços reservados a seguir:

    • Substitua <databricks-instance> pelo nome da instância do workspace do Azure Databricks, por exemplo adb-1234567890123456.7.azuredatabricks.net.
    • Substitua <redirect-url> pela URL de redirecionamento da Etapa 2.
    • Substitua <code-verifier> pelo verificador de código gerado na Etapa 1.
    • Substitua <authorization-code> pelo código de autorização no nível do workspace gerado na Etapa 2.
    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. Na resposta, copie o token de acesso OAuth no nível do workspace. O token de acesso é a cadeia de caracteres completa no objeto access_token. Por exemplo, o token de acesso na resposta a seguir é eyJr...Dkag:

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

    Este token de acesso expira em uma hora. Para gerar um novo token de acesso, repita este procedimento da Etapa 1.

Etapa 4: Chamar uma API REST do Databricks

Use o token de acesso OAuth no nível da conta ou no nível do workspace para autenticação nas APIs REST no nível da conta e APIs REST no nível do workspace do Azure Databricks, dependendo do escopo do token de acesso. Sua conta de usuário do Azure Databricks deve ser um administrador da conta para chamar APIs REST no nível da 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"