0Pricing
AI Agents · Aula

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

  1. Defesas contra injeção de prompt
  2. Filtragem de saídas (Llama Guard, NeMo)
  3. Execução em ambiente isolado para agentes de código
  4. Controle de acesso às ferramentas
← Voltar para AI Agents