기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
메모리에 대한 정책 예제
이 페이지에서는 Amazon Bedrock AgentCore 메모리와 관련된 Cedar 정책 패턴을 제공합니다. 즉, 호출자를 자신의 액터, 자신의 네임스페이스 및 선택한 메모리 작업 세트로 격리합니다. 이러한 정책이 참조하는 메모리 작업 ID 및 context.input 필드는 메모리 작업 및 요청 속성을 참조하세요. 일반 Cedar 모델 및 광범위한 패턴 라이브러리(OAuth 범위 및 역할 확인, IAM 보안 주체 일치, forbid 및 unless입력 검증)는 Cedar 정책 이해 및 정책 예제를 참조하세요.
CreatePolicy 작업을 사용하여 게이트웨이의 정책 엔진에 각 Cedar 정책을 추가하고 Cedar 문을 정책으로 전달합니다definition. 설정 시퀀스는 메모리에 대한 세분화된 액세스 제어 설정을 참조하세요.
각 Cedar 예제에서 <target-name>를 커넥터 대상 이름으로 바꾸고를 게이트웨이 ARN<gw-arn>으로 바꿉니다.
사용자별 격리 - actorId는 JWT 주체와 같아야 합니다.
요청이 JWT sub 클레임과 actorId 동일한 경우에만 OAuth 사용자가 세션에 액세스하도록 허용합니다. 이는 메모리의 사용자별 핵심 격리 패턴입니다. 각 사용자는 자신의 액터 데이터에만 도달할 수 있습니다.
permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/actor/{actorId}/sessions/{sessionId}", resource == AgentCore::Gateway::"<gw-arn>" ) when { principal.hasTag("sub") && context has input && context.input has actorId && context.input.actorId == principal.getTag("sub") };
네임스페이스 격리 - 호출자는 자신의 네임스페이스에서만 레코드를 검색할 수 있습니다.
이 정책은 OAuth 호출자가 요청의가 토큰 클레임에 전달된 호출자의 자체 네임스페이스 경로namespacePath와 일치하는 경우에만 메모리 레코드를 검색할 수 있도록 허용합니다.
Cedar는 문자열 연결을 지원하지 않습니다. + 연산자는 정수 피연산자에만 적용되며 like 와일드카드 패턴은 문자열 리터럴이어야 합니다. 따라서 정책 내의 클레임에서 네임스페이스 값을 빌드할 수 없습니다(예: ("/actors/" + principal.getTag("sub") + "/")가 유효한 Cedar가 아님). 대신 ID 제공업체가 호출자의 전체 네임스페이스 경로가 이미 있는 클레임을 발급하고, 이를 보안 주체 태그에 매핑하고, 해당 태그namespacePath와 비교하도록 하세요. 이 예제에서 토큰은 호출자의 네임스페이스 경로(예: )가 포함된 namespace 클레임을 제공합니다/actors/<sub>/.
permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/retrieve", resource == AgentCore::Gateway::"<gw-arn>" ) when { principal.hasTag("namespace") && context has input && context.input has namespacePath && context.input.namespacePath == principal.getTag("namespace") };
작업 범위 조정 - 메모리 작업 세트만 허용
고정된 메모리 작업 목록을 부여합니다. 예를 들어 이벤트를 나열하고 레코드를 검색하는 것은 허용하지만 다른 작업은 허용하지 않습니다. 여러 메모리 작업을 로 그룹action in […]화합니다. action-id 와일드카드는 지원되지 않습니다.
permit( principal, action in [ AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/actor/{actorId}/sessions/{sessionId}", AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/retrieve" ], resource == AgentCore::Gateway::"<gw-arn>" );
메모리 데이터 영역을 직접 호출하는 주체가 아닌 게이트웨이를 통해서만 메모리에 도달할 수 있도록 하려면 메모리에 대한 직접 액세스 제한을 참조하세요.