Autorize o acesso do usuário ao Databricks com OAuth
Esta página explica como autorizar o acesso do usuário ao recurso Databricks ao usar o Databricks CLI ou APIs REST Databricks .
A Databricks utiliza OAuth 2.0 como protocolo preferencial para autorização e autenticação de usuários fora da interface do usuário. A autenticação unificada de clientes automatiza a geração de tokens e o refresh. Após o usuário fazer login e conceder consentimento, OAuth emite um token de acesso para CLI, SDK ou outra ferramenta a ser utilizada em nome do usuário. Cada token de acesso é válido por uma hora, após o qual um novo token é solicitado automaticamente.
Nesta página, autorização se refere ao uso OAuth para conceder acesso ao recurso Databricks , enquanto autenticação se refere à validação de credenciais por meio de access tokens.
Para obter mais detalhes de alto nível, consulte Autorizar acesso ao recurso Databricks.
Formas de autorizar o acesso a um recurso d Databricks
Databricks Suporta duas formas de autorizar contas de usuário com OAuth:
-
Automática (recomendada): Use a autenticação unificada se estiver trabalhando com ferramentas e SDKs compatíveis, como o Databricks Terraform SDK. Essa abordagem lida com a geração de tokens e com o site refresh automaticamente.
-
Manual: Gere um verificador de código e um desafio e, em seguida, troque-os por tokens OAuth. Use esse método se sua ferramenta não oferecer suporte à autenticação unificada. Para obter detalhes, consulte Gerar manualmente OAuth U2M access tokens.
Autorização automática com autenticação unificada
Antes de configurar a autorização, verifique as permissões do ACL para o tipo de operações workspace que você planeja realizar e confirme se o seu account possui o nível de acesso necessário. Para obter detalhes, consulte Listas de controle de acesso.
Para executar a autorização OAuth com SDKs da Databricks e ferramentas que suportam autenticação unificada, integre o seguinte em seu código:
- Environment
- Profile
- CLI
- VS Code
- Connect
- Terraform
- Python
- Java
- Go
Para usar a variável de ambiente para um tipo específico de autenticação Databricks com uma ferramenta ou SDK, consulte Autorizar acesso ao recurso Databricks ou a documentação da ferramenta ou do SDK. Veja também variável de ambiente e campos para autenticação unificada e a prioridade do método de autenticação.
Para operações de nível account, defina as seguintes variáveis de ambiente:
DATABRICKS_HOST, defina para o valor da URL do console da sua conta Databricks,https://accounts.cloud.databricks.com.DATABRICKS_ACCOUNT_ID
Para operações em nível workspace, defina as seguintes variáveis de ambiente:
DATABRICKS_HOST, definido como o valor do Databricks workspace URL, porhttps://dbc-a1b2345c-d6e7.cloud.databricks.comexemplo,.
Crie ou identifique um perfil de configuração do Databricks com os seguintes campos no seu arquivo .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 acesso ao recurso Databricks ou a documentação da ferramenta ou do SDK. Veja também variável de ambiente e campos para autenticação unificada e a prioridade do método de autenticação.
accountPara operações .databrickscfg de nível, defina os seguintes valores em seu arquivo. Nesse caso, o URL do console Databricks account é https://accounts.cloud.databricks.com:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
workspacePara operações .databrickscfg de nível, defina os seguintes valores em seu arquivo. Nesse caso, o host é o Databricks workspace URL, por https://dbc-a1b2345c-d6e7.cloud.databricks.com exemplo,:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
Para o site Databricks CLI, execute o comando databricks auth login com as seguintes opções:
- Para operações de nívelaccount, acesse
--host https://accounts.cloud.databricks.com --account-id <account-id>. - Para operações de nívelworkspace, acesse
--host <workspace-url>.
Em seguida, siga as instruções no seu navegador da web para acessar log in para Databricks account ou workspace.
Para obter mais detalhes, consulte Autorização OAuth com a CLI do Databricks.
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.
A autenticação OAuth U2M é compatível com o Databricks Connect para Python a partir do Databricks Runtime 13.1 e para Scala a partir do Databricks Runtime 13.3 LTS.
Para o Databricks Connect, é possível:
- Utilize um perfil de configuração: defina os valores d workspace-level no seu arquivo
.databrickscfgconforme descrito em Perfil tab. Defina também ocluster_idpara o URL da sua instância do workspace. - Utilize a variável de ambiente: defina os mesmos valores apresentados na página de configuração do ambiente ( tab). Defina também o
DATABRICKS_CLUSTER_IDpara o URL da sua instância do workspace.
Os valores em .databrickscfg têm precedência sobre a variável de ambiente.
Para inicializar Databricks Connect com essas configurações, consulte a configuração de computação para Databricks Connect.
Antes de aplicar a configuração do Terraform, é necessário executar um dos comandos databricks auth login no CLI tab dependendo se sua configuração utiliza operações workspace ou account. Estes comandos geram e armazenam em cache os tokens necessários OAuth em .databricks/token-cache.json na pasta inicial do usuário.
operações no nível da conta
Para autenticação default:
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- por sua própria implementação para recuperar os valores do console ou de algum outro armazenamento de configuração, como o HashiCorp Vault. Consulte também Vault Provider. Neste exemplo, é possível definir account_id como o URL do console Databricks account .
operações no nível do espaço de trabalho
Para autenticação default:
provider "databricks" {
alias = "workspace"
}
Para configuração direta:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
}
Antes de executar seu código, é necessário executar o comando “ databricks auth login ” no diretório CLI tab com as opções de operações workspace ou account. Estes comandos geram e armazenam em cache os tokens necessários OAuth em .databricks/token-cache.json na pasta inicial do usuário.
operações no nível da conta
Para autenticação default:
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 placeholders retrieve pela sua própria implementação para recuperar os valores do console ou de outro armazenamento de configuração, como o AWS Systems Manager Parameter Store.
operações no nível do espaço de trabalho
Para autenticação default:
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 Databricks e SDKs que usam Python e que implementam a autenticação unificadaDatabricks, consulte:
Antes de executar seu código, é necessário executar o comando “ databricks auth login ” no diretório CLI tab com as opções de operações workspace ou account. Estes comandos geram e armazenam em cache os tokens necessários OAuth em .databricks/token-cache.json na pasta inicial do usuário.
operações no nível da conta
Para autenticação default:
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 placeholders retrieve pela sua própria implementação para recuperar os valores do console ou de outro armazenamento de configuração, como o AWS Systems Manager Parameter Store.
operações no nível do espaço de trabalho
Para autenticação default:
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 autorização e autenticação com ferramentas Databricks e SDKs que usam Java e que implementam a autenticação unificadaDatabricks, consulte:
- Configure o cliente Databricks Connect para Scala (utiliza o SDK Databricks para Java para autenticação).
- Autentique o SDK do Databricks para Java com sua account ou workspace do Databricks
Antes de executar seu código, é necessário executar o comando “ databricks auth login ” no diretório CLI tab com as opções de operações workspace ou account. Estes comandos geram e armazenam em cache os tokens necessários OAuth em .databricks/token-cache.json na pasta inicial do usuário.
operações no nível da conta
Para autenticação default:
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 placeholders retrieve pela sua própria implementação para recuperar os valores do console ou de outro armazenamento de configuração, como o AWS Systems Manager Parameter Store.
operações no nível do espaço de trabalho
Para autenticação default:
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 Databricks ferramentas e SDKs que usam Go e que implementam a autenticação unificada de clienteDatabricks, consulte Autenticar o Databricks SDK para Go com seu Databricks account ou workspace.
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 são compatíveis com o padrão de autenticação unificadaDatabricks. Se precisar gerar manualmente, refresh, ou usar Databricks OAuth tokens para autenticação OAuth U2M, siga os passos desta seção.
Etapa 1: gerar um verificador de código e desafiar
Para gerar manualmente um acesso U2M OAuth tokens , inicie criando um verificador de código e um desafio de código correspondente. Utilizará 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.
Siga o padrão OAuth PKCE:
- O verificador de código é uma sequência de caracteres aleatórios criptograficamente (43–128 caracteres) utilizando os caracteres
A–Z,a–z,0–9,-._~. - O desafio do 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 seja possível utilizá-los várias vezes, a Databricks recomenda gerar um novo par sempre que você gerar tokens de acesso manualmente.
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 Databricks OAuth , é necessário primeiro gerar um código de autorização OAuth. Esse código expira imediatamente após o uso. É possível gerar o código no nível account ou workspace:
- nível da conta: utilize para acessar tanto o nível accountquanto o nível workspace REST APIs em todos os espaços de trabalho aos quais o usuário tem acesso.
- nível do espaço de trabalho: Utilize para chamar REST APIs dentro de um único workspace.
Esses exemplos usam databricks-cli como ID do cliente. Caso não esteja utilizando uma ferramenta integrada do Databricks, como a CLI ou SDKs, é necessário habilitar um aplicativo OAuth personalizado e utilizar seu client_id em suas solicitações. Consulte Ativar ou desativar aplicativos OAuth de parceiros.
Gerar um código de autorização de nível account
-
Em seu navegador, navegue até o URL com as seguintes substituições:
<account-id>: O seu ID do Databricks account<redirect-url>: Um URI de redirecionamento local (por exemplo,http://localhost:8020)<state>: Quaisquer sequências de texto simples para validar a resposta<code-challenge>: O desafio do código da Etapa 1
https://accounts.cloud.databricks.com/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 -
Faça login quando solicitado para acessar o seu Databricks account.
-
Após efetuar o login, o navegador o redirecionará para o seu URL. Se nada estiver escutando nesse host e porta (por exemplo,
http://localhost:8020), a página mostra um erro de conexão, o que é esperado. Copie o código de autorização da barra de endereços. É a substring apóscode=e antes do próximo&nas strings de consulta.http://localhost:8020/?code=dcod...7fe6&state=<state>Verifique se o valor
statecorresponde ao que você forneceu originalmente. Se isso não acontecer, descarte o código. -
Continue a gerar tokens de acesso de nível account.
Gerar um código de autorização de nível workspace
-
Em seu navegador, navegue até o URL com as seguintes substituições:
<databricks-instance>: Seu<databricks-instance>com o Databricks workspace nome de instância, por exemplodbc-a1b2345c-d6e7.cloud.databricks.com<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>: As sequências 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 -
Faça login quando solicitado para acessar o seu Databricks account.
-
Após efetuar o login, o navegador o redirecionará para o seu URL. Se nada estiver escutando nesse host e porta (por exemplo,
http://localhost:8020), a página mostra um erro de conexão, o que é esperado. Copie o código de autorização da barra de endereços. É a substring apóscode=e antes do próximo&nas strings de consulta.http://localhost:8020/?code=dcod...7fe6&state=<state>Verifique se o valor
statecorresponde ao que você forneceu originalmente. Se isso não acontecer, descarte o código. -
Continue a gerar tokens de acesso de nível “ workspace”.
Passo 3: Troque o código de autorização por um token de acesso
Para trocar o código de autorização por um token de acesso Databricks OAuth , selecione o nível apropriado:
- nível da conta: utilize para acessar tanto o nível accountquanto o nível workspace REST APIs em todos os espaços de trabalho aos quais o usuário tem acesso.
- nível do espaço de trabalho: Utilize para chamar REST APIs dentro de um único workspace.
Gerar um account-level access tokens
-
Utilize
curlpara trocar o código de autorização de nível accountpor um token de acesso OAuth.Substitua o seguinte na solicitação:
<account-id>: O seu ID do Databricks account<redirect-url>: O 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
Bashcurl --request POST \
https://accounts.cloud.databricks.com/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>" -
Copie o valor
access_tokenda resposta. Por exemplo:JSON{
"access_token": "eyJr...Dkag",
"refresh_token": "doau...f26e",
"scope": "all-apis offline_access",
"token_type": "Bearer",
"expires_in": 3600
}Os tokens são válidos por uma hora.
-
Continue para a Etapa 4: Chamar uma API REST do Databricks.
Gerar um workspace-level access tokens
-
Utilize
curlpara trocar o código de autorização de nível workspacepor um token de acesso OAuth.Substitua o seguinte na solicitação:
<databricks-instance>: Seu<databricks-instance>com o Databricks workspace nome de instância, por exemplodbc-a1b2345c-d6e7.cloud.databricks.com<redirect-url>: O URL de redirecionamento da etapa anterior<code-verifier>: O verificador que você gerou anteriormente<authorization-code>: O código de autorização de nível " workspace" (Apenas para uso interno)
Bashcurl --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>" -
Copie o valor
access_tokenda resposta. Por exemplo:JSON{
"access_token": "eyJr...Dkag",
"refresh_token": "doau...f26e",
"scope": "all-apis offline_access",
"token_type": "Bearer",
"expires_in": 3600
}Os tokens são válidos por uma hora.
Etapa 4: chamar uma API REST da Databricks
Utilize os tokens de acesso para chamar account-level ou workspace-level REST APIs, dependendo do seu escopo. Para acessar o account-level APIs, o usuário Databricks deve ser um administrador do account.
Exemplo account-level REST API request
Este exemplo usa a autenticação curl junto com Bearer para obter uma lista de todos os espaços de trabalho associados a um account.
- Substitua
<oauth-access-token>pelos tokens de acesso account-level OAuth. - Substitua
<account-id>pela ID de sua conta.
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/workspaces"
Exemplo workspace-level REST API request
Este exemplo usa curl junto com a autenticação Bearer para listar todos os clusters disponíveis no site especificado workspace.
- Substitua
<oauth-access-token>pelos tokens de acesso account-level ou workspace-level OAuth. - Substitua
<databricks-instance>pelo Databricks workspace nome da instância, pordbc-a1b2345c-d6e7.cloud.databricks.comexemplo,.
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"
Autentique-se como uma entidade de serviço usando OAuth U2M.
Beta
Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a este recurso na página de Pré-visualizações . Veja as prévias do Gerenciador Databricks.
Utilize o fluxo OAuth U2M padrão para obter tokens em nome de uma entidade de serviço Databricks e acesse APIs Databricks usando a identidade da entidade de serviço em vez de sua própria account de usuário.
Você deve ter a função de Gerente de entidade de serviço na entidade de serviço na qual deseja se autenticar. Se você criou a entidade de serviço, você tem essa função automaticamente. Consulte Funções para gerenciar entidade de serviço.
-
Inicie o fluxo U2M padrão. O exemplo a seguir utiliza a CLI do Databricks:
databricks auth login --host <workspace-url> -
Uma janela do navegador será aberta para autorização. Na dropdown, selecione a entidade de serviço para autenticação e, em seguida, autorize o aplicativo.
-
Os tokens OAuth são emitidos com a identidade da entidade de serviço. A reivindicação
subnos tokens corresponde à entidade de serviço selecionada. Para view os tokens, execute:databricks auth token --host <workspace-url>
Este fluxo funciona com qualquer aplicação que suporte autenticação U2M padrão. Para obter os passos completos, consulte Autorização automática com autenticação unificada ou Gerar access tokens OAuth U2M manualmente.
Gerencie seu consentimento OAuth
Durante o fluxo de autorização OAuth U2M, seu navegador pode exibir uma tela de consentimento solicitando que você aprove os escopos solicitados por um aplicativo. Você pode view ou revogar o consentimento já concedido.
Para view ou revogar o consentimento, você precisa do ID de integração do aplicativo. Se o aplicativo for um aplicativo Databricks, obtenha o ID do campo oauth2_app_client_id chamando a API REST Obter um aplicativo . Para configurar escopos para Databricks Apps, consulte Adicionar escopos a um aplicativo. Para outras aplicações, entre em contato com o administrador da sua account .
Para view os escopos aprovados para uma solicitação:
curl --request GET \
--header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/oauth-app-integrations/<app-integration-id>/user-consent/me"
Para revogar o consentimento concedido a um aplicativo:
curl --request DELETE \
--header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/oauth-app-integrations/<app-integration-id>/user-consent/me"
Revogar o consentimento não invalida os tokens existentes. O aplicativo ainda pode usar tokens refresh existentes para obter novos access tokens até que esses tokens expirem. Após o vencimento, o aplicativo não pode iniciar um novo fluxo de autorização para obter novos tokens.
Substitua o seguinte:
<databricks-instance>: Seu<databricks-instance>com o Databricks workspace nome de instância, por exemplodbc-a1b2345c-d6e7.cloud.databricks.com<app-integration-id>ID de integração do aplicativo