View a markdown version of this page

인터페이스 VPC 엔드포인트(AWS PrivateLink)를 사용하여 VPC와 Amazon Bedrock AgentCore 리소스 간에 프라이빗 연결 생성 - Amazon Bedrock AgentCore

인터페이스 VPC 엔드포인트(AWS PrivateLink)를 사용하여 VPC와 Amazon Bedrock AgentCore 리소스 간에 프라이빗 연결 생성

AWS PrivateLink를 사용하여 VPC와 Amazon Bedrock AgentCore 간에 프라이빗 연결을 생성할 수 있습니다. 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 Direct Connect 연결을 사용하지 않고 VPC에 있는 것처럼 AgentCore에 액세스할 수 있습니다. VPC의 인스턴스는 AgentCore에 액세스하는 데 퍼블릭 IP 주소가 필요하지 않습니다.

AWS PrivateLink로 구동되는 인터페이스 엔드포인트를 생성하여이 프라이빗 연결을 설정합니다. 인터페이스 엔드포인트에 대해 사용 설정하는 각 서브넷에서 엔드포인트 네트워크 인터페이스를 생성합니다. 이는 AgentCore로 향하는 트래픽의 진입점 역할을 하는 요청자 관리형 네트워크 인터페이스입니다.

자세한 내용은 PrivateLink 가이드의 Access AWS services AWS PrivateLink throughPrivateLink를 참조하세요. AWS PrivateLink

AgentCore에 대한 고려 사항

AgentCore에 대한 인터페이스 엔드포인트를 설정하기 전에 AWS PrivateLink 가이드고려 사항을 검토하세요.

AgentCore는 세 가지 AWS PrivateLink 엔드포인트를 제공합니다.

  • 데이터 영역 엔드포인트 - com.amazonaws.region.bedrock-agentcore

  • 컨트롤 플레인 엔드포인트 - com.amazonaws.region.bedrock-agentcore-control

  • 게이트웨이 엔드포인트 - com.amazonaws.region.bedrock-agentcore.gateway

다음 표에는 각 AgentCore 기본 요소에 대한 AWS PrivateLink 지원 상태가 나와 있습니다.

프리미티브 데이터 영역 컨트롤 플레인

런타임

지원됨

지원됨

Memory

지원됨

지원됨

기본 제공 도구(코드 해석기, 브라우저 도구)

지원됨

지원됨

ID

지원됨

지원됨

Gateway

지원됨

지원됨

평가 및 최적화

지원됨

지원됨

정책

지원됨

지원됨

AgentCore 인터페이스 엔드포인트를 사용할 수 있는 AWS 리전 목록은 지원되는 AWS 리전을 참조하세요.

중요

데이터 영역 APIs는 인증 및 베어러 토큰(OAuth) 인증을 위해 AWS 서명 버전 4(SigV4) 헤더를 모두 지원합니다. VPC 엔드포인트 정책은 OAuth 사용자가 아닌 IAM 보안 주체를 기반으로만 호출자를 제한할 수 있습니다. OAuth 기반 요청이 VPC 엔드포인트를 통과하려면 엔드포인트 정책에서 보안 주체를 *로 설정해야 합니다. 그렇지 않으면 SigV4 허용 목록에 있는 호출자만 VPC 엔드포인트를 통해 성공적으로 호출할 수 있습니다.

AWS IAM 전역 조건 컨텍스트 키가 지원됩니다. 기본적으로 인터페이스 엔드포인트를 통해 AgentCore에 대한 전체 액세스가 허용됩니다. 엔드포인트 정책을 인터페이스 엔드포인트에 연결하거나 보안 그룹을 엔드포인트 네트워크 인터페이스와 연결하여 액세스를 제어할 수 있습니다.

AgentCore에 대한 인터페이스 엔드포인트 생성

Amazon VPC 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 AgentCore에 대한 인터페이스 엔드포인트를 생성할 수 있습니다. 자세한 내용은 AWS PrivateLink 가이드인터페이스 엔드포인트 생성을 참조하세요.

다음 서비스 이름 형식을 사용하여 AgentCore에 대한 인터페이스 엔드포인트를 생성합니다.

  • 모든 데이터 영역 프리미티브(런타임, 기본 제공 도구, 메모리, 자격 증명): com.amazonaws.region.bedrock-agentcore

  • AgentCore 게이트웨이의 경우: com.amazonaws.region.bedrock-agentcore.gateway

  • 컨트롤 플레인 작업(런타임 및 메모리 관리)의 경우: com.amazonaws.region.bedrock-agentcore-control

인터페이스 엔드포인트에 대해 프라이빗 DNS를 활성화하면 기본 리전 DNS 이름을 사용하여 AgentCore에 API 요청을 할 수 있습니다. 예를 들어 bedrock-agentcore.us-east-1.amazonaws.com입니다.

엔드포인트의 엔드포인트 정책 생성

엔드포인트 정책은 인터페이스 엔드포인트에 연결할 수 있는 IAM 리소스입니다. 기본 엔드포인트 정책은 인터페이스 엔드포인트를 통해 AgentCore에 대한 전체 액세스를 허용합니다. VPC에서 AgentCore에 허용되는 액세스를 제어하려면 인터페이스 엔드포인트에 사용자 지정 엔드포인트 정책을 연결합니다.

엔드포인트 정책은 다음 정보를 지정합니다.

  • 작업을 수행할 수 있는 보안 주체(AWS 계정, IAM 사용자 및 IAM 역할).

    • AgentCore Gateway의 경우 게이트웨이 수신이 AWS 서명 버전 4(SigV4) 기반이 아닌 경우(예: OAuth를 대신 사용하는 경우) Principal 필드를 와일드카드 * 로 지정해야 합니다. SigV4 기반 인증을 사용하면를 특정 AWS 자격 증명Principal으로 정의할 수 있습니다. 이는 AgentCore 런타임에도 적용됩니다.

  • 수행할 수 있는 작업

  • 작업을 수행할 수 있는 리소스.

자세한 내용은 AWS PrivateLink 가이드엔드포인트 정책을 사용하여 서비스에 대한 액세스 제어를 참조하세요.

다양한 프리미티브에 대한 엔드포인트 정책

다음 예제에서는 다양한 AgentCore 구성 요소에 대한 엔드포인트 정책을 보여줍니다.

Runtime
  1. 다음 엔드포인트 정책은 특정 IAM 보안 주체가 에이전트 런타임 리소스를 호출하도록 허용합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:user/USERNAME" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:runtime/RUNTIME_ID" } ] }

    혼합 IAM 및 OAuth 인증

    InvokeAgentRuntime API는 VPC 엔드포인트 권한 부여의 두 가지 모드를 지원합니다. 다음 예제 정책은 IAM 보안 주체와 OAuth 호출자가 서로 다른 에이전트 런타임 리소스에 액세스할 수 있도록 허용합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:runtime/customAgent1" }, { "Effect": "Allow", "Principal": "*", "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:runtime/customAgent2" } ] }

    위의 정책은 IAM 보안 주체만 customAgent1InvokeAgentRuntime 호출하도록 허용합니다. 또한 IAM 보안 주체와 OAuth 호출자가 모두를 InvokeAgentRuntime 호출할 수 있습니다customAgent2.

    보호된 리소스 메타데이터(PRM) 엔드포인트 정책

    GetRuntimeProtectedResourceMetadata API는 OAuth 2.0 보호된 리소스 메타데이터(RFC 9728)를 구현합니다. 클라이언트는 자격 증명이 있기 전에이 엔드포인트를 호출하여 지정된 에이전트 런타임을 보호하는 권한 부여 서버를 검색합니다. 이 엔드포인트는 설계에 의해 인증되지 않으므로 엔드포인트 정책에서를 *로 설정해야 Principal 합니다.

    VPC 엔드포인트 정책은 PRM 요청에 적용됩니다. 엔드포인트 정책에서 bedrock-agentcore:GetRuntimeProtectedResourceMetadata를 명시적으로 허용하지 않는 경우 해당 엔드포인트를 통한 PRM 요청은 HTTP 403에서 거부됩니다. VPC 엔드포인트를 통해 액세스하는 OAuth 구성 에이전트 런타임에는 권한 부여 서버 검색을 위한 PRM 액세스가 필요합니다.

    참고

    데이터 경계 적용을 위한 모든 거부 엔드포인트 정책이 있고 OAuth 또는 JWT 인증을 사용하지 않는 경우 PRM 요청이 자동으로 거부됩니다. 필요한 추가 구성은 없습니다.

    다음 엔드포인트 정책은 런타임 호출을 특정 IAM 보안 주체로 제한하면서 모든 호출자가 권한 부여 서버(PRM)를 검색하도록 허용합니다.

    { "Statement": [ { "Sid": "AllowPRMDiscovery", "Effect": "Allow", "Principal": "*", "Action": [ "bedrock-agentcore:GetRuntimeProtectedResourceMetadata" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" }, { "Sid": "AllowInvoke", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/RUNTIME_ID" } ] }

    VPC 엔드포인트(데이터 경계 적용)를 통해 교차 계정 PRM 조회를 차단하려면 PRM 허용 문의 범위를 계정의 런타임으로만 지정합니다.

    { "Statement": [ { "Sid": "AllowPRMOwnAccountOnly", "Effect": "Allow", "Principal": "*", "Action": [ "bedrock-agentcore:GetRuntimeProtectedResourceMetadata" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" }, { "Sid": "DenyCrossAccountPRM", "Effect": "Deny", "Principal": "*", "Action": [ "bedrock-agentcore:GetRuntimeProtectedResourceMetadata" ], "NotResource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" }, { "Sid": "AllowInvoke", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" } ] }
Code Interpreter Tool
  1. 다음 엔드포인트 정책은 특정 IAM 보안 주체가 Code Interpreter 리소스를 호출하도록 허용합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:code-interpreter/CODE_INTERPRETER_ID" } ] }
Memory
  1. ====== 모든 데이터 영역 작업

    다음 엔드포인트 정책은 특정 IAM 보안 주체가 특정 AgentCore 메모리에 대한 us-east-1 데이터 영역 작업에 액세스할 수 있도록 허용합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:DeleteMemoryRecord", "bedrock-agentcore:GetMemoryRecord", "bedrock-agentcore:ListMemoryRecords", "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:ListActors", "bedrock-agentcore:ListSessions", "bedrock-agentcore:BatchCreateMemoryRecords", "bedrock-agentcore:BatchDeleteMemoryRecords", "bedrock-agentcore:BatchUpdateMemoryRecords" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:memory/MEMORY_ID" } ] }

    모든 메모리에 액세스

    다음 엔드포인트 정책은 특정 IAM 보안 주체가 모든 메모리에 액세스할 수 있도록 허용합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:DeleteMemoryRecord", "bedrock-agentcore:GetMemoryRecord", "bedrock-agentcore:ListMemoryRecords", "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:ListActors", "bedrock-agentcore:ListSessions", "bedrock-agentcore:BatchCreateMemoryRecords", "bedrock-agentcore:BatchDeleteMemoryRecords", "bedrock-agentcore:BatchUpdateMemoryRecords" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:memory/*" } ] }

    APIs 의한 액세스 제한

    다음 엔드포인트 정책은 특정 IAM 보안 주체가 특정 AgentCore 메모리 리소스에서 이벤트를 생성할 수 있는 권한을 부여합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvent" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:memory/MEMORY_ID" } ] }
Browser Tool
  1. 다음 엔드포인트 정책은 특정 IAM 보안 주체가 브라우저 도구 리소스에 연결할 수 있도록 허용합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:ConnectBrowserAutomationStream" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:browser/BROWSER_ID" } ] }
Gateway
  1. 다음은 사용자 지정 엔드포인트 정책의 예입니다. 이 정책을 인터페이스 엔드포인트에 연결하면 모든 보안 주체가 Resource 필드에 지정된 게이트웨이를 호출할 수 있습니다.

    { "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "bedrock:InvokeGateway" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1::gateway/my-gateway" } ] }
Identity
  1. 다음 엔드포인트 정책은 자격 증명 리소스에 대한 액세스를 허용합니다.

    { "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "*" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:workload-identity-directory/default/workload-identity/WORKLOAD_IDENTITY_ID" } ] }
Evaluations and Optimizations
  1. 다음 엔드포인트 정책은 특정 IAM 보안 주체가 평가 및 최적화 작업에 액세스할 수 있도록 허용합니다.

    { "Statement": [ { "Sid": "AllowBatchEvaluations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:StartBatchEvaluation", "bedrock-agentcore:GetBatchEvaluation", "bedrock-agentcore:ListBatchEvaluations", "bedrock-agentcore:StopBatchEvaluation", "bedrock-agentcore:DeleteBatchEvaluation" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:batch-evaluate/*" }, { "Sid": "AllowRecommendations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:StartRecommendation", "bedrock-agentcore:GetRecommendation", "bedrock-agentcore:ListRecommendations", "bedrock-agentcore:DeleteRecommendation" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:recommendation/*" }, { "Sid": "AllowEvaluators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvaluator", "bedrock-agentcore:GetEvaluator", "bedrock-agentcore:ListEvaluators", "bedrock-agentcore:UpdateEvaluator", "bedrock-agentcore:DeleteEvaluator" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:evaluator/*" }, { "Sid": "AllowOnlineEvaluationConfigs", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateOnlineEvaluationConfig", "bedrock-agentcore:GetOnlineEvaluationConfig", "bedrock-agentcore:ListOnlineEvaluationConfigs", "bedrock-agentcore:UpdateOnlineEvaluationConfig", "bedrock-agentcore:DeleteOnlineEvaluationConfig" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:online-evaluation-config/*" }, { "Sid": "AllowABTests", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateABTest", "bedrock-agentcore:GetABTest", "bedrock-agentcore:ListABTests", "bedrock-agentcore:UpdateABTest", "bedrock-agentcore:DeleteABTest" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:ab-test/*" }, { "Sid": "AllowConfigurationBundles", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateConfigurationBundle", "bedrock-agentcore:GetConfigurationBundle", "bedrock-agentcore:GetConfigurationBundleVersion", "bedrock-agentcore:ListConfigurationBundles", "bedrock-agentcore:ListConfigurationBundleVersions", "bedrock-agentcore:UpdateConfigurationBundle", "bedrock-agentcore:DeleteConfigurationBundle" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:configuration-bundle/*" } ] }