Autenticação para agentes de IA
Agentes de AI frequentemente precisam autenticar-se em outros recursos para concluir tarefas. Por exemplo, um agente implantado pode precisar acessar um índice de pesquisa de AI para query dados não estruturados, um Endpoint de serviço para chamar um modelo base ou funções do Unity Catalog para executar lógica personalizada.
Esta página aborda os métodos de autenticação para agentes implantados no Databricks Apps. Para agentes implantados em endpoints de Model Serving, consulte Autenticação para agentes de AI (Model Serving).
O Databricks Apps fornece dois métodos de autenticação para agentes. Cada método atende a diferentes casos de uso:
Método | Descrição | Quando usar |
|---|---|---|
O Agente se autentica usando um Service Principal criado automaticamente com permissões consistentes. Anteriormente chamada autenticação de Service Principal. | Caso de uso mais comum. Use quando todos os usuários tiverem o mesmo acesso a recursos. | |
O agente autentica-se usando a identidade do usuário que faz a solicitação. Anteriormente chamada autenticação On-Behalf-Of (OBO). | Use quando você precisar de permissões específicas do usuário, trilhas de auditoria ou controle de acesso granular com o Unity Catalog. |
Você pode combinar ambos os métodos em um único agente. Por exemplo, use a autorização do aplicativo para acessar um índice compartilhado da Pesquisa de AI enquanto usa a autorização do usuário para query tabelas específicas do usuário.
Configure a autenticação com a UI do workspace ou os Pacotes de Automação Declarativa
Você pode configurar todas as configurações de autenticação de duas maneiras:
- Workspace UI: edite o aplicativo e gerencie recursos e escopos no passo Configurar. É recomendado ao iterar em um único aplicativo no workspace.
- Pacotes de Automação Declarativa : Declare recursos, escopos e variáveis de ambiente em um arquivo
databricks.ymle implante comdatabricks bundle deploy. Recomendado quando você quer versionamento baseado em Git, CI/CD ou para enviar o mesmo agente entre Workspaces. Todos os padrões de agente são implantados com umdatabricks.yml.
Ambos os caminhos produzem a mesma configuração de runtime. O restante desta página mostra cada instrução nas duas formas para que você possa selecionar uma e manter a consistência em seu projeto.
Para adicionar um recurso ao aplicativo por qualquer um dos caminhos, você deve ter permissão Can Manage no recurso e no aplicativo.
Para a referência completa do pacote, consulte recurso do aplicativo e app.resources. Para um tutorial completo do pacote, consulte Gerenciar aplicativos Databricks usando Pacotes de Automação Declarativa.
Autorização do aplicativo
Por default, o Databricks Apps se autentica usando a autorização do aplicativo. O Databricks cria automaticamente um Service Principal ao criar o aplicativo, e ele atua como a identidade do aplicativo.
Todos os usuários que interagem com o aplicativo compartilham as mesmas permissões definidas para o Service Principal. Este modelo funciona bem quando se deseja que todos os usuários vejam os mesmos dados ou quando o aplicativo executa operações compartilhadas não vinculadas a controles de acesso específicos do usuário.
Para informações detalhadas sobre autorização de aplicativo, consulte Autorização de aplicativo.
Conceder permissões ao experimento MLflow
Seu agente precisa de acesso a um experimento do MLflow para registrar rastreamentos e resultados de avaliação. Conceda ao Service Principal a permissão Can Edit no experimento.
- Workspace UI
- Declarative Automation Bundles
- Clique em **Editar** na página inicial do seu aplicativo.
- Vá para o passo de **Configurar**.
- Na seção **Recursos do aplicativo**, adicione o recurso de experimento do MLflow com
Can Editpermissão.
Consulte Adicionar um recurso de experimento MLflow a um aplicativo Databricks.
-
Declare o experimento na lista
resourcesdo seu aplicativo emdatabricks.yml. Onameque você atribui ao recurso é referenciado mais tarde quando você configura as variáveis de ambiente.YAMLresources:
apps:
my_agent:
name: 'my-agent'
source_code_path: ./
resources:
- name: 'experiment'
experiment:
experiment_id: '<experiment-id>'
permission: 'CAN_EDIT' -
Reimplante o pacote:
Bashdatabricks bundle deploy
databricks bundle run my_agent
Consulte app.resources.experiment para todos os campos.
Conceder permissões a outros recursos do Databricks
Se o seu agente usa outros recursos do Databricks, como Agentes Genie, índices de Pesquisa de AI, ou SQL warehouses, conceda permissões ao Service Principal em cada um deles.
Para acessar o registro de prompt, conceda permissões CREATE FUNCTION, EXECUTE e MANAGE no esquema do Unity Catalog para armazenar prompts.
Ao conceder acesso a recursos do Unity Catalog, também deve conceder permissões a todos os recursos dependentes a jusante. Por exemplo, se você conceder acesso a um Genie Agent, também deverá conceder acesso às suas tabelas subjacentes, SQL Warehouse e funções do Unity Catalog.
- Workspace UI
- Declarative Automation Bundles
Adicione recursos ao aplicativo na seção Recursos do aplicativo ao criar ou editar o aplicativo no workspace do Databricks.
- Clique em **Editar** na página inicial do seu aplicativo.
- Vá para o passo de **Configurar**.
- Em Recursos do aplicativo , clique em + Adicionar recurso para cada recurso que o agente usa e defina a permissão.
Consulte Adicionar recursos a um aplicativo Databricks para a lista completa de recursos compatíveis e capturas de tela.
-
Declare cada recurso que o agente utiliza na lista
resourcesem seu aplicativo emdatabricks.yml. O exemplo abaixo mostra um agente que utiliza um experimento MLflow, um endpoint de serviço, um Genie Agent, um SQL warehouse, um índice de pesquisa de AI, uma função do Unity Catalog e uma instância do Lakebase. Cada recursonameé referenciado deconfig.envpor meio devalue_frompara que o agente receba o identificador resolvido em Runtime.YAMLbundle:
name: my_agent
resources:
apps:
my_agent:
name: 'my-agent'
description: 'Custom agent deployed on Databricks Apps'
source_code_path: ./
config:
command: ['uv', 'run', 'start-app']
env:
- name: MLFLOW_EXPERIMENT_ID
value_from: 'experiment'
- name: LAKEBASE_INSTANCE_NAME
value_from: 'database'
resources:
- name: 'experiment'
experiment:
experiment_id: '<experiment-id>'
permission: 'CAN_EDIT'
- name: 'llm'
serving_endpoint:
name: 'databricks-claude-sonnet-4-5'
permission: 'CAN_QUERY'
- name: 'sales-genie'
genie_space:
space_id: '<genie-space-id>'
permission: 'CAN_RUN'
- name: 'warehouse'
sql_warehouse:
id: '<warehouse-id>'
permission: 'CAN_USE'
- name: 'docs-index'
uc_securable:
securable_full_name: 'main.docs.chunks_index'
securable_type: 'TABLE'
permission: 'SELECT'
- name: 'lookup-function'
uc_securable:
securable_full_name: 'main.tools.order_lookup'
securable_type: 'FUNCTION'
permission: 'EXECUTE'
- name: 'database'
database:
instance_name: '<lakebase-instance-name>'
database_name: 'databricks_postgres'
permission: 'CAN_CONNECT_AND_CREATE'
targets:
dev:
mode: development
default: true
Cada valor de value_from em config.env deve corresponder a um campo name na lista resources. Incompatibilidades fazem com que a variável de ambiente seja resolvida para None no aplicativo implantado.
-
Implante e comece o pacote:
Bashdatabricks bundle validate
databricks bundle deploy
databricks bundle run my_agentbundle deployfaz upload da fonte e configura os recursos.bundle runinicia ou reinicia o aplicativo com a fonte mais recente. O argumento parabundle runé a key YAML emresources.apps(aquimy_agent), não o camponamedo aplicativo implantado.
Para o esquema completo de cada subtipo de recurso, consulte app.recursos.
A tabela a seguir lista as permissões mínimas usadas nos exemplos acima e o valor equivalente dos Pacotes de Automação Declarativa para cada tipo de recurso:
Tipo de recurso | Permissão de UI do Workspace | recurso e permissão do Declarative Automation Bundles |
|---|---|---|
SQL Warehouse |
|
|
Modelo de ponto de extremidade de serviço |
|
|
Função do Unity Catalog |
|
|
Genie Agent |
|
|
Índice de Pesquisa de AI |
|
|
Tabela do Unity Catalog |
|
|
Conexão do Unity Catalog |
|
|
Volume do Unity Catalog |
|
|
Lakebase (provisionado) |
|
|
Lakebase (autoscale) |
|
|
Siga o princípio do menor privilégio. Conceda ao Service Principal apenas as permissões de que o agente precisa e use um Service Principal dedicado por aplicativo. Para a lista completa, consulte Melhores práticas de segurança.
Autorização do usuário
Visualização
A autorização do usuário está em Prévia Pública. O administrador do seu workspace deve habilitá-lo antes de usar a autorização de usuário.
A autorização do usuário permite que um agente aja com a identidade do usuário que faz a solicitação. Isso fornece:
- Acesso por usuário a dados confidenciais
- Controles de dados refinados impostos pelo Unity Catalog
- Trilhas de auditoria específicas do usuário
- Aplicação automática de filtros no nível da linha e máscaras de coluna
Use a autorização do usuário quando seu agente precisar acessar recursos usando a identidade do usuário solicitante em vez do Service Principal do aplicativo.
Como funciona a autorização do usuário
Ao configurar a autorização do usuário para o agente:
- Adicionar escopos de API ao seu aplicativo : defina quais APIs do Databricks o aplicativo pode acessar em nome dos usuários. Consulte Adicionar escopos a um aplicativo.
- As credenciais do usuário têm escopo reduzido: o Databricks usa as credenciais do usuário e as restringe apenas aos escopos de API definidos.
- Encaminhamento de token : O token de escopo reduzido é disponibilizado ao seu aplicativo por meio do cabeçalho HTTP
x-forwarded-access-token. - OMLflow AgentServer armazena o token : O Agent Server armazena automaticamente este token por solicitação para acesso conveniente no código do agente.
Configure a autorização do usuário adicionando escopos na UI do Databricks Apps ao criar ou editar seu aplicativo, ou programaticamente usando a API. Consulte Adicionar escopos a um aplicativo para obter instruções detalhadas.
Agentes com autorização de usuário podem acessar os seguintes recursos da Databricks:
- SQL Warehouse
- Genie Agent
- Arquivos e diretórios
- Endpoint do serviço de modelos
- Índice de Pesquisa de AI
- Conexões do Unity Catalog
- Tabelas do Unity Catalog
Implementar autorização de usuário
Para implementar a autorização do usuário, você deve adicionar escopos de autorização ao seu aplicativo. Os escopos restringem o que o aplicativo pode fazer em nome do usuário. Para obter a lista de escopos disponíveis e a semântica do escopo, consulte Segurança baseada em escopo e escalonamento de privilégios.
- Workspace UI
- Declarative Automation Bundles
- Na IU do Databricks, vá para as configurações de Autorização do seu aplicativo.
- Em Autorização do usuário , clique em + Adicionar escopo e selecione os escopos que o aplicativo precisa para acessar recursos em nome do usuário.
- Salve as alterações e reinicie o aplicativo.
-
Declare escopos em
user_api_scopesno recurso do aplicativo emdatabricks.yml:YAMLresources:
apps:
my_agent:
name: 'my-agent'
source_code_path: ./
user_api_scopes:
- sql
- genie
- model-serving
resources:
- name: 'experiment'
experiment:
experiment_id: '<experiment-id>'
permission: 'CAN_EDIT' -
Reimplantar o pacote e reiniciar o aplicativo:
Bashdatabricks bundle deploy
databricks bundle run my_agent
Após ativar a autorização do usuário em um Workspace pela primeira vez, você deve reiniciar os aplicativos existentes antes que eles possam usar os escopos. Consulte Adicionar escopos a um aplicativo.
Para configurar a autorização do usuário em seu código de agente, recupere o cabeçalho desta solicitação do AgentServer e construa um cliente de workspace com essas credenciais.
-
No seu código de agente, importe a utilidade de autenticação:
Se estiver usando um dos padrões fornecidos em databricks/app-templates, importe a utilidade fornecida:
Pythonfrom databricks_app.utils import get_user_workspace_clientCaso contrário, importe das utilidades do Servidor de Agentes:
Pythonfrom agent_server.utils import get_user_workspace_clientA função
get_user_workspace_client()usa o Agent Server para capturar o cabeçalhox-forwarded-access-tokene constrói um cliente de workspace com essas credenciais de usuário, gerenciando a autenticação entre o usuário, o aplicativo e o servidor do agente. -
Inicialize o cliente do Workspace no momento da query, não durante a Startup do aplicativo:
Chame get_user_workspace_client() dentro dos manipuladores invoke e stream, não em __init__ ou na Startup do aplicativo. Credenciais de usuário estão disponíveis apenas no momento da query quando um usuário faz uma solicitação. A inicialização durante o startup do aplicativo falhará porque nenhum contexto de usuário existe ainda.
# In your agent code (inside invoke or stream handler)
user_client = get_user_workspace_client()
# Use user_client to access Databricks resources with user permissions
response = user_client.serving_endpoints.query(name="my-endpoint", inputs=inputs)
Para um guia completo sobre como adicionar escopos e entender a segurança baseada em escopo, consulte Segurança baseada em escopo e escalonamento de privilégios. Solicite apenas os escopos mínimos de que seu agente precisa e registre cada ação executada em nome de um usuário; consulte Melhores práticas para autorização do usuário.
Verificar autorização do usuário
Depois de adicionar escopos e chamar get_user_workspace_client(), confirme se o agente é executado como o chamador e não como o service principal do Databricks do aplicativo. Se o token encaminhado estiver faltando, get_user_workspace_client() retorna ao service principal do Databricks sem levantar uma exceção, para que o agente possa retornar uma resposta de aparência normal enquanto ainda age como o aplicativo. Para verificar, adicione uma ferramenta whoami e a invoque. Se ele retornar o nome de usuário, a autorização do usuário estará funcionando.
current_user.me() É coberto pelo escopo iam.current-user:read default, então você não precisa adicionar nenhum escopo para este teste.
from agents import Agent, function_tool
from agent_server.utils import get_user_workspace_client
@function_tool
def whoami() -> str:
"""Returns the identity of the current user."""
user_wc = get_user_workspace_client()
return user_wc.current_user.me().user_name
agent = Agent(
name="my-agent",
instructions=(
"When the user asks who they are, call the whoami tool "
"and return the raw result."
),
model="databricks-claude-sonnet-4-6",
tools=[whoami],
)
Reimplante o agente. Consulte Crie um agente de AI e implante-o no Databricks Apps.
- Workspace UI
- Python
O teste da interface do usuário do Workspace é a verificação de sanidade mais rápida e não requer tokens OAuth.
- As mudanças de escopo entram em vigor imediatamente, mas os caches internos podem levar até 5 minutos para refresh — espere esse tempo antes de testar (não é necessário reiniciar o aplicativo). Sempre limpe os cookies do seu navegador para o URL do aplicativo (veja o dropdown abaixo para os passos), caso contrário, a sessão reutiliza os tokens emitidos antes da mudança de escopo.
- Confirme se você tem
CAN USEpermissão no aplicativo. Consulte Configure permissões para um aplicativo Databricks. - Abra a URL do aplicativo em um navegador. Na primeira visita, aceite o prompt de consentimento para os escopos solicitados.
- No chat, pergunte
Who am I?e confirme se o agente retorna seu nome de usuário (por exemplo,you@your-company.com).
Limpar cookies no Chrome
- Abrir DevTools: pressione F12 , ou Cmd+Option+I no macOS, ou Ctrl+Shift+I no Windows ou Linux.
- Abra a tab Aplicativo .
- Em **Armazenamento** > **Cookies**, selecione a URL do seu aplicativo.
- Clique com o botão direito em cada cookie e escolha **Excluir**.

Use um perfil da CLI ou credenciais de Service Principal do Databricks para invocar o agente. Consulte Query um agente implantado no Databricks para opções de query e Conectar a um aplicativo API do Databricks usando autenticação de token para saber como gerar tokens OAuth.
-
As alterações de escopo entram em vigor imediatamente, mas os caches internos podem levar até 5 minutos para serem refresh, então espere antes de testar (nenhum reinício de aplicativo é necessário).
-
Invoque o agente como você:
Pythonfrom databricks.sdk import WorkspaceClient
from databricks_openai import DatabricksOpenAI
app_name = "<your-app-name>"
prompt = [{"role": "user", "content": "Call the whoami tool and return only the raw result."}]
w = WorkspaceClient(profile="<your-profile>")
client = DatabricksOpenAI(workspace_client=w)
response = client.responses.create(model=f"apps/{app_name}", input=prompt)
print(response.output_text)A saída deve ser seu nome de usuário — por exemplo,
you@your-company.com.
Se a ferramenta retornar um UUID em vez de um nome de usuário, o cabeçalho x-forwarded-access-token não está alcançando a ferramenta e o agente recorreu ao Service Principal do Databricks do aplicativo (o UUID é o ID do cliente do Service Principal do aplicativo). Para diagnosticar, confirme cada um dos seguintes:
- A autorização do usuário está habilitada no workspace.
- O aplicativo possui escopos configurados.
get_user_workspace_client()é chamado dentro do manipulador@invokeou@stream, não no Startup.- O código usa
get_user_workspace_client()e nãoWorkspaceClient().
Alguns pontos a serem observados:
- **Remova a
whoamiferramenta antes da produção.** É apenas para diagnóstico e expõe a identidade do usuário a qualquer pessoa que possa invocar o agente. - Teste com um segundo usuário. Uma verificação de usuário único confirma que o token é encaminhado; um segundo chamador confirma que cada solicitação obtém sua própria identidade em vez de um fallback compartilhado.
- Nunca log o token encaminhado. Consulte Melhores práticas para autorização de usuário.
- Para verificar um escopo específico , substitua
current_user.me()por uma chamada que exige esse escopo. Por exemplo, uma instruçãoSELECT current_user()contra um warehouse exercita o escoposqlde ponta a ponta.
Autenticar em servidores MCP do Databricks
Servidores MCP gerenciados da Databricks expõem índices de Pesquisa de AI e funções do Unity Catalog como ferramentas por meio de URLs no formato https://<workspace>/api/2.0/mcp/ai-search/<catalog>/<schema> e https://<workspace>/api/2.0/mcp/functions/<catalog>/<schema>. O prefixo de URL /api/2.0/mcp/vector-search/ herdado continua a funcionar para compatibilidade com versões anteriores. Para a lista de servidores disponíveis e seus padrões de URL, consulte servidores MCP gerenciados da Databricks.
Para autenticar, conceda o Service Principal do agente (ou ao usuário, se estiver usando autorização de usuário) acesso a cada recurso downstream nesses esquemas.
Por exemplo, se seu agente usar os seguintes URLs de servidor MCP:
https://<your-workspace>/api/2.0/mcp/ai-search/prod/customer_supporthttps://<your-workspace>/api/2.0/mcp/ai-search/prod/billinghttps://<your-workspace>/api/2.0/mcp/functions/prod/billing
É necessário conceder acesso a cada índice de pesquisa de AI em prod.customer_support e prod.billing, e a cada função do Unity Catalog em prod.billing.
- Workspace UI
- Declarative Automation Bundles
Adicione cada índice e função como um recurso em Recursos do aplicativo . Siga os mesmos passos que em Conceder permissões a outros recursos do Databricks.
-
Adicione uma entrada
uc_securablepor índice e por função na listaresourcesdo seu aplicativo:YAMLresources:
apps:
my_agent:
resources:
- name: 'support-index'
uc_securable:
securable_full_name: 'prod.customer_support.tickets_index'
securable_type: 'TABLE'
permission: 'SELECT'
- name: 'billing-index'
uc_securable:
securable_full_name: 'prod.billing.invoices_index'
securable_type: 'TABLE'
permission: 'SELECT'
- name: 'refund-function'
uc_securable:
securable_full_name: 'prod.billing.process_refund'
securable_type: 'FUNCTION'
permission: 'EXECUTE' -
Reimplante o pacote:
Bashdatabricks bundle deploy
databricks bundle run my_agent
Servidores MCP personalizados hospedados como seus próprios aplicativos Databricks (nomes de aplicativos prefixados com mcp-) ainda não são suportados como recursos de pacote. Conceda o service principal do agente Can Use no aplicativo do servidor MCP manualmente com databricks apps update-permissions. Consulte a habilidade custom-mcp-server no repository de padrões do agente.