View a markdown version of this page

보안 및 액세스 제어 - Amazon Bedrock AgentCore

보안 및 액세스 제어

이 하네스는 구성에 따라 연결된 나머지 AgentCore와 동일한 보안 프리미티브를 제공합니다.

  • 격리된 실행. 모든 세션은 AgentCore 런타임의 자체 Firecracker microVM에서 실행됩니다. 공유 상태 없음, 공유 파일 시스템 없음.

  • IAM 실행 역할. 이 하네스는 소유하고 있는 IAM 역할을 수임하며, Bedrock, ECR, CloudWatch 및 해당하는 AgentCore 프리미티브를 포함하도록 구성할 수 있습니다. 아래 샘플 실행 역할 정책을 참조하세요.

  • IAM 권한 모델. 하네스 APIs 하네스 리소스와 기본 AgentCore 런타임 리소스 모두에 대한 권한이 필요합니다. 예를 들어를 호출하려면 하네스 ARN에 대한 bedrock-agentcore:InvokeHarnessbedrock-agentcore:InvokeAgentRuntime 권한이 모두 InvokeHarness 필요합니다. 동일한 패턴이 컨트롤 플레인 작업에 적용됩니다. UpdateHarness 에는 bedrock-agentcore:UpdateAgentRuntime가 필요bedrock-agentcore:DeleteAgentRuntime하고 에는가 DeleteHarness 필요합니다. 전체 목록은 실행 역할 정책을 참조하세요.

  • 인바운드 OAuth 지원. JWT 구성 하네스 리소스는 호출자가 구성된 자격 증명 공급자가 발급한 유효한 JWT를 제시해야 하네스를 호출할 수 있습니다. AgentCore 자격 증명은 에이전트를 통해 최종 사용자 자격 증명을 스레드하므로 다운스트림 도구는 공유 서비스 계정 대신 범위가 지정된 사용자 자격 증명으로 APIs를 호출할 수 있습니다.

  • VPC. 내부 리소스에 대한 프라이빗 액세스를 위해 VPC에 하네스 세션을 연결합니다.

  • 게이트웨이의 정책. AgentCore Gateway를 통해 도구가 제공되는 경우 Cedar 기반 정책을 구성하여 모든 호출, 즉 어떤 도구, 어떤 조건, 어떤 인수를 호출할 수 있는지를 게이트할 수 있습니다.

참고

SigV4 및 사용자별 자격 증명. 호출자가 SigV4(AWS IAM)로 인증하면 하네스는 사용자별 자격 증명을 다운스트림 도구 호출로 전파하지 않습니다. 즉, 사용자 범위 OAuth 토큰 스토리지 및 토큰 교환on-behalf-of 같은 AgentCore Identity Token Vault의 사용자별 자격 증명 범위 지정 기능은 호출자가 OAuth 인바운드 경로를 통해 베어러 JWT로 인증하는 경우에만 사용할 수 있습니다. 다운스트림 도구에 대한 사용자별 자격 증명 범위가 필요한 사용 사례의 경우, 하네스에서 인바운드 OAuth를 구성합니다. 사용자별 자격 증명에 대한 SigV4 지원은 향후 릴리스에 계획되어 있습니다.

공동 책임 모델

이 하네스는 AgentCore 런타임을 기반으로 합니다. 보안 경계는 동일합니다. 즉, microVM 격리와 결합된 IAM 또는 JWT 인증입니다. 하네스는 호출자와 microVM 사이에 보안 계층을 추가하지 않습니다.

AWS 책임:
  • 하드웨어 수준에서 인프라 및 microVM 격리 보호

  • OS 커널 패치 적용

  • 직접 코드 배포를 위한 언어 런타임 패치

  • 네트워크 인프라 보안

  • 서비스 가용성 및 복원력

사용자의 책임:
  • 에이전트 코드 보안 및 종속성 관리

  • IAM 액세스 제어 및 리소스 정책

  • 런타임 세션에서 실행되는 명령의 보안

  • Session-to-user 매핑 적용

  • 입력 검증 및 프롬프트 주입 방지 - 모든 InvokeHarness 입력 검증 포함( 참조신뢰 경계 및 입력 검증)

  • 모델 구성 검증 - additionalParams, apiBasemodelId 필드 등( 참조모델 구성 파라미터)

  • 기술 및 지침 소스 - 기술에 사용되는 S3 버킷, Git 리포지토리 및 URLs에 신뢰할 수 있는 콘텐츠가 포함되어 있는지 확인( 참조기술 및 지침)

  • 컨테이너 이미지 업데이트(컨테이너 배포용) - 최신 보안 기본 이미지로 정기적으로 재구축

  • 네트워크 구성(보안 그룹, VPC 엔드포인트, 라우팅 테이블)

전체 AgentCore 런타임 공동 책임 모델은 AgentCore 런타임의 보안 모범 사례를 참조하세요.

신뢰 경계 및 입력 검증

모든 InvokeHarnessInvokeAgentRuntimeCommand 입력을 신뢰할 수 있습니다. IAM 또는 JWT 인증 및 권한 부여 게이트를 전달하는 모든 보안 주체는 하네스에 구성된 도구 및 기능을 포함하여 전체 microVM 세션에 액세스할 수 있습니다. 하네스는 입력을 삭제하거나, 콘텐츠 블록을 필터링하거나, 동작 제약 조건을 적용하지 않습니다.

완전히 신뢰하지 않는 최종 사용자(직원, 외부 소비자 또는 타사 통합)에게 하네스를 노출하는 경우에 전달하기 전에 애플리케이션 계층에서 메시지를 검증하고 삭제합니다InvokeHarness. 여기에는 전송하지 않으려는 콘텐츠 블록 유형 또는 모델 구성 필드 제거가 포함됩니다. 이는 Lambda, Amazon API Gateway 및 Amazon SQS와 같은 승인된 호출자의 페이로드를 수락하는 모든 서비스와 동일한 패턴입니다.

모델 구성 파라미터

model 필드는 additionalParams Bedrock, OpenAI 및 LiteLLM 구성을 InvokeHarness 허용합니다. 이러한 파라미터는 변경되지 않고 기본 모델 공급자에게 전달됩니다. 하네스는 이러한 파라미터를 검증, 필터링 또는 제한하지 않습니다.

를 설정할 수 있는 호출자는 다음을 additionalParams 수행할 수 있습니다.

  • 임의 엔드포인트로 요청 리디렉션 - LiteLLM의 aws_bedrock_runtime_endpoint 파라미터가 Bedrock 엔드포인트 URL을 재정의합니다. 호출자는 SigV4 서명 및 세션 자격 증명을 포함하여 서명된 요청을 신뢰 모델 구성에 지정된 엔드포인트로 라우팅할 수 있습니다.

  • HTTP 헤더 재정의 - OpenAI의 extra_headers 파라미터는 헤더를 포함하여 모델 공급자에 대한 아웃바운드 요청에서 HTTP Authorization 헤더를 주입하거나 재정의합니다.

  • IAM 역할 가정 시도 - LiteLLM의 aws_role_name 파라미터는 모델 공급자를 호출하기 전에 런타임에 다른 IAM 역할을 맡도록 지시합니다. 실행 역할의 sts:AssumeRole 권한에 따라 시도가 성공하거나 실패합니다.

  • 대상 모델 또는 리전 변경 - modelIdapiBase 필드는 추론을 다른 모델, 리전 또는 공급자로 완전히 리디렉션할 수 있습니다.

애플리케이션이 완전히 신뢰하지 않는 호출자에게 InvokeHarness 기능을 노출하는 경우 애플리케이션 계층에서 입력 검증을 구현하는 것이 좋습니다. 그러한 예는 다음과 같습니다.

  • 요청을 전달하기 전에 model 필드 제거 또는 허용 목록 표시

  • additionalParams, 및 apiBase의 검증 또는 제거 modelId

  • 역할 전환이 필요하지 않은 경우 sts:AssumeRole 실행 역할 거부

  • VPC 보안 그룹을 사용하여 하네스 네트워크 액세스 범위 지정

기술 및 지침

스킬은 호출 시 하네스가 Amazon S3 또는 Git에서 가져와 에이전트의 컨텍스트에 주입하는 마크다운 및 스크립트 번들입니다. 하네스는 모든 스킬 콘텐츠를 신뢰할 수 있는 입력으로 취급합니다. 에이전트에게 제공하기 전에 콘텐츠 또는 기술 소스를 검증, 삭제 또는 검사하지 않습니다.

다음과 같은 작업을 담당합니다.

  • 스킬 소스(S3 버킷, Git 리포지토리, URLs)를 신뢰하고 액세스 제어하도록 보장

  • 하네스에서 구성하기 전에 마크다운 지침 및 임베디드 스크립트를 포함한 스킬 콘텐츠 검토

  • 호출자가 임의의 S3 또는 Git 소스를 가리키기 때문에 호출당 skills 필드를 재정의할 수 있는 보안 주체 제어

InvokeHarness 통화당 스킬을 재정의할 수 있습니다. 애플리케이션이 호출자 제공 입력을에 전달하는 경우 호출InvokeHarness자는 임의의 지침 또는 스크립트가 포함된 자체 스킬 소스를 제공할 수 있습니다. 완화 조치의 예는 다음과 같습니다.

  • 호출자 제공 요청에서 skills 필드 제거 또는 무시

  • 허용된 S3 접두사 또는 Git 리포지토리 허용 목록

관찰성 및 추적 상관관계

이 하네스는 상관관계 식별자를 다운스트림 AgentCore 프리미티브(게이트웨이, 메모리, 코드 해석기, 브라우저)에 자동으로 전파하여 CloudWatch에서 통합 트레이스 보기를 활성화합니다. 이러한 식별자는 관찰성에만 사용되며 권한 부여 또는 데이터 액세스 결정에는 사용되지 않습니다.

네트워크 구성

기본적으로 하네스 세션은 퍼블릭 네트워크에서 실행됩니다. 프라이빗 리소스(데이터베이스, 내부 APIs, 프라이빗 서브넷)에 액세스하려면 VPC에 하네스를 배포합니다.

AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "VpcHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --environment '{"agentCoreRuntimeEnvironment": {"networkConfiguration": {"networkMode": "VPC", "vpcConfig": {"securityGroupIds": ["sg-0abc1234def56789a"], "subnetIds": ["subnet-0abc1234def56789a"]}}}}'
AgentCore CLI
agentcore add harness --name internal-agent \ --network-mode VPC \ --subnets subnet-0abc1234def56789a \ --security-groups sg-0abc1234def56789a agentcore deploy
중요

이 하네스는 각 세션이 시작될 때 Amazon ECR Public에서 애플리케이션 컨테이너를 가져옵니다. VPC 모드에서 실행 중인 경우 VPC가에 대한 아웃바운드 액세스를 허용해야 합니다public.ecr.aws. Amazon ECR Public은 VPC 엔드포인트를 지원하지 않으므로 VPC에는 인터넷 게이트웨이에 대한 경로가 있는 NAT 게이트웨이가 있어야 합니다. 이 연결을 사용할 수 없는 경우 이미지 가져오기 제한 시간으로 인해 세션이 시작되지 않습니다.

추가 네트워크 구성 지침은 AgentCore 런타임 구성 및 기본 제공 도구 VPC 구성을 참조하세요. PrivateLink를 통한 인바운드 API 연결은 VPC 인터페이스 엔드포인트를 참조하세요.

인바운드 OAuth

호출자가 구성된 자격 증명 공급자가 발급한 유효한 JWT를 제시하도록 요구합니다. AgentCore 자격 증명은 에이전트를 통해 최종 사용자 자격 증명을 스레드하므로 다운스트림 도구는 공유 서비스 계정 대신 범위가 지정된 사용자 자격 증명으로 APIs를 호출할 수 있습니다.

AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "OAuthHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --authorizer-configuration '{"customJWTAuthorizer": {"discoveryUrl": "https://cognito-idp.us-west-2.amazonaws.com/<POOL_ID>/.well-known/openid-configuration", "allowedClients": ["<CLIENT_ID>"]}}'

SigV4 자격 증명 대신 베어러 토큰을 사용하여를 호출합니다.

curl -X POST "https://bedrock-agentcore.us-west-2.amazonaws.com/harnesses/invoke?harnessArn=${HARNESS_ARN}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${ID_TOKEN}" \ -H "X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: $(uuidgen)" \ -d '{"messages": [{"role": "user", "content": [{"text": "Hi"}]}]}'
AgentCore CLI
agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} agentcore deploy

보유자 토큰으로를 호출합니다.

agentcore invoke --harness MyNewHarness --bearer-token "{token}" "Hello"

자격 증명 공급자의 OIDC 검색 엔드포인트에 PrivateLink를 통해서만 연결할 수 있는 경우 프라이빗 엔드포인트 플래그를 CUSTOM_JWT 권한 부여자에 추가합니다. 서비스 관리형 VPC 엔드포인트 사용:

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-vpc-id vpc-0abc1234def56789a \ --private-endpoint-subnets subnet-0abc1234def56789a,subnet-0def5678abc12349b \ --private-endpoint-ip-type IPV4 \ --private-endpoint-security-groups sg-0abc1234def56789a agentcore deploy

또는 관리형 VPC 엔드포인트 대신 기존 VPC Lattice 리소스 구성을 가리킵니다.

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-lattice-arn rcfg-0abc1234def56789a agentcore deploy
참고

프라이빗 엔드포인트 플래그는 에서만 유효합니다--authorizer-type CUSTOM_JWT. --private-endpoint-vpc-id--private-endpoint-lattice-arn는 상호 배타적입니다. 하나를 선택합니다. 에서는 --private-endpoint-subnets--private-endpoint-ip-type (IPV4 또는 IPV6)가 --private-endpoint-vpc-id모두 필요합니다.

전체 OAuth 설정 흐름은 인바운드 JWT 권한 부여자를 참조하세요.

Interactive

프로젝트 디렉터리agentcore에서 실행하고 추가를 선택한 다음, 하네스를 선택하고 고급 설정으로 이동합니다. 스페이스를 사용하여 인증(및 VPC 액세스를 위한 네트워크)을 활성화한 다음 Enter 키를 누릅니다.

  1. 권한 부여자 유형: AWS IAM(기본값) 또는 OIDC 보유자 토큰 인증을 위한 사용자 지정 JWT를 선택합니다.

    하네스 권한 부여자 유형 선택
  2. 사용자 지정 JWT에 OIDC 검색 URL을 입력합니다.

    사용자 지정 JWT 구성: 검색 URL
  3. 허용되는 대상, 허용된 클라이언트, 허용된 범위 또는 사용자 지정 클레임 등 검증할 토큰 제약 조건을 선택합니다.

    구성할 JWT 제약 조건 선택
  4. 하네스가 IdP 검색 엔드포인트에 도달하는 방법, 즉 없음(공개적으로 연결 가능), VPC Lattice 리소스 또는 관리형 VPC 엔드포인트(PrivateLink)를 선택합니다.

    IdP 검색 엔드포인트에 대한 PrivateLink 옵션
  5. 네트워크에서 VPC 모드를 선택하고 서브넷 IDs와 보안 그룹 IDs 제공합니다.

    VPC 서브넷 IDs

마법사를 확인한 다음를 실행agentcore deploy하여 적용합니다.

자세히 알아보기: AgentCore 자격 증명 · 인바운드 JWT 권한 부여자 · 아웃바운드 자격 증명

게이트웨이 정책

AgentCore Gateway를 통해 도구가 제공되는 경우 Cedar 기반 정책은 모든 호출, 즉 어떤 도구, 어떤 조건, 어떤 인수를 호출할 수 있는지를 게이트합니다.

자세히 알아보기: AgentCore 정책·일반 패턴

실행 역할 정책

하네스는 사용자가 제공하는 IAM 실행 역할을 수임합니다. 역할의 신뢰 정책은 AgentCore 서비스 보안 주체가 이를 수임하도록 허용해야 합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock-agentcore.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

호출자에게 필요한 IAM 권한

하네스 APIs 하네스 리소스와 기본 AgentCore 런타임 및 선택적 AgentCore 메모리 리소스 모두에 대한 권한이 필요합니다. 다음 표에는 각 API에 필요한 작업이 나열되어 있습니다.

API 필수 IAM 작업

InvokeHarness

bedrock-agentcore:InvokeHarness, bedrock-agentcore:InvokeAgentRuntime

InvokeAgentRuntimeCommand

bedrock-agentcore:InvokeAgentRuntimeCommand, bedrock-agentcore:InvokeAgentRuntime

CreateHarness

bedrock-agentcore:CreateHarness, bedrock-agentcore:CreateAgentRuntime, bedrock-agentcore:CreateMemory

UpdateHarness

bedrock-agentcore:UpdateHarness, bedrock-agentcore:UpdateAgentRuntime, bedrock-agentcore:UpdateMemory

DeleteHarness

bedrock-agentcore:DeleteHarness, bedrock-agentcore:DeleteAgentRuntime, bedrock-agentcore:DeleteMemory

GetHarness

bedrock-agentcore:GetHarness

ListHarnesses

bedrock-agentcore:ListHarnesses

CreateHarnessEndpoint

bedrock-agentcore:CreateHarnessEndpoint, bedrock-agentcore:CreateAgentRuntimeEndpoint

UpdateHarnessEndpoint

bedrock-agentcore:UpdateHarnessEndpoint, bedrock-agentcore:UpdateAgentRuntimeEndpoint

DeleteHarnessEndpoint

bedrock-agentcore:DeleteHarnessEndpoint, bedrock-agentcore:DeleteAgentRuntimeEndpoint

GetHarnessEndpoint

bedrock-agentcore:GetHarnessEndpoint

ListHarnessEndpoints

bedrock-agentcore:ListHarnessEndpoints

ListHarnessVersions

bedrock-agentcore:ListHarnessVersions

대부분의 작업은 하네스 ARN을 리소스 범위로 사용합니다arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>. 엔드포인트 작업은 하네스 엔드포인트 ARN 도 사용합니다arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>/harness-endpoint/<endpointName>.

GetHarnessEndpoint, UpdateHarnessEndpointDeleteHarnessEndpoint 작업에는 하네스 ARN과 엔드포인트 ARN이 모두 필요합니다. 에는 하네스 ARN만 CreateHarnessEndpoint 필요합니다. 엔드포인트가 아직 존재하지 않으므로 엔드포인트 ARN이 필요하지 않습니다. 사용자 지정 엔드포인트를 호출InvokeHarness하고 하네스 ARN과 엔드포인트 ARN이 모두 InvokeAgentRuntimeCommand 필요합니다.

샘플 실행 역할 정책

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockModelInvocation", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:<region>:<accountId>:*" ] }, { "Sid": "EcrPublicTokenAccess", "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "StsForEcrPublicPull", "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" }, { "Sid": "XRayTracingAccess", "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*" }, { "Sid": "CloudWatchLogsGroup", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*" }, { "Sid": "CloudWatchLogsDescribeGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:*" }, { "Sid": "CloudWatchLogsStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*" }, { "Sid": "CloudWatchMetricsPublish", "Effect": "Allow", "Resource": "*", "Action": "cloudwatch:PutMetricData", "Condition": { "StringEquals": { "cloudwatch:namespace": "bedrock-agentcore" } } }, { "Sid": "AgentCoreWorkloadIdentity", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForJWT" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreBrowserDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:browser/*" }, { "Sid": "AgentCoreCodeInterpreterDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:code-interpreter/*" } ] }

AgentCore CLI는 하네스 프로젝트를 스캐폴드할 때 이러한 권한이 있는 역할을 자동으로 생성합니다. 위의 정책은 역할을 직접 생성하는 경우에 적용됩니다.

참고

위의 BedrockModelInvocation 샘플 문을 사용하면 계정의 모든 리전 및 모든 Bedrock 리소스에서 모든 파운데이션 모델을 호출할 수 있습니다. 이 범위를 좁히려면 리소스 ARNs을 특정 추론 프로필로 바꾸면 단일 ARN을 사용하여 모델 및 리전 간에 요청을 라우팅할 수 있습니다. 예: 허용된 모든 리전arn:aws:bedrock:<destination_regions>:<accountId>:inference-profile/<profileId>과 페어링됩니다arn:aws:bedrock:<region>:<accountId>:foundation-model/<modelId>.

프로덕션 워크로드의 경우를 사용하는 대신 하네스에 필요한 특정 ARNs까지 Resource 값의 범위를 좁힙니다"*".

선택적 기능에 대한 추가 권한

다음은 하네스에서 사용하는 기능에 따라 실행 역할에 추가할 수 있는 샘플 정책입니다. 최소 권한 원칙 준수 - 추론에 필요한 특정 도구와 자격 증명만 하네스 에이전트에 부여합니다. 자리 표시자 정의자리 표시자 참조는 섹션을 참조하세요.

프라이빗 ECR 액세스(사용자 지정 컨테이너 이미지)

하네스가 사용자 지정 컨테이너에 프라이빗 ECR 이미지를 사용하는 경우이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRImageAccess", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:<ecrRegion>:<ecrAccountId>:repository/<ecrRepoName>" }, { "Sid": "ECRTokenAccess", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

AgentCore 메모리

하네스가 고객 소유 메모리 인스턴스를 사용하는 경우이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/<memoryId>" } ] }

AgentCore 브라우저(사용자 지정)

하네스가 고객 소유의 사용자 지정 브라우저 리소스를 사용하는 경우이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreBrowserCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:browser-custom/<browserCustomId>" } ] }

AgentCore 코드 해석기(사용자 지정)

하네스가 고객 소유의 사용자 지정 코드 인터프리터를 사용하는 경우이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreCodeInterpreterCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:code-interpreter-custom/<codeInterpreterCustomId>" } ] }

AgentCore 게이트웨이

하네스가 SigV4 인바운드 인증으로 구성된 게이트웨이를 사용하는 경우이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreGatewayAccess", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:gateway/<gatewayId>" } ] }

Amazon S3 및 Git의 스킬 소스

하네스가 Amazon S3 소스에서 스킬을 가져올 때이 정책을 추가합니다. 실행 역할은 버킷 접두사 아래에 스킬 객체를 나열하고 다운로드합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreSkillS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<skillBucket>", "arn:aws:s3:::<skillBucket>/*" ] } ] }

프라이빗 Git 리포지토리에서 스킬을 가져오기 위해 하네스는 API 키 자격 증명 공급자로부터 개인 액세스 토큰을 읽습니다. 토큰을 보유한 자격 증명 공급자에 대해 아래에 표시된 API 키 자격 증명 공급자 정책을 부여합니다.

API 키 자격 증명 공급자(OpenAI, Gemini, LiteLLM 또는 MCP 헤더 ARN 참조)

하네스가 OpenAI, Gemini 또는 LiteLLM과 같은 모델 공급자에 API 키 자격 증명 공급자를 사용하는 경우이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreApiKeyTokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreApiKeyTokenVaultPerKey", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/apikeycredentialprovider/<apiKeyName>" }, { "Sid": "AgentCoreApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/apikey/<apiKeyName>-*" } ] }

OAuth2 자격 증명 공급자(OAuth 보호 게이트웨이)

하네스가 OAuth 보호 게이트웨이 도구에 OAuth2 자격 증명 공급자를 사용하는 경우이 정책을 추가합니다. OAuth

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreOAuth2TokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreOAuth2TokenVaultPerProvider", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/oauth2credentialprovider/<oauthProviderName>" }, { "Sid": "AgentCoreOAuth2Secret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/oauth2/<oauthProviderName>-*" } ] }

자리 표시자 참조

위 정책의 다음 자리 표시자를 환경에 맞는 값으로 바꿉니다.

Placeholder 설명

<region>

리소스가 배포된 AWS 리전입니다.

<accountId>

AWS 계정 ID입니다.

<agentName>

하네스 에이전트의 이름입니다.

<memoryId>

AgentCore 메모리 리소스의 ID입니다.

<browserCustomId>

사용자 지정 브라우저 리소스의 ID입니다.

<codeInterpreterCustomId>

사용자 지정 코드 인터프리터 리소스의 ID입니다.

<gatewayId>

AgentCore Gateway 리소스의 ID입니다.

<apiKeyName>

API 키 자격 증명 공급자의 이름입니다.

<skillBucket>

스킬 파일을 보관하는 S3 버킷의 이름입니다.

<oauthProviderName>

OAuth2 자격 증명 공급자의 이름입니다.

<ecrRegion>

ECR 리포지토리가 호스팅되는 리전입니다.

<ecrAccountId>

ECR 리포지토리를 소유한 AWS 계정 ID입니다.

<ecrRepoName>

ECR 리포지토리의 이름입니다.

참고

Secrets Manager 리소스-*의 후행는 Secrets Manager가 보안 암호 ARNs에 추가하는 임의의 접미사를 설명합니다.