View a markdown version of this page

Patrones políticos comunes - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Patrones políticos comunes

Estos ejemplos muestran los patrones de política 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 de 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. Atributos principales

Estos patrones se aplican independientemente del tipo de autenticación.

Cierre de emergencia

Deshabilite todas las llamadas a herramientas en todo el Gateway:

forbid( principal, action, resource );

Caso práctico: apagado de emergencia, modo de mantenimiento o respuesta a un incidente.

Efecto: anula todas las políticas de permisos debido a una semántica en la que se prohíbe ganar.

Desactiva una herramienta específica

Inhabilita una herramienta específica mientras mantienes otras en funcionamiento:

forbid( principal, action == AgentCore::Action::"RefundTool___process_refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway" );

Caso práctico: deshabilita 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

Bloquea 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 práctico: revoca inmediatamente el acceso a una cuenta de usuario comprometida o suspendida.

IAM: bloquea una cuenta específica

Bloquear llamadas desde una cuenta específica AWS :

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

Caso práctico: impedir que las cuentas de prueba o no autorizadas accedan 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 práctico: permita las operaciones administrativas solo a los usuarios con funciones de administrador o administrador.

IAM: Uso de los ARN de roles de IAM

Permita el acceso solo a las personas que llamen utilizando funciones de IAM específicas. Puedes usar 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 práctico: permita las operaciones administrativas únicamente a las personas que llamen y asuman la función de AdminRole IAM. El identificador de entidad de Cedar para los roles asumidos utiliza 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 condiciones. En estos ejemplos se utilizan los principales de OAuth (). AgentCore::OAuthUser En el caso de IAM-authenticated las pasarelas, utilícela AgentCore::IamEntity en su lugar: la lógica de validación de entradas sigue siendo idéntica.

Números 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) };

Comprobando los 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 };