Conecte-se a um aplicativo API Databricks usando autenticação de tokens
Você pode chamar um aplicativo Databricks que expõe uma API HTTP (por exemplo, um aplicativo FastAPI ou Gradio) usando a autenticação de tokens OAuth 2.0 Bearer. Este método funciona no seu ambiente de desenvolvimento local, aplicativos externos e outros aplicativos do Databricks.
Este método se aplica somente a aplicativos que expõem APIs ou endpoints (acessíveis usando rotas /api/
). Para aplicativos que fornecem apenas uma interface de usuário ou processamento em segundo plano, não é possível se conectar usando autenticação de tokens.
Requisitos
Para se conectar a um aplicativo Databricks usando autenticação de tokens, você deve atender aos seguintes requisitos:
- O aplicativo deve expor pelo menos um endpoint API acessível usando rotas
/api/
. - Você deve ter permissão
CAN USE
no aplicativo. Consulte Configurar permissões para um aplicativo Databricks. - Você deve ser capaz de gerar um access token Databricks usando um dos métodos de autenticação suportados.
Métodos de autenticação
Escolha o método de autenticação que corresponde ao seu cenário de conexão:
Desenvolvimento local
Para conectar-se ao seu ambiente de desenvolvimento local, use a CLI ou os SDKs do Databricks com suas credenciais de usuário.
-
faça login com o CLI:
Bashdatabricks auth login --host https://<workspace-url> --profile my-env
A Databricks recomenda o uso da autenticação OAuth de usuário para máquina (U2M).
-
Gerar um access token:
- CLI
- Python
databricks auth token --profile my-env
from databricks.sdk.core import Config
config = Config(profile="my-env")
token = config.oauth_token().access_token
Aplicações externas
Para acesso programático de aplicativos externos, use a autenticação de entidade de serviço com credenciais de máquina a máquina (M2M). Consulte Autorizar o acesso da entidade de serviço ao Databricks com OAuth.
-
Crie uma entidade de serviço e obtenha o ID do cliente e o segredo. Veja entidade de serviço.
-
Gere um access token usando o SDK Databricks :
Pythonfrom databricks.sdk import WorkspaceClient
import requests
# Option 1: Explicit credentials
wc = WorkspaceClient(
host="https://<workspace-url>",
client_id="<service-principal-client-id>",
client_secret="<service-principal-client-secret>"
)
# Option 2: Environment variables
# Set DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET
wc = WorkspaceClient()
# Generate Bearer token
headers = wc.config.authenticate()
De outros aplicativos Databricks
Quando você se conecta de um aplicativo Databricks a outro, o aplicativo lida com a autenticação automaticamente usando sua entidade de serviço atribuída.
from databricks.sdk import WorkspaceClient
import requests
# No explicit credentials needed, uses app's service principal
wc = WorkspaceClient()
headers = wc.config.authenticate()
Especificar escopos OAuth para autorização do usuário
Quando você usa a CLI ou os SDKs do Databricks com autenticação unificada, conforme mostrado na seção anterior, as ferramentas solicitam automaticamente o escopo básico all-apis
. No entanto, se seu aplicativo usar autorização de usuário, você deverá solicitar manualmente um access token com escopos adicionais usando um fluxo OAuth personalizado.
Certifique-se de que seu access token inclua os escopos configurados em Editar > Autorização do usuário . Se os tokens não tiverem os escopos necessários, as solicitações poderão falhar com erros 401 ou 403.
Por exemplo, a solicitação a seguir solicita explicitamente um access token com os escopos sql
, file.files
e dashboards.genie
:
curl --request POST \
https://<databricks-instance>/oidc/v1/token \
--data "client_id=databricks-cli" \
--data "grant_type=authorization_code" \
--data "redirect_uri=<redirect-url>" \
--data "code_verifier=<code-verifier>" \
--data "code=<authorization-code>" \
--data "scope=sql+file.files+dashboards.genie"
Para obter instruções completas, consulte Gerar manualmente access tokens OAuth U2M.
Enviar solicitações para o aplicativo
Ao chamar o endpoint da API do seu aplicativo, inclua os tokens Bearer no cabeçalho Authorization e substitua <your-endpoint>
pelo caminho real API do seu aplicativo:
- CURL
- Python with requests
- Python with SDK
curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
-H "Authorization: Bearer <YOUR_TOKEN>"
import requests
response = requests.get(
"https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
headers={"Authorization": f"Bearer {token}"}
)
from databricks.sdk import WorkspaceClient
import requests
wc = WorkspaceClient()
headers = wc.config.authenticate()
response = requests.get(
"https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
headers=headers
)
Considerações de segurança
Ao se conectar a aplicativos do seu ambiente local, siga estas práticas recomendadas de segurança:
- Nunca codifique access tokens no seu código-fonte. Use variável de ambiente ou armazenamentos de credenciais seguros.
- atualize tokens regularmente para minimizar os riscos de segurança caso sejam comprometidos.
- Evite registrar access tokens ou dados confidenciais nos logs do seu aplicativo.
Solução de problemas
Se você encontrar problemas ao se conectar ao seu aplicativo a partir de uma máquina local, tente estas soluções.
Falhas de autenticação (erros 401)
Verifique o seguinte:
- Seus tokens são válidos (execução
databricks auth token --profile my-env
) - Seu perfil está configurado corretamente com
databricks auth login
- Os tokens não expiraram
- Seus tokens incluem os escopos OAuth necessários. As ferramentas CLI e SDK fornecem apenas escopos básicos como
all-apis
, o que pode não ser suficiente para autorização do usuário.
Permissão negada (erros 403)
Verifique o seguinte:
- Você tem
CAN USE
permissão no aplicativo - Seus tokens incluem os escopos OAuth necessários. Escopos insuficientes podem causar erros 403, mesmo com permissões válidas.
Aplicativo não encontrado (erros 404)
Verifique o seguinte:
- O ID e a URL workspace estão corretos
- O aplicativo está implantado e em execução
- O caminho endpoint existe no aplicativo
Problemas de conectividade de rede
Verifique o seguinte:
- Sua rede permite conexões HTTPS de saída
- O domínio
*.databricksapps.com
é acessível a partir da sua rede
Além disso, verifique se sua organização usa um proxy que requer configuração.
Recurso adicional
Para mais informação consulte o seguinte recurso:
- Livro de receitas: Conectar da máquina local
- Livro de receitas: Conectar de aplicativos externos
- Livro de receitas: conectar de outros aplicativos
- Configurar permissões para um aplicativo Databricks
- Configure seu ambiente workspace e desenvolvimento Databricks Apps
- Autenticação para a CLI do Databricks
- Autenticação unificada do Databricks