Controle de acesso às ferramentas
As ferramentas devem verificar se o usuário (não apenas o agente) está autorizado — os agentes não são entidades principais.
Controle de acesso às ferramentas é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
As Ferramentas Não São as Entidades Principais
O modelo "chama uma ferramenta", mas a ACTION real é executada pelo seu código. O usuário — não o agente — é a entidade principal cujas permissões importam.
Autorize com base na identidade do USER, nunca apenas porque "o agente decidiu".
Authorise at the Tool Boundary
def refund_order(order_id, *, user):
order = db.get_order(order_id)
if order.customer_id != user.id and not user.is_staff:
raise PermissionError(f'User {user.id} cannot refund order {order_id}')
return stripe.refund(order.payment_id)Passe o Contexto do Usuário
Inclua o objeto do usuário em cada chamada de ferramenta:
def dispatch(tool_call, user):
args = json.loads(tool_call.function.arguments)
fn = TOOLS[tool_call.function.name]
return fn(**args, user=user)Permissões por Ferramenta
Defina quais ferramentas cada função pode usar:
ROLE_TOOLS = {
'customer': ['search_orders', 'open_ticket'],
'support': ['search_orders', 'refund_order', 'cancel_order'],
'admin': ['*']
}
visible_tools = [t for t in ALL_TOOLS if t.name in ROLE_TOOLS[user.role] or 'admin' in ROLE_TOOLS[user.role]]Definindo o Escopo do Acesso aos Dados
As ferramentas que consultam o banco de dados devem definir automaticamente o escopo pelo usuário:
def search_orders(query, user):
# NEVER let the model bypass this WHERE clause
return db.query('SELECT * FROM orders WHERE customer_id = %s AND ...', (user.id,))Audite Cada Chamada de Ferramenta
Registre: quem, o quê, quando, com quais argumentos e qual foi o resultado. Esse é o seu rastro forense quando algo dá errado:
audit_log({
'user_id': user.id,
'tool': tool_name,
'args': args,
'result_status': result.status,
'timestamp': now()
})Confirme Ações Destrutivas
Mesmo para usuários autorizados, confirme novamente operações destrutivas:
def delete_account(user_id, confirmed=False, user=None):
if not confirmed:
return {'requires_confirmation': True, 'msg': 'Confirm deletion of account.'}
db.execute('DELETE ...', (user_id,))Ferramentas com Escopo de OAuth / Token
Para agentes que atuam em nome de um usuário em serviços externos, restrinja o escopo dos tokens OAuth:
# Token only has gmail.send scope, not gmail.read
send_email = build_with_token(user_token_scoped_send)Limites das Contas de Serviço
A própria conta de serviço do agente deve ter o mínimo de permissões:
- Usuário de banco de dados somente leitura para ferramentas de análise
- Contêineres S3 por cliente
- Redes isoladas por VPC
Rate Limits Per Tool
def ratelimit(key, per_user_per_day=10):
counts = {}
def decorator(func):
def wrapper(user_id, *args, **kwargs):
counts.setdefault(user_id, 0)
if counts[user_id] >= per_user_per_day:
print(f'{key}: user {user_id} rate limited')
return None
counts[user_id] += 1
return func(user_id, *args, **kwargs)
return wrapper
return decorator
@ratelimit(key='tool:refund', per_user_per_day=2)
def refund_order(user_id, order_id):
print(f'refunding order {order_id} for user {user_id}')
return True
for i in range(3):
refund_order('user1', f'order{i}')
Interface de Permissões Visível ao Usuário
Mostre ao usuário o que o agente pode fazer em seu nome. Permita que ele revogue as permissões de cada ferramenta. Isso é essencial para a confiança.
Reautenticação para Ações de Alto Risco
Faça com que as ferramentas sensíveis exijam autenticação recente (último início de sessão < 5 minutos):
if tool.is_sensitive and user.last_auth_age_seconds > 300:
raise StaleAuthError('Please re-authenticate to perform this action.')Teste a Autorização como Código
Escreva testes que verifiquem que "o usuário A não pode reembolsar o pedido do usuário B" — nunca presuma que os controles de acesso funcionam. Eles são a principal fonte de falhas de segurança em agentes.
Princípio da Autorização
De quem as permissões são verificadas quando o agente chama uma ferramenta?
Recapitulação
O usuário é a entidade principal. Inclua a identidade do usuário em todas as ferramentas. Defina o escopo dos dados por usuário. Audite cada chamada. Confirme operações destrutivas. Teste a autorização como você testa o código.
Perguntas Frequentes
A aula “Controle de acesso às ferramentas” é grátis?
Sim — o texto completo de “Controle de acesso às ferramentas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Controle de acesso às ferramentas”?
As ferramentas devem verificar se o usuário (não apenas o agente) está autorizado — os agentes não são entidades principais. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Controle de acesso às ferramentas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Defesas contra injeção de prompt
- Filtragem de saídas (Llama Guard, NeMo)
- Execução em ambiente isolado para agentes de código
- Controle de acesso às ferramentas