O problema: escopo de autorização que se expande silenciosamente
Quem está construindo sistemas de IA com múltiplos agentes precisa lidar com um risco pouco discutido: à medida que agentes delegam tarefas entre si em cadeia, o escopo de autorização pode se expandir silenciosamente — mesmo quando há políticas de controle de acesso baseado em papel (RBAC) em vigor. Um agente pode acabar agindo além do que o usuário humano que iniciou a cadeia realmente autorizou.
O OWASP Top 10 para Aplicações Agênticas classifica esse risco como ASI03: Abuso de Identidade e Privilégio. Para endereçar esse problema de forma prática, a AWS publicou uma implementação de referência que usa um modelo de três camadas de políticas construído com Cedar, linguagem open source de políticas de autorização, implantado na AWS.
Visão geral da implementação de referência
A implementação usa OAuth 2.0 para autenticação e Cedar para autorização. Um provedor de identidade confiável autentica o usuário originador, e as políticas Cedar aplicam a autorização em três camadas usando as claims verificadas do token.
Para aplicar a autorização em cada salto da cadeia de delegação, a solução utiliza duas funções AWS Lambda em sequência:
- Uma função adaptadora do Protocolo de Contexto de Modelo (MCP) normaliza as requisições de entrada e assina criptograficamente o contexto do usuário originador, impedindo adulterações downstream.
- Uma função avaliadora Cedar executa as três camadas de política de forma sequencial, parando na primeira negação.
As três camadas do modelo de avaliação Cedar são:
- Camada 1 (Agente → Ferramenta): verifica se o agente invocador tem pontuação de confiança suficiente (escala de 1 a 5), pertence ao namespace correto e está no estágio de ciclo de vida de produção.
- Camada 2 (Agente → Agente): verifica se o número de saltos de delegação está dentro do limite máximo de cinco e se as tarefas solicitadas são um subconjunto das capacidades registradas do agente de destino.
- Camada 3 (Autorização do usuário originador): verifica se o humano que iniciou a cadeia tem o papel exigido (por exemplo, admin), completou autenticação multifator (MFA) e está dentro da profundidade de delegação permitida.
Arquitetura: autenticação antes da autorização
O Cedar avalia a autorização, mas não estabelece identidade. Antes que as políticas possam verificar atributos como context.originating_user.role ou context.originating_user.mfa_verified, uma camada de autenticação confiável precisa estabelecer a identidade do usuário e produzir claims verificáveis.

O fluxo de autenticação (passos 1 a 3) funciona da seguinte forma: o usuário originador se autentica em um provedor de identidade compatível com OIDC — na implementação de referência, o Amazon Cognito com MFA via TOTP. O provedor emite um Token Web JSON (JWT) assinado contendo claims como sub, role, amr e session_id. O usuário passa o JWT e a requisição de tarefa ao agente de IA (cliente MCP), que carrega o contexto do usuário originador no envelope _meta do MCP.
O pipeline de autorização (passos 4 a 10) segue esta sequência:
- O agente envia a requisição MCP ao AWS WAF, que aplica filtragem com regras de proteção contra injeção SQL, limitação de taxa e restrições de tamanho de corpo.
- O Amazon API Gateway (com autorizador Cognito) verifica a assinatura do JWT e rejeita tokens inválidos ou expirados.
- Requisições válidas chegam à função Lambda adaptadora do MCP, que aplica filtragem de conteúdo com Amazon Bedrock Guardrails.
- O adaptador extrai as claims verificadas do token e as mapeia para atributos de contexto Cedar, calcula uma assinatura HMAC-SHA256 sobre o contexto do usuário usando uma chave do AWS Secrets Manager e invoca a função Lambda avaliadora Cedar.
- O avaliador verifica a assinatura HMAC-SHA256, recupera as políticas L2 e L3 do Amazon Verified Permissions e avalia as três camadas, parando na primeira negação.
- O avaliador emite um evento de auditoria no formato Open Cybersecurity Schema Framework (OCSF) 99001 para o Amazon CloudWatch Logs. Falhas de emissão recaem para uma fila de mensagens mortas (DLQ) no Amazon Simple Queue Service (Amazon SQS).
- Dashboards e alarmes do Amazon CloudWatch monitoram latência, taxas de negação e profundidade da DLQ. As notificações de alarme são roteadas pelo Amazon Simple Notification Service (Amazon SNS).
Integridade do contexto ao longo dos saltos de delegação
Dois mecanismos trabalham juntos para proteger a identidade ao longo dos saltos:
- HMAC-SHA256 garante integridade e autenticidade. Todo avaliador downstream verifica essa assinatura antes de confiar no contexto.
- OAuth 2.0 Token Exchange (RFC 8693) define o escopo de delegação usando o padrão on-behalf-of (OBO). Quando o orquestrador delega a um agente downstream, ele troca o token original por um token OBO com escopo reduzido, registrando quem está agindo em nome de quem e com qual autoridade.
O OAuth rastreia quem age em nome de quem e com qual escopo. O HMAC verifica que o contexto não foi adulterado e veio de uma fonte confiável. Para implantações corporativas, a recomendação é usar os dois mecanismos em conjunto.
Definindo o esquema Cedar e as políticas
O esquema define dois tipos de entidade (Agent e Tool) e duas ações (invoke_tool e delegate_task) no namespace AgentAuthz. Importante: não existe entidade User. A identidade do usuário originador é carregada no registro de contexto passado junto a cada requisição de autorização.
{
"AgentAuthz": {
"entityTypes": {
"Agent": {
"shape": {
"type": "Record",
"attributes": {
"trust_level": { "type": "Long", "required": true },
"namespace": { "type": "String", "required": true },
"registered_capabilities": {
"type": "Set",
"element": { "type": "String" },
"required": true
},
"lifecycle_stage": { "type": "String", "required": true }
}
}
},
"Tool": {
"shape": {
"type": "Record",
"attributes": {
"namespace": { "type": "String", "required": true },
"risk_level": { "type": "String", "required": true }
}
}
}
},
"actions": {
"invoke_tool": {
"appliesTo": {
"principalTypes": ["Agent"],
"resourceTypes": ["Tool"]
}
},
"delegate_task": {
"appliesTo": {
"principalTypes": ["Agent"],
"resourceTypes": ["Agent"]
}
}
}
}
}
Topologia de agentes e ferramentas
A implementação de referência registra três agentes: orchestrator (nível de confiança 5, namespace orchestration, capacidades: delegate_task e route_request), finance-agent (nível 3, namespace payments, capacidades: process_payment e refund) e data-bot (nível 4, namespace data, capacidades: query_records e delete_records). As ferramentas registradas são process_payment (risco médio), delete_records (risco alto) e query_records (risco baixo).
Políticas das três camadas
Camada 1 (agente → ferramenta): permite que o finance-agent invoque a ferramenta process_payment apenas quando o nível de confiança for pelo menos 3, o namespace for payments e o estágio de ciclo de vida for production.
// L1-001: Finance agent can invoke payment tools
permit(
principal == AgentAuthz::Agent::"finance-agent",
action == AgentAuthz::Action::"invoke_tool",
resource == AgentAuthz::Tool::"process_payment"
)
when {
principal.trust_level >= 3 &&
principal.namespace == "payments" &&
principal.lifecycle_stage == "production"
};
Camada 2 (agente → agente): o orquestrador delega tarefas ao data-bot apenas quando a cadeia tem no máximo três saltos e as capacidades solicitadas são subconjunto das capacidades registradas do data-bot. Uma política forbid separada (L2-004) impõe um limite absoluto de cinco saltos para todo o sistema.
// L2-002: Orchestrator can delegate to data agent
permit(
principal == AgentAuthz::Agent::"orchestrator",
action == AgentAuthz::Action::"delegate_task",
resource == AgentAuthz::Agent::"data-bot"
)
when {
context.delegation_depth <= 3 &&
context.target_capabilities.containsAll(context.requested_capabilities)
};
Camada 3 (autorização do usuário originador): o data-bot invoca a ferramenta delete_records apenas quando o usuário originador tem papel admin, MFA verificado e a cadeia tem no máximo dois saltos. Sem essa camada, um agente com as capacidades certas poderia invocar ferramentas destrutivas independentemente de quem iniciou a requisição.
// L3-001: High-risk tool (delete_records) requires admin + MFA
permit(
principal == AgentAuthz::Agent::"data-bot",
action == AgentAuthz::Action::"invoke_tool",
resource == AgentAuthz::Tool::"delete_records"
)
when {
context.originating_user.role == "admin" &&
context.originating_user.mfa_verified == true &&
context.delegation_depth <= 2
};
Implantação com AWS CDK
Antes de começar, clone o repositório:
git clone https://github.com/aws-samples/sample-cedar-agentic-ai-authorization.git
cd sample-cedar-agentic-ai-authorization
Os pré-requisitos são: conta AWS com o AWS Cloud Development Kit (AWS CDK) inicializado na região alvo, Python 3.12 ou superior, Node.js 20 ou superior, CLI do AWS CDK (npm install -g aws-cdk) e credenciais AWS com permissões de AWS Identity and Access Management (IAM) com escopo para Lambda, API Gateway, Verified Permissions, Secrets Manager, Amazon Virtual Private Cloud (Amazon VPC) e CloudWatch.
A implementação implanta cinco stacks do CloudFormation: KmsStack, VerifiedPermissionsStack, LambdaStack, SecurityLakeStack e MonitoringStack. Os comandos de implantação seguem a ordem de dependência:
cdk deploy KmsStack -c account_id=YOUR_ACCOUNT_ID -c guardrail_id=YOUR_GUARDRAIL_ID
cdk deploy VerifiedPermissionsStack -c account_id=YOUR_ACCOUNT_ID -c guardrail_id=YOUR_GUARDRAIL_ID
cdk deploy LambdaStack -c account_id=YOUR_ACCOUNT_ID -c guardrail_id=YOUR_GUARDRAIL_ID
cdk deploy SecurityLakeStack -c account_id=YOUR_ACCOUNT_ID -c guardrail_id=YOUR_GUARDRAIL_ID
cdk deploy MonitoringStack -c account_id=YOUR_ACCOUNT_ID -c guardrail_id=YOUR_GUARDRAIL_ID
Cenários de teste
Três cenários de ponta a ponta validam o modelo de avaliação:
- Cenário A — Aplicação da Camada 3: um usuário com papel support (sem MFA) solicita exclusão de registros via
orchestratoredata-bot. L1 e L2 permitem, mas L3 nega porque o papel é support e o MFA não está verificado. Resultado geral: NEGADO. - Cenário B — Requisição admin autorizada: um usuário admin com MFA solicita a mesma operação. As três camadas permitem. Resultado geral: PERMITIDO.
- Cenário C — Limite de profundidade de delegação: um admin com MFA solicita a mesma operação, mas a cadeia tem seis saltos. L1 permite, L2 nega (seis saltos excedem o limite de cinco). L3 nem é avaliada. Resultado geral: NEGADO.
Alinhamento com os princípios de segurança para IA agêntica
O Escritório do CISO da AWS publicou os quatro princípios de segurança para sistemas de IA agêntica. A solução mapeia diretamente para cada um deles: testes baseados em propriedades com Hypothesis para fuzzing de entradas adversariais; controles tradicionais como AWS WAF, isolamento via Amazon VPC, criptografia com AWS Key Management Service (AWS KMS) e MFA; avaliação Cedar determinística rodando fora do loop de raciocínio do agente em uma função Lambda separada; e atributos trust_level e lifecycle_stage que calibram as capacidades dos agentes com base em evidências de auditoria do Amazon CloudWatch.
Escalando para ambientes multi-conta
Para implantações corporativas, a recomendação é implantar o policy store Cedar em uma conta de segurança centralizada e usar funções IAM cross-account para que as contas de carga de trabalho chamem verifiedpermissions:IsAuthorized. As políticas de controle de serviço (SCPs) do AWS Organizations podem impedir que contas de carga de trabalho criem seus próprios policy stores.
Para implantações em produção, a implementação pode ser estendida com escalação com humano no loop para negações borderline, isolamento de políticas Cedar multi-tenant e recarga dinâmica de políticas via Amazon Simple Storage Service (Amazon S3) para desligamentos de emergência de ferramentas.
Limpeza dos recursos
cdk destroy MonitoringStack SecurityLakeStack
cdk destroy LambdaStack
cdk destroy VerifiedPermissionsStack
cdk destroy KmsStack
aws logs delete-log-group --log-group-name /cedar-evaluator/audit # if RETAIN policy
Conclusão
Sistemas de IA multi-agente precisam de fronteiras de autorização em cada salto de delegação. O modelo de três camadas Cedar com autenticação OAuth 2.0 fornece essa proteção mantendo o acesso de menor privilégio. A combinação de um provedor de identidade confiável (autenticação) com avaliação de políticas Cedar (autorização) cria uma fronteira de autorização em torno de cada invocação de ferramenta, verificando a capacidade do agente (L1), o caminho de delegação (L2) e a autoridade do usuário originador (L3). O padrão funciona com qualquer provedor de identidade compatível com OIDC e uma plataforma de computação capaz de chamar o Amazon Verified Permissions. A implementação de referência está disponível para clonagem e adaptação às necessidades de cada organização. Para mais detalhes, consulte a documentação da linguagem de políticas Cedar e o Guia do Usuário do Amazon Verified Permissions.
Fonte
Enforce least-privilege authorization in multi-agent AI chains using Cedar (https://aws.amazon.com/blogs/security/enforce-least-privilege-authorization-in-multi-agent-ai-chains-using-cedar/)
Leave a Reply