View a markdown version of this page

일반적인 정책 패턴 - Amazon Bedrock AgentCore

일반적인 정책 패턴

이 예제에서는 자주 사용되는 Cedar 정책 패턴을 보여줍니다. 패턴은 OAuth 및 IAM 인증 모두에서 작동합니다. AgentCore Gateway 구성에 적합한 보안 주체 유형을 선택합니다. 보안 주체 속성에 대한 자세한 내용은 보안 주체 속성을 참조하세요.

이러한 패턴은 인증 유형에 관계없이 적용됩니다.

비상 종료

전체 게이트웨이에서 모든 도구 호출을 비활성화합니다.

forbid( principal, action, resource );

사용 사례: 긴급 종료, 유지 관리 모드 또는 인시던트 대응.

효과: forbid-wins 의미 체계로 인해 모든 허용 정책을 재정의합니다.

특정 도구 비활성화

다른 도구를 계속 작동하면서 특정 도구를 비활성화합니다.

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

사용 사례: 다른 기능에 영향을 주지 않고 문제가 있는 도구를 일시적으로 비활성화합니다.

사용자 액세스 차단

특정 사용자 또는 계정이 작업을 수행하지 못하도록 합니다.

OAuth: 특정 사용자 차단

사용자 이름 태그를 일치시켜 사용자를 차단합니다.

forbid( principal is AgentCore::OAuthUser, action, resource ) when { principal.hasTag("username") && principal.getTag("username") == "suspended-user" };

사용 사례: 손상되거나 일시 중지된 사용자 계정에 대한 액세스를 즉시 취소합니다.

IAM: 특정 계정 차단

특정 AWS 계정에서 호출자를 차단합니다.

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

사용 사례: 테스트 또는 승인되지 않은 계정이 프로덕션 도구에 액세스하는 것을 차단합니다. 패턴은 해당 계정 ID가 포함된 모든 ARN 형식(수임된 역할, IAM 사용자 또는 IAM 역할)과 :444455556666: 일치합니다.

역할 기반 액세스 제어

역할에 따라 액세스를 제한합니다. OAuth는 역할 태그를 사용합니다. IAM은 역할 ARN 패턴을 사용합니다.

OAuth: 역할 태그 사용

특정 역할을 가진 사용자에게만 액세스를 허용합니다.

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") };

사용 사례: 관리자 또는 관리자 역할이 있는 사용자에 대해서만 관리 작업을 허용합니다.

IAM: IAM 역할 ARNs 사용

특정 IAM 역할을 사용하는 호출자에게만 액세스를 허용합니다. 정확한 principal == 일치 또는 principal.id like 패턴 일치를 사용할 수 있습니다.

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

사용 사례: AdminRole IAM 역할을 수임하는 호출자에 대해서만 관리 작업을 허용합니다. 수임된 역할의 Cedar 엔터티 ID는 형식을 사용합니다arn:aws:sts::<account>:assumed-role/<role-name>.

패턴 일치를 사용한 변형:

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

데이터 유형 작업

Cedar는 조건에서 다양한 데이터 형식을 지원합니다. 이 예제에서는 OAuth 보안 주체(AgentCore::OAuthUser)를 사용합니다. IAM 인증 게이트웨이의 경우 AgentCore::IamEntity 대신를 사용합니다. 입력 검증 로직은 동일하게 유지됩니다.

정수(긴)

// 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 };

문자열

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

목록(Sets)

// 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) };

선택적 필드 확인

// 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 };