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.
Condiciones de política
Las condiciones añaden una lógica detallada a las políticas que utilizan cláusulas when yunless:
when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 }
Tipos de condiciones
-
when { … }- La política se aplica solo si la condición es verdadera -
unless { … }- La política se aplica solo si la condición es falsa -
when guardrails { … }- La política se aplica solo si la condición afirmada en las salidas de una o más barandillas se evalúa como verdadera -
unless guardrails { … }- La política se aplica solo si la condición afirmada en las salidas de una o más barandillas se evalúa como falsa
Argumentos de herramientas
context.inputcontiene los argumentos pasados a la llamada a la herramienta:
context.input.amount < 500
Cuando un usuario llama RefundTool___process_refund con argumentos como:
{ "orderId": "12345", "amount": 450, "reason": "Defective product" }
La política puede acceder a estos valores:
-
context.input.orderId→ «12345" -
context.input.amount→ 450 -
context.input.reason→ «Producto defectuoso»
Las políticas pueden tomar decisiones basándose en parámetros específicos de uso de herramientas.
Atributos principales
Los atributos principales varían según el tipo de autenticación configurado para su AgentCore puerta de enlace.
Declaraciones de OAuth (etiquetas)
En el caso OAuth-authenticated de las pasarelas, las afirmaciones de JWT procedentes del token de OAuth se almacenan como etiquetas en la entidad. OAuthUser Ejemplo de afirmaciones de JWT:
{ "sub": "user-123", "username": "refund-agent", "scope": "refund:write admin:read", "role": "admin" }
Estas afirmaciones se convierten en etiquetas de la entidad principal. Compruebe si existe una etiqueta:
principal.hasTag("username")
Obtenga el valor de una etiqueta:
principal.getTag("username") == "refund-agent"
Coincidencia de patrones:
principal.getTag("scope") like "*refund:write*"
Atributos de la entidad de IAM
En el IAM-authenticated caso de las pasarelas, el principal tiene un id atributo que contiene el ARN de IAM de la persona que llama. Los directores de IAM no admiten etiquetas.
Formato de entidad principal
El principio de Cedar para IAM-authenticated Gateways esAgentCore::IamEntity. El principal.id atributo contiene el ARN de IAM de la persona que llama.
Para las personas que llaman y se autentican mediante una función de IAM asumida, el ID de entidad de Cedar principal.id y el ID de entidad de Cedar utilizan el formato:
arn:aws:sts::<account-id>:assumed-role/<role-name>
Por ejemplo, si la persona que llama asume el rolMyServiceRole, el identificador de entidad de Cedar es:
AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/MyServiceRole"
Este formato es estable en todas las invocaciones, por lo que puedes usarlo principal == para encontrar una coincidencia exacta de roles.
Coincidencia de patrones con similares
También puedes usar el like operador con caracteres comodín para obtener una coincidencia más amplia:
// Match any role in a specific account principal.id like "arn:aws:sts::123456789012:assumed-role/*" // Match specific AWS account (any ARN format) principal.id like "*:123456789012:*" // Match a specific IAM role name across any account principal.id like "arn:aws:sts::*:assumed-role/AdminRole"
Logical operators (Operadores lógicos)
Combine varias condiciones mediante operadores lógicos:
-
&&- Y (todas las condiciones deben cumplirse) -
||- O (al menos una condición debe ser verdadera) -
!- NO (niega una condición)
Ejemplo:
principal.hasTag("username") && // User must have username tag principal.getTag("username") == "refund-agent" && // Username must be "refund-agent" context.input.amount < 500 // Amount must be less than $500