View a markdown version of this page

정책 조건 - Amazon Bedrock AgentCore

정책 조건

조건은 whenunless 절을 사용하여 정책에 세분화된 로직을 추가합니다.

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

조건 유형

  • when { …​ } - 조건이 true인 경우에만 정책이 적용됩니다.

  • unless { …​ } - 조건이 false인 경우에만 정책이 적용됩니다.

  • when guardrails { …​ } - 정책은 하나 이상의 가드레일의 출력에 어설션된 조건이 true( true)로 평가되는 경우에만 적용됩니다.

  • unless guardrails { …​ } - 정책은 하나 이상의 가드레일의 출력에 어설션된 조건이 false(거짓)로 평가되는 경우에만 적용됩니다.

도구 인수

context.input 에는 도구 호출에 전달된 인수가 포함되어 있습니다.

context.input.amount < 500

사용자가 다음과 같은 인수를 RefundTool___process_refund 사용하여를 호출하는 경우:

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

정책은 다음 값에 액세스할 수 있습니다.

  • context.input.orderId → "12345"

  • context.input.amount → 450

  • context.input.reason → "결함 제품"

정책은 특정 도구 호출 파라미터를 기반으로 결정을 내릴 수 있습니다.

보안 주체 속성

보안 주체 속성은 AgentCore Gateway에 대해 구성된 인증 유형에 따라 다릅니다.

OAuth 클레임(태그)

OAuth 인증 게이트웨이의 경우 OAuth 토큰의 JWT 클레임은 OAuthUser 엔터티에 태그로 저장됩니다. JWT 클레임의 예:

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

이러한 클레임은 보안 주체 개체의 태그가 됩니다. 태그가 존재하는지 확인합니다.

principal.hasTag("username")

태그 값 가져오기:

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

패턴 일치:

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

IAM 엔터티 속성

IAM 인증 게이트웨이의 경우 보안 주체에는 호출자의 IAM ARN이 포함된 id 속성이 있습니다. IAM 보안 주체는 태그를 지원하지 않습니다.

보안 주체 개체 형식

IAM 인증 게이트웨이의 Cedar 보안 주체는 입니다AgentCore::IamEntity. principal.id 속성에는 호출자의 IAM ARN이 포함됩니다.

수임된 IAM 역할을 통해 인증하는 호출자의 경우 principal.id 및 Cedar 엔터티 ID는 형식을 사용합니다.

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

예를 들어 호출자가 역할을 수임하는 경우 Cedar MyServiceRole엔터티 ID는 다음과 같습니다.

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

이 형식은 호출 간에 안정적이므로 정확한 역할 일치principal ==에를 사용할 수 있습니다.

와 패턴 일치 like

더 광범위한 일치를 위해 와일드카드와 함께 like 연산자를 사용할 수도 있습니다.

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

논리 연산자

논리 연산자를 사용하여 여러 조건을 결합합니다.

  • && - AND(모든 조건이 true여야 함)

  • || - OR(하나 이상의 조건이 true여야 함)

  • ! - NOT(조건 부정)

예제:

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