View a markdown version of this page

Padrões políticos comuns - Base da Amazônia AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Padrões políticos comuns

Esses exemplos demonstram padrões de política de cedro 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ção de vitórias.

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 de uma conta de usuário comprometida ou suspensa.

IAM: bloquear uma conta específica

Bloqueie chamadores de uma AWS conta específica:

forbid( principal is AgentCore::IamEntity, action, resource ) when { principal.id like "*:444455556666:*" };

Caso de uso: impeça 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 de 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 que usam 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 assumem a AdminRole função 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 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 };