View a markdown version of this page

Condiciones de política - Amazon Bedrock AgentCore

Condiciones de política

Las condiciones añaden una lógica detallada a las políticas que utilizan when y a las cláusulas: unless

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 solo se aplica si la condición declarada en las salidas de una o más barandillas se evalúa como verdadera

  • unless guardrails { …​ }- La política solo se aplica 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 en función de parámetros específicos de uso de herramientas.

Atributos principales

Los atributos principales difieren según el tipo de autenticación configurado para su AgentCore Gateway.

Reclamaciones de OAuth (etiquetas)

En el OAuth-authenticated caso de las pasarelas, las reclamaciones de JWT del token de OAuth se almacenan como etiquetas en la entidad. OAuthUser Ejemplos de afirmaciones de JWT:

{ "sub": "user-123", "username": "refund-agent", "scope": "refund:write admin:read", "role": "admin" }

Estas afirmaciones se convierten en etiquetas para la entidad principal. Compruebe si existe una etiqueta:

principal.hasTag("username")

Obtenga un valor de 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 las pasarelas 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 la entidad de Cedar principal.id y el ID de la entidad utilizan el siguiente formato:

arn:aws:sts::<account-id>:assumed-role/<role-name>

Por ejemplo, si la persona que llama asume la funciónMyServiceRole, el ID de la entidad de Cedar es:

AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/MyServiceRole"

Este formato es estable en todas las invocaciones, por lo que se puede utilizar principal == para hacer coincidir los roles de forma exacta.

El patrón coincide con un patrón similar

También puede utilizar el like operador con caracteres comodín para lograr una mayor coincidencia:

// 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:

  • &&- AND (todas las condiciones deben ser verdaderas)

  • ||- 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