Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode chamar um aplicativo do Databricks que expõe uma API HTTP (por exemplo, um aplicativo FastAPI ou Gradio) usando a autenticação de token de portador OAuth 2.0. Esse método funciona em seu ambiente de desenvolvimento local, aplicativos externos e outros aplicativos Azure Databricks.
Observação
Esse método se aplica somente a aplicativos que disponibilizam APIs ou endpoints (acessíveis usando /api/ rotas). Para aplicativos que fornecem apenas uma interface do usuário ou processamento em segundo plano, você não pode se conectar usando a autenticação de token.
Requirements
Para se conectar a um aplicativo do Databricks usando a autenticação de token, você deve atender aos seguintes requisitos:
- O aplicativo deve expor pelo menos um endpoint de API acessível usando a rota
/api/. - Você deve ter permissão
CAN USEno aplicativo. Consulte Configurar permissões para um aplicativo do Databricks. - Você deve ser capaz de gerar um token de acesso Azure Databricks usando um dos métodos de autenticação com suporte.
Métodos de autenticação
Observação
Você não pode chamar um aplicativo do Databricks diretamente usando um token Azure Entra ID. A federação de token requer uma etapa de troca de tokens do lado do cliente, que Azure Databricks não executa o lado do servidor. Para usar Azure Entra ID tokens para autenticação, primeiro você deve trocá-los por tokens OAuth. Veja Autenticar com um token de provedor de identidade.
Escolha o método de autenticação que corresponde ao cenário de conexão:
Desenvolvimento local
Para se conectar do seu ambiente de desenvolvimento local, use a CLI ou os SDKs do Databricks com suas credenciais de usuário.
Faça logon com a CLI:
databricks auth login --host https://<workspace-url> --profile my-envAzure Databricks recomenda usar OAuth autenticação de usuário para máquina (U2M).
Gere um token de acesso:
CLI
databricks auth token --profile my-envPython
from databricks.sdk.core import Config config = Config(profile="my-env") token = config.oauth_token().access_token
Aplicativos externos
Para acesso programático de aplicativos externos, use a autenticação da entidade de serviço com credenciais de máquina para máquina (M2M). Consulte Autorize o acesso da entidade de serviço no Azure Databricks com OAuth.
Crie um princípio de serviço e obtenha o ID e o segredo do cliente. Confira Entidades de serviço.
Gere um token de acesso usando o SDK do Databricks:
from 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 do Databricks
Quando você se conecta de um aplicativo do Databricks a outro, o aplicativo manipula 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()
De um bloco de anotações Azure Databricks
Para chamar a API de um aplicativo a partir de um notebook do Azure Databricks, você deve substituir o token interno do notebook por um token OAuth com escopo para a audiência desejada e, em seguida, usar esse token para consultar o aplicativo.
Obtenha a ID do cliente OAuth do aplicativo. Recupere a ID usando o SDK do Azure Databricks:
from databricks.sdk import WorkspaceClient w = WorkspaceClient() app_client_id = w.apps.get("<app-name>").oauth2_app_client_idTroque o token de notebook por um token de acesso com escopo voltado para o público.
import requests url = "https://<workspace-url>/oidc/v1/token" notebook_token = ( dbutils.notebook.entry_point.getDbutils() .notebook().getContext().apiToken().get() ) data = { "grant_type": "urn:ietf:params:oauth:grant-type:token-exchange", "subject_token": notebook_token, "subject_token_type": "urn:databricks:params:oauth:token-type:personal-access-token", "requested_token_type": "urn:ietf:params:oauth:token-type:access_token", "scope": "all-apis", "audience": app_client_id, } response = requests.post(url=url, data=data) audience_token = response.json()["access_token"]Use o
audience_tokencomo Bearer token para chamar seu aplicativo. Para obter exemplos, consulte Enviar solicitações para o aplicativo.
Observação
O token trocado tem o escopo do aplicativo específico, portanto, você não pode usá-lo para chamar outras APIs de Azure Databricks. O scope parâmetro na solicitação de troca de tokens deve corresponder ou ser um superconjunto dos escopos configurados para o aplicativo na autorização do usuário.
Especificar escopos OAuth para autorização do usuário
Se o aplicativo usar a autorização do usuário, o token de acesso deverá incluir escopos que sejam um superconjunto dos escopos configurados para o aplicativo. Se o token não tiver os escopos necessários, as solicitações poderão falhar com erros 401 ou 403.
Um token gerado usando a CLI do Databricks inclui o all-apis escopo por padrão, o que atende aos requisitos de autorização do usuário para qualquer aplicativo:
databricks auth token --profile my-env
Para solicitar escopos específicos, em vez de all-apis, você pode solicitar manualmente um token de acesso com escopos explícitos usando um fluxo OAuth personalizado. Por exemplo, a solicitação a seguir solicita explicitamente um token de acesso 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 tokens de acesso OAuth U2M.
Enviar solicitações para o aplicativo
Ao chamar os endpoints da API do aplicativo, inclua o Bearer token no cabeçalho de Autorização e substitua <your-endpoint> pelo endpoint real da API do aplicativo.
CURL
curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
-H "Authorization: Bearer <YOUR_TOKEN>"
Python com solicitações
import requests
response = requests.get(
"https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
headers={"Authorization": f"Bearer {token}"}
)
Python com o SDK
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 insira diretamente tokens de acesso no código-fonte. Use variáveis de ambiente ou repositórios de credenciais seguras.
- Atualize os tokens regularmente para minimizar os riscos de segurança se eles estiverem comprometidos.
- Evite registrar tokens de acesso ou dados confidenciais nos logs do seu aplicativo.
Resolução de problemas
Se você encontrar problemas ao se conectar ao seu aplicativo de um computador local, experimente essas soluções.
Falhas de autenticação (401 erros)
Verifique o seguinte:
- Seu token é válido (executar
databricks auth token --profile my-env) - Seu perfil está configurado corretamente com
databricks auth login - O token não expirou
- Seu token inclui os escopos OAuth necessários. Os escopos do token devem ser um superconjunto dos escopos configurados para o aplicativo na autorização do usuário.
Permissão negada (403 erros)
Verifique o seguinte:
- Você tem
CAN USEpermissão para o aplicativo - Seu token inclui os escopos OAuth necessários. Escopos insuficientes podem causar 403 erros mesmo com permissões válidas.
Aplicativo não encontrado (404 erros)
Verifique o seguinte:
- A ID e a URL do workspace estão corretas
- O aplicativo é implantado e em execução
- O caminho do ponto de extremidade existe no aplicativo
Problemas de conectividade de rede
Verifique o seguinte:
- Sua rede permite conexões HTTPS de saída
- O
*.databricksapps.comdomínio é acessível da sua rede
Além disso, verifique se sua organização usa um proxy que requer configuração.
Recursos adicionais
Para obter mais informações, consulte os seguintes recursos:
- Livro de receitas: conectar-se do computador local
- Guia: conectar-se a partir de aplicativos externos
- Livro de receitas: conectar-se de outros aplicativos
- Configurar permissões para um aplicativo do Databricks
- Configurar seu workspace e ambiente de desenvolvimento do Databricks Apps
- Autenticação para a CLI do Databricks
- Autenticação unificada do Databricks