Amazon Bedrock AgentCore에 대한 리소스 기반 정책
Amazon Bedrock AgentCore의 리소스 기반 정책을 사용하면 Amazon Bedrock AgentCore 리소스(현재 런타임, 게이트웨이 및 메모리에 지원됨)를 호출하고 관리할 수 있는 보안 주체(AWS 계정, IAM 사용자 또는 IAM 역할)를 제어할 수 있습니다. IAM 스타일 정책을 리소스에 직접 연결하여 런타임 세션을 시작하거나, 게이트웨이를 호출하거나, 메모리에 액세스하거나, 기타 관리 및 호출 작업을 수행할 수 있는 사용자에 대한 규칙을 정의할 수 있습니다.
리소스 기반 정책은 자격 증명 기반 IAM 정책과 함께 작동하여 Amazon Bedrock AgentCore 리소스에 대한 액세스 제어를 제공합니다. 자격 증명 기반 정책은 IAM 자격 증명에 연결되고 수행할 수 있는 작업을 지정하지만 리소스 기반 정책은 리소스에 직접 연결되고 리소스에 액세스할 수 있는 사용자를 지정합니다.
지원되는 리소스
Amazon Bedrock AgentCore는 다음 리소스에 대한 리소스 기반 정책을 지원합니다.
-
에이전트 런타임 및 에이전트 엔드포인트 - 에이전트 호출 및 관리 작업에 대한 액세스 제어
-
게이트웨이 - 게이트웨이 호출 작업에 대한 액세스 제어
-
메모리 - 메모리 작업에 대한 액세스 제어
리소스 기반 정책 작동 방식
자격 증명 기반 정책과 리소스 기반 정책
| 속성 | ID 기반 정책 | 리소스 기반 정책 |
|---|---|---|
|
연결 |
IAM 사용자, 역할 또는 그룹에 연결됨 |
Amazon Bedrock AgentCore 리소스에 직접 연결 |
|
관리 |
AWS IAM을 통해 관리됨 |
Amazon Bedrock AgentCore APIs 통해 관리됨 |
|
를 지정합니다. |
작업 및 리소스(원칙은 암시적임) |
보안 주체, 작업 및 조건(리소스는 암시적임) |
|
사용 사례 |
자격 증명이 수행할 수 있는 작업 정의 |
리소스에 액세스할 수 있는 사용자 정의 |
정책 평가
Amazon Bedrock AgentCore 리소스에 대한 요청이 이루어지면는 자격 증명 기반 정책과 리소스 기반 정책을 모두 AWS 평가합니다. 다음 표는 다양한 정책 조합이 액세스에 미치는 영향을 보여줍니다.
| IAM 정책 | 리소스 정책 | 결과 |
|---|---|---|
|
액세스 권한을 부여합니다. |
적용 안 됨 |
허용 |
|
액세스 권한을 부여합니다. |
액세스 권한을 부여합니다. |
허용 |
|
액세스 권한을 부여합니다. |
액세스 거부 |
거부됨 |
|
적용 안 됨 |
적용 안 됨 |
거부됨 |
|
적용 안 됨 |
액세스 권한을 부여합니다. |
허용 |
|
적용 안 됨 |
액세스 거부 |
거부됨 |
|
액세스 거부 |
적용 안 됨 |
거부됨 |
|
액세스 거부 |
액세스 허용 |
거부됨 |
|
액세스 거부 |
액세스 거부 |
거부됨 |
주요 원칙:
-
명시적 거부 항상 성공: 어떤 정책이 작업을 명시적으로 거부하면 다른 정책에 관계없이 액세스가 거부됩니다.
-
정책 중 하나가를 허용할 수 있음: 자격 증명 기반 또는 리소스 기반 정책이 작업을 허용하는 경우(정책이 작업을 거부하지 않는 경우) 액세스 권한이 부여됩니다.
-
기본 거부: 작업을 명시적으로 허용하는 정책이 없는 경우 액세스가 거부됩니다.
에이전트 런타임 및 엔드포인트에 대한 계층적 권한 부여
에이전트 엔드포인트는 에이전트 런타임의 특정 버전에 대한 주소 지정 가능한 액세스 포인트입니다. 각 엔드포인트는 런타임 구성의 특정 버전을 가리키며 DEFAULT 엔드포인트는 자동으로 최신 버전으로 라우팅됩니다. InvokeAgentRuntime 및와 같은 런타임 API 작업을 승인할 때 InvokeAgentRuntimeCommand는 호출 중인 에이전트 런타임 및 에이전트 엔드포인트 모두에 대한 자격 증명 기반 정책 및 리소스 기반 정책을 모두 AWS 평가합니다.
요청을 승인하려면 다음 조건을 충족해야 합니다.
-
호출 보안 주체에 연결된 자격 증명 기반 정책은 에이전트 런타임 및 에이전트 엔드포인트 리소스 모두에서 작업을 허용해야 합니다.
-
에이전트 런타임의 리소스 기반 정책은 작업을 허용해야 합니다(정책이 있는 경우).
-
에이전트 엔드포인트의 리소스 기반 정책은 작업을 허용해야 합니다(정책이 있는 경우).
중요
보안 주체에 교차 계정 액세스 권한을 제공하려면 에이전트 런타임과 에이전트 엔드포인트 모두에 대한 액세스 권한을 부여하는 리소스 기반 정책을 생성해야 합니다. 리소스가 액세스를 거부하거나 명시적 허용 문이 없는 경우 요청이 거부됩니다.
예: 교차 계정 액세스 권한을 부여하려면 두 리소스 모두에 대한 정책이 필요합니다.
// Policy for Agent Runtime (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] } // Policy for Agent Endpoint (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID" } ] }
인증 유형 고려 사항
리소스 기반 정책을 작성하는 방법은 에이전트 런타임 또는 게이트웨이에 대해 구성된 인증 유형에 따라 달라집니다.
- SigV4 인증
-
Principal요소에 특정 AWS 보안 주체(IAM 사용자, 역할 또는 계정)를 사용합니다. 예:"Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}. 정책은 호출자의 IAM 권한과 함께 평가됩니다. AgentCore 게이트웨이에서만 런타임을 호출하도록 제한하는 예제는 게이트웨이에 대한 IAM(SigV4) 인바운드 호출 제한을 참조하세요. - OAuth 인증
-
정책 설명에 와일드카드 보안 주체( "Principal": "*" )를 사용해야 합니다. OAuth 토큰은 정책 평가 전에 AWS Identity Service에서 검증합니다. 등록된 ID 제공업체(IdP)의 유효한 JWT 토큰이 있는 인증된 OAuth 사용자만 리소스를 호출할 수 있습니다. 익명 또는 미인증 요청은 정책 평가 전에 거부됩니다. 조건 키를 사용하여 액세스를 제한합니다(예:
aws:SourceVpc,aws:SourceVpce).
중요
에이전트 런타임 또는 게이트웨이는 생성 시 SigV4 또는 OAuth 인증으로만 구성할 수 있으며 동시에 구성할 수는 없습니다. 즉, 단일 리소스 기반 정책은 하나의 인증 유형에만 적용됩니다.
정책 구조
리소스 기반 정책은 다음 구조의 JSON 문서입니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementId", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": "bedrock-agentcore:ActionName", "Resource": "arn:aws:bedrock-agentcore:region:account-id:resource-type/resource-id", "Condition": { "ConditionOperator": { "ConditionKey": "ConditionValue" } } } ] }
중요
정책 문서의 Resource 필드에는 정책이 연결된 리소스의 정확한 ARN이 포함되어야 합니다. "리소스" 사용: "*"는 지원되지 않으며 검증 오류가 발생합니다.
지원되는 작업
에이전트 런타임 작업
-
bedrock-agentcore:InvokeAgentRuntime- 에이전트 런타임 호출 -
bedrock-agentcore:InvokeAgentRuntimeForUser- X-Amzn-Bedrock-AgentCore-Runtime-User-Id 헤더를 사용하여 에이전트 런타임 엔드포인트 호출 -
bedrock-agentcore:InvokeAgentRuntimeCommand- 활성 런타임 세션에서 셸 명령 실행 -
bedrock-agentcore:InvokeAgentRuntimeCommandShell- 활성 런타임 세션에서 대화형 WebSocket 셸 세션 열기 -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- WebSocket 스트림을 사용하여 에이전트 런타임 호출 -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- X-Amzn-Bedrock-AgentCore-Runtime-User-Id 헤더를 사용하여 WebSocket 스트림으로 에이전트 런타임 호출 -
bedrock-agentcore:StopRuntimeSession- 활성 런타임 세션 중지 -
bedrock-agentcore:GetAgentCard- 에이전트 카드 정보 검색
게이트웨이 작업
-
bedrock-agentcore:InvokeGateway- 게이트웨이 호출
메모리 작업
-
bedrock-agentcore:GetMemory- 메모리 리소스 검색 -
bedrock-agentcore:UpdateMemory- 메모리 리소스 업데이트 -
bedrock-agentcore:DeleteMemory- 메모리 리소스 삭제 -
bedrock-agentcore:CreateEvent- 메모리 리소스에서 이벤트 생성 -
bedrock-agentcore:GetEvent- 메모리 리소스에서 이벤트 검색 -
bedrock-agentcore:DeleteEvent- 메모리 리소스에서 이벤트 삭제 -
bedrock-agentcore:ListEvents- 메모리 리소스의 이벤트 나열 -
bedrock-agentcore:ListActors- Memory 리소스의 액터 나열 -
bedrock-agentcore:ListSessions- 메모리 리소스의 세션 나열 -
bedrock-agentcore:GetMemoryRecord- 메모리 리소스에서 메모리 레코드 가져오기 -
bedrock-agentcore:ListMemoryRecords- 메모리 리소스의 메모리 레코드 나열 -
bedrock-agentcore:RetrieveMemoryRecords- 메모리 리소스에서 메모리 레코드 검색 -
bedrock-agentcore:DeleteMemoryRecord- 메모리 리소스에서 메모리 레코드 삭제 -
bedrock-agentcore:BatchCreateMemoryRecords- 메모리 리소스에서 메모리 레코드 일괄 생성 -
bedrock-agentcore:BatchUpdateMemoryRecords- 메모리 리소스의 메모리 레코드 일괄 업데이트 -
bedrock-agentcore:BatchDeleteMemoryRecords- 메모리 리소스에서 메모리 레코드 일괄 삭제 -
bedrock-agentcore:StartMemoryExtractionJob- 메모리 리소스 내에서 추출 작업 시작 -
bedrock-agentcore:ListMemoryExtractionJobs- 메모리 리소스 내의 추출 작업 나열
조건 키
조건 키를 사용하여 정책에서 액세스 제어를 더욱 구체화할 수 있습니다. 사용 가능한 조건 키의 전체 목록은 Bedrock AgentCore 조건 키 및 AWS 전역 조건 컨텍스트 키를 참조하세요.
일반적인 사용 사례 및 예제
이 섹션에서는 일반적인 시나리오에 대한 리소스 기반 정책의 실제 예를 제공합니다. 각 예제의 Resource 필드에는 정책이 연결된 리소스의 정확한 ARN이 포함되어야 합니다. 예제 ARNs 실제 리소스 ARNs.
다른 AWS 계정에서 역할 허용
API에 다른 AWS 계정의 특정 역할에 대한 액세스 권한을 부여합니다.
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/DeveloperRole", "arn:aws:iam::123456789012:role/AdminRole" ] }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }
소스 IP 주소를 기반으로 트래픽 거부
특정 IP 주소 범위에서 들어오는 트래픽 차단:
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "198.51.100.0/24" ] } } } ] }
특정 VPC의 트래픽만 허용
특정 VPC의 요청에 대한 액세스를 제한합니다.
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
VPC 제한을 사용한 OAuth 인증
에이전트 런타임 또는 게이트웨이가 OAuth 인증으로 구성된 경우 와일드카드 보안 주체를 사용해야 합니다. 이 예제에서는 OAuth 인증 요청을 특정 VPC로 제한합니다.
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOAuthFromVPC", "Effect": "Allow", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
중요
OAuth 인증에는 와일드카드 보안 주체( "Principal": "*" )가 필요합니다. OAuth 토큰은 정책 평가 전에 AWS Identity Service에서 검증합니다. 등록된 자격 증명 공급자의 유효한 JWT 토큰이 있는 사용자만 리소스에 액세스할 수 있습니다. 익명 또는 인증되지 않은 요청은 정책 평가에 도달하기 전에 거부됩니다. 조건 키(예: aws:SourceVpc , aws:SourceVpce )를 사용하여 액세스를 추가로 제한합니다.
리소스 정책 관리
다음 방법 중 하나를 선택합니다.
예
보안 모범 사례
최소 권한 적용
사용 사례에 필요한 최소 권한만 부여합니다.
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }
혼동된 대리자 방지
AWS 서비스에 대한 액세스 권한을 부여할 때는 항상 조건 키를 사용합니다.
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:lambda:us-west-2:111122223333:function/SpecificFunction" } } } ] }
중요한 제어에 명시적 거부 사용
보안에 중요한 제한 사항에 대해 명시적 거부 문을 사용합니다.
// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptVPC", "Effect": "Deny", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-12345678" }, "Bool": { "aws:ViaAWSService": "false" } } } ] }
문제 해결
액세스 거부 오류
“액세스 거부됨” 오류가 표시되는 경우:
-
두 정책 모두 확인: 자격 증명 기반 정책과 리소스 기반 정책 모두 확인
-
명시적 거부 찾기: 모든 정책의 명시적 거부가 모든 허용을 재정의합니다.
-
보안 주체 ARN 확인: 정책의 보안 주체 ARN이 호출자와 일치하는지 확인합니다.
-
조건 확인: 모든 조건 키가 true로 평가되는지 확인
-
SCPs: 조직 서비스 제어 정책은 리소스 정책을 재정의할 수 있습니다.
정책 검증 오류
일반적인 정책 검증 오류:
-
잘못된 JSON: 정책이 유효한 JSON인지 확인
-
잘못된 ARN 형식: 모든 ARNs 올바른 형식을 따르는지 확인
-
지원되지 않는 작업: 리소스 유형에 대해 모든 작업이 지원되는지 확인
-
필수 요소 누락: 버전, 문, 효과, 보안 주체 및 작업이 존재하는지 확인