View a markdown version of this page

Condições de políticas - Amazon Bedrock AgentCore

Condições de políticas

As condições adicionam uma lógica refinada ao uso when de políticas e cláusulas: unless

when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 }

Tipos de condição

  • when { …​ }- A política se aplica somente se a condição for verdadeira

  • unless { …​ }- A política se aplica somente se a condição for falsa

  • when guardrails { …​ }- A política se aplica somente se a condição declarada na (s) saída (s) de uma ou mais grades de proteção for avaliada como verdadeira

  • unless guardrails { …​ }- A política se aplica somente se a condição declarada na (s) saída (s) de uma ou mais grades de proteção for avaliada como falsa

Argumentos da ferramenta

context.inputcontém os argumentos passados para a chamada da ferramenta:

context.input.amount < 500

Quando um usuário liga RefundTool___process_refund com argumentos como:

{ "orderId": "12345", "amount": 450, "reason": "Defective product" }

A política pode acessar esses valores:

  • context.input.orderId→ “12345"

  • context.input.amount→ 450

  • context.input.reason→ “Produto defeituoso”

As políticas podem tomar decisões com base em parâmetros específicos de chamada de ferramentas.

Atributos principais

Os atributos principais diferem com base no tipo de autenticação configurado para seu AgentCore Gateway.

Reivindicações do OAuth (tags)

Para OAuth-authenticated gateways, as declarações JWT do token OAuth são armazenadas como tags na entidade. OAuthUser Exemplo de afirmações da JWT:

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

Essas reivindicações se tornam etiquetas na entidade principal. Verifique se existe uma tag:

principal.hasTag("username")

Obtenha um valor de tag:

principal.getTag("username") == "refund-agent"

Correspondência de padrões:

principal.getTag("scope") like "*refund:write*"

Atributos da entidade IAM

Para IAM-authenticated gateways, o principal tem um id atributo contendo o ARN do IAM do chamador. Os diretores do IAM não oferecem suporte a tags.

Formato da entidade principal

O principal do Cedar para IAM-authenticated gateways é. AgentCore::IamEntity O principal.id atributo contém o ARN do IAM do chamador.

Para a autenticação de chamadores por meio de uma função presumida do IAM, o ID da entidade principal.id e do Cedar usa o formato:

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

Por exemplo, se um chamador assumir a funçãoMyServiceRole, o ID da entidade Cedar será:

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

Esse formato é estável em todas as invocações, então você pode usá-lo principal == para a correspondência exata de funções.

Correspondência de padrões com semelhantes

Você também pode usar o like operador com curingas para uma correspondência mais ampla:

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

Operadores lógicos

Combine várias condições usando operadores lógicos:

  • &&- E (todas as condições devem ser verdadeiras)

  • ||- OU (pelo menos uma condição deve ser verdadeira)

  • !- NÃO (nega uma condição)

Exemplo:

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