Patrones políticos comunes
Estos ejemplos muestran los patrones de políticas de Cedar que se utilizan con frecuencia. Los patrones funcionan tanto con la autenticación de OAuth como con la de IAM. Seleccione el tipo principal adecuado para la configuración de su puerta de enlace. AgentCore Para obtener más información sobre los atributos principales, consulte Atributos principales.
Estos patrones se aplican independientemente del tipo de autenticación.
Cierre de emergencia
Deshabilite todas las llamadas a las herramientas en todo el Gateway:
forbid( principal, action, resource );
Caso de uso: apagado de emergencia, modo de mantenimiento o respuesta a incidentes.
Efecto: anula todas las políticas de permisos debido a la semántica de «no ganar».
Deshabilita una herramienta específica
Deshabilita una herramienta específica mientras mantienes otras operativas:
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: deshabilite temporalmente una herramienta problemática sin afectar a otras funciones.
Bloquear el acceso de los usuarios
Impida que usuarios o cuentas específicos realicen cualquier acción:
OAuth: bloquea a un usuario específico
Bloquee a un usuario haciendo coincidir su etiqueta de nombre de usuario:
forbid( principal is AgentCore::OAuthUser, action, resource ) when { principal.hasTag("username") && principal.getTag("username") == "suspended-user" };
Caso de uso: revoque inmediatamente el acceso a una cuenta de usuario comprometida o suspendida.
IAM: bloquea una cuenta específica
Bloquear a las personas que llaman desde una cuenta específica AWS :
forbid( principal is AgentCore::IamEntity, action, resource ) when { principal.id like "*:444455556666:*" };
Caso de uso: bloquea el acceso de cuentas de prueba o no autorizadas a las herramientas de producción. El patrón
:444455556666:
coincide con cualquier formato de ARN (rol asumido, usuario de IAM o rol de IAM) que contenga ese ID de cuenta.
Role-based control de acceso
Restrinja el acceso en función de los roles. OAuth usa etiquetas de rol; IAM usa patrones de ARN de rol.
OAuth: uso de etiquetas de rol
Permita el acceso solo a usuarios con funciones 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 las operaciones administrativas solo para los usuarios con funciones de administrador o gerente.
IAM: uso de ARN de roles de IAM
Permita el acceso solo a las personas que llaman y utilizan funciones de IAM específicas. Puede utilizar la principal == coincidencia exacta o la coincidencia de principal.id like patrones:
// 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 las operaciones administrativas solo para las personas que llamen y asuman la función de AdminRole IAM. El ID de entidad de Cedar para los roles asumidos usa este formato. arn:aws:sts::<account>:assumed-role/<role-name>
Variaciones que utilizan la coincidencia de patrones:
// 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/*"
Operaciones de tipos de datos
Cedar admite varios tipos de datos en determinadas condiciones. En estos ejemplos se utilizan los principios de OAuth (). AgentCore::OAuthUser En el caso de IAM-authenticated las pasarelas, utilízala AgentCore::IamEntity en su lugar: la lógica de validación de entrada sigue siendo la misma.
Enteros (largos)
// 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 };
Cadenas
// 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) };
Comprobación de campos opcionales
// 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 };