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, veja Autorizar 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 inicialmente entra e consente com a solicitação de autenticação OAuth, um token OAuth é fornecido à ferramenta participante ou ao SDK para executar a autenticação baseada em token em nome do usuário a partir desse momento. 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 de forma automática, usando o suporte à autenticação de cliente unificada do Databricks. Use essa abordagem simplificada se você estiver usando SDKs específicos do Azure Databricks (como o SDK do Databricks Terraform) e ferramentas. As ferramentas e SDKs suportados estão listados em Autenticação unificada de cliente 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á na sua configuração. Use essa abordagem quando você não estiver usando uma API compatível com a autenticação de cliente unificada do Databricks. Para obter mais detalhes, consulte: Gerar manualmente e usar tokens de acesso para autenticação OAuth de usuário para computador (U2M).

Autorização interativa do usuário com 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 mais detalhes, consulte 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 à documentação da ferramenta ou do SDK. Veja 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, consulte Autorizando o acesso aos recursos do Azure Databricks ou a documentação da ferramenta ou do SDK. Veja 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 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>

Interface de Linha de Comando (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 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 .databrickscfg arquivo 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 arquivo .databrickscfg, confira Configuração de computação do 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, para 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 máquina).
  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 mais detalhes, confira Autorização U2M do OAuth com a CLI do Databricks.

Terraformação

Para operações tanto no nível da conta quanto no nível do workspace, você deve usar a CLI do Databricks para executar o seguinte comando 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:

Configuração 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 sua ID de 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- pela sua própria implementação para recuperar os valores do console ou de outro repositório de configurações, como HashiCorp Vault. Confira também Provedor do Vault). 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>
}

Configuração para operações no nível do workspace do Databricks

databricks auth login --host <workspace-url>

Substitua o espaço reservado <workspace-url> pela URL do Azure Databricks por workspace 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 configuração direta (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. Confira 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 tanto no nível da conta quanto no nível do espaço de trabalho, você deve usar a CLI do Databricks para executar o seguinte comando antes de executar o 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:

Configuração 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 sua ID de 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 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()
)
# ...

Configuração para operações no nível do workspace do Databricks

databricks auth login --host <worskpace-url>

Substitua o espaço reservado <workspace-url> pela URL do Azure Databricks por workspace 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 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 tanto no nível da conta quanto no nível do espaço de trabalho, você deve usar a CLI do Databricks para executar o seguinte comando 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 na pasta inicial do usuário em seu computador:

Configuração 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 sua ID de 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 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);
// ...

Configuração para operações no nível do workspace do 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 do Azure Databricks por workspace 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 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:

Para operações tanto no nível da conta quanto no nível do espaço de trabalho, você deve usar a CLI do Databricks para executar o seguinte comando 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:

Configuração 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 sua ID de 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 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(),
}))
// ...

Configuração para operações no nível do workspace do 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 do Azure Databricks por workspace 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 workspace do Azure Databricks.

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

Observação

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

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 cadeias de caracteres 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. Na barra de endereços do navegador da Web, navegue até a URL a seguir. Para legibilidade, quebras de linha foram adicionadas. 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. Na barra de endereços do navegador da Web, copie o código de autorização. 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. Na barra de endereços do navegador da Web, navegue até a URL a seguir. Para legibilidade, quebras de linha foram adicionadas. 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. Na barra de endereços do navegador da Web, copie o código de autorização. 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

Utilize o token de acesso OAuth de nível de conta ou de nível de área de trabalho para autenticar-se nas APIs REST de nível de conta do Azure Databricks e nas APIs REST de nível de área de trabalho, dependendo do escopo do token de acesso. Sua conta de usuário do Azure Databricks deve ser uma conta de administrador para chamar as 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"