Padrões políticos comuns
Esses exemplos demonstram os padrões de política do Cedar usados com frequência. Os padrões funcionam com a autenticação OAuth e IAM — selecione o tipo principal apropriado para sua configuração do Gateway. AgentCore Para obter detalhes sobre os atributos principais, consulte Atributos principais.
Esses padrões se aplicam independentemente do tipo de autenticação.
Desligamento de emergência
Desative todas as chamadas de ferramentas em todo o Gateway:
forbid( principal, action, resource );
Caso de uso: desligamento de emergência, modo de manutenção ou resposta a incidentes.
Efeito: substitui todas as políticas de permissão devido à semântica de proibições.
Desativar ferramenta específica
Desative uma ferramenta específica enquanto mantém outras operacionais:
forbid( principal, action == AgentCore::Action::"RefundTool___process_refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway" );
Caso de uso: desative temporariamente uma ferramenta problemática sem afetar outras funcionalidades.
Bloquear o acesso do usuário
Impeça que usuários ou contas específicos realizem qualquer ação:
OAuth: bloquear usuário específico
Bloqueie um usuário combinando sua tag de nome de usuário:
forbid( principal is AgentCore::OAuthUser, action, resource ) when { principal.hasTag("username") && principal.getTag("username") == "suspended-user" };
Caso de uso: revogue imediatamente o acesso a uma conta de usuário comprometida ou suspensa.
IAM: bloquear uma conta específica
Bloquear chamadores de uma AWS conta específica:
forbid( principal is AgentCore::IamEntity, action, resource ) when { principal.id like "*:444455556666:*" };
Caso de uso: impedir que contas de teste ou não autorizadas acessem ferramentas de produção. O padrão
:444455556666:
corresponde a qualquer formato de ARN (função assumida, usuário do IAM ou função do IAM) contendo esse ID da conta.
Role-based controle de acesso
Restrinja o acesso com base nas funções. O OAuth usa tags de função; o IAM usa padrões de ARN de função.
OAuth: usando tags de função
Permita o acesso somente a usuários com funções específicas:
permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"AdminAPI___delete_resource", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/admin" ) when { principal.hasTag("role") && (principal.getTag("role") == "admin" || principal.getTag("role") == "manager") };
Caso de uso: permita operações administrativas somente para usuários com funções de administrador ou gerente.
IAM: usando ARNs de função do IAM
Permita o acesso somente aos chamadores usando funções específicas do IAM. Você pode usar a principal == correspondência exata ou a correspondência de principal.id like padrões:
// Exact match (recommended for single-role policies) permit( principal == AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/AdminRole", action == AgentCore::Action::"AdminAPI___delete_resource", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/admin" );
Caso de uso: permita operações administrativas somente para chamadores que assumam a AdminRole função do IAM. O ID da entidade Cedar para funções assumidas usa o formatoarn:aws:sts::<account>:assumed-role/<role-name>.
Variações usando correspondência de padrões:
// Match a specific role from any account principal.id like "arn:aws:sts::*:assumed-role/AdminRole" // Match any role in a specific account principal.id like "arn:aws:sts::123456789012:assumed-role/*"
Operações de tipo de dados
O Cedar suporta vários tipos de dados em condições. Esses exemplos usam princípios do OAuth (). AgentCore::OAuthUser Para IAM-authenticated gateways, use AgentCore::IamEntity em vez disso - a lógica de validação de entrada permanece idêntica.
Números inteiros (longos)
// Check if passenger count is exactly 2 permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"TravelAPI___search_flights", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/travel" ) when { context.input.passengers == 2 };
Strings
// Check if payment method is credit card permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"PaymentAPI___process_payment", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/payment" ) when { context.input.paymentMethod == "credit-card" };
Listas (conjuntos)
// Check if country is in allowed list permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"ShippingAPI___calculate_rate", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/shipping" ) when { ["US", "CA", "MX"].contains(context.input.country) };
Verificando campos opcionais
// Require optional field to be present permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"OrderAPI___create_order", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/order" ) when { context.input has shippingAddress };