View a markdown version of this page

게이트웨이에 대한 인바운드 권한 부여 설정 - Amazon Bedrock AgentCore

게이트웨이에 대한 인바운드 권한 부여 설정

게이트웨이를 생성하기 전에 인바운드 권한 부여를 설정해야 합니다. 인바운드 권한 부여는 AgentCore 게이트웨이를 통해 대상에 액세스하려고 시도하는 사용자를 검증합니다. AgentCore는 다음과 같은 유형의 인바운드 권한 부여를 지원합니다.

  • JSON 웹 토큰(JWT) - 권한 부여에 사용되는 안전하고 컴팩트한 토큰입니다. JWT를 생성한 후 게이트웨이를 생성할 때 이를 권한 부여 구성으로 지정합니다. 공급자 설정 및 구성에서 자격 증명 공급자를 사용하여 JWT를 생성할 수 있습니다.

  • IAM 자격 증명 - 게이트웨이에 액세스하려는 AWS IAM 자격 증명의 자격 증명을 통해 권한을 부여합니다.

  • 오프로드된 권한 부여 유형 - 게이트웨이는 자체 권한 부여 결정을 내리지 않고 대신 다운스트림 대상, 게이트웨이에 연결된 정책 엔진 또는 인터셉터 Lambda 함수와 같은 다른 구성 요소에 권한 부여를 오프로드합니다. 이 범주에는 인증 전용권한 부여 없음이 포함됩니다. 자세한 내용과 지침은 오프로드된 인바운드 권한 부여를 참조하세요.

참고

AWS Management Console 또는 AgentCore CLI를 사용하여 게이트웨이를 생성하는 경우 게이트웨이 생성 중에 Amazon Cognito를 사용하여 기본 인바운드 권한 부여 구성을 생성할 수 있습니다. 기본 권한 부여 구성을 사용하려는 경우이 사전 조건을 건너뛸 수 있습니다.

Amazon Cognito를 사용하여 기본 권한 부여 구성을 사용할 계획이 없는 경우 설정 방법을 배우는 데 사용할 권한 부여 유형에 해당하는 주제를 선택합니다.

IAM 기반 인바운드 권한 부여

IAM 기반 인바운드 권한 부여를 사용하면 게이트웨이 호출자의 IAM 자격 증명을 권한 부여에 사용할 수 있습니다. 게이트웨이를 호출하는 사용자를 인증할 수 있는 IAM 자격 증명을 생성하려는 경우이 옵션을 사용할 수 있습니다.

IAM 기반 인바운드 권한 부여를 설정하려면

  1. 게이트웨이 호출자에 대한 기존 IAM 자격 증명을 생성하거나 사용합니다.

  2. 다음 권한이 포함된 자격 증명 기반 IAM 정책을 생성합니다.

    • bedrock-agentcore:InvokeGateway - 게이트웨이를 생성한 후에는 보안 모범 사례로 생성한 게이트웨이로 Resource 필드 범위가 지정되도록이 정책을 수정해야 합니다.

  3. 정책을 게이트웨이 호출자 자격 증명에 연결합니다.

예제 정책

다음 예제에서는 ID를 사용하여 게이트웨이를 호출할 수 있도록 자격 증명에 연결할 수 있는 정책을 보여줍니다. my-gateway-12345

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGatewayInvocation", "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-12345" ] } ] }

리소스

JSON 웹 토큰(JWT) 기반 인바운드 권한 부여

JSON 웹 토큰(JWT)은 권한 부여에 사용되는 안전하고 컴팩트한 토큰입니다. 지원되는 자격 증명 공급자를 사용하여 JWT를 생성할 수 있습니다. JWT를 생성한 후 게이트웨이를 생성할 때 JWT를 검색하고 권한 부여 구성으로 지정할 수 있습니다.

중요

JWT 토큰 기반 인바운드 권한 부여를 사용하면 CloudTrail에서 JWT 토큰의 일부 클레임이 로깅됩니다. 항목에는 제공된 웹 자격 증명 토큰의 주체가 포함됩니다. 이 필드에 개인 식별 정보(PII)를 사용하지 않는 것이 좋습니다. 예를 들어 OIDC 사양에 제안된 대로 GUID 또는 쌍 식별자를 대신 사용할 수 있습니다.

AgentCore CLI를 사용하여 기본 JWT를 설정하거나 지원되는 자격 증명 공급자를 사용하여 수동으로 생성할 수 있습니다. JWT를 설정하는 다양한 방법에 대해 자세히 알아보려면 다음 주제 중에서 선택합니다.

기본 JWT 설정

AgentCore CLI를 사용하면 게이트웨이를 생성할 때 사용할 수 있는 Amazon Cognito를 사용하여 기본 권한 부여 구성을 쉽게 생성할 수 있습니다. agentcore create를 실행하면 CLI는 인바운드 권한 부여를 구성하라는 메시지를 표시하고 Amazon Cognito 사용자 풀을 자동으로 설정할 수 있습니다.

agentcore create

명령이 완료되면 AgentCore CLI는 인증 및 권한 부여 정보를 제공합니다.

  • 게이트웨이를 생성할 때 권한 부여자 구성을 사용합니다.

  • 게이트웨이를 호출할 때 인바운드 권한 부여를 위해서는 클라이언트 ID, 클라이언트 보안 암호 및 토큰 엔드포인트를 사용하여 액세스 토큰을 얻어야 합니다. 액세스 토큰을 얻는 방법에 대한 자세한 내용은 AgentCore 게이트웨이 사용 또는 Amazon Cognito 개발자 안내서의 토큰 발급자 엔드포인트를 참조하세요.

JWT 수동 설정

Amazon Bedrock AgentCore는 모든 자격 증명 공급자의 JWTs 지원합니다. 공급자 설정 및 구성에서 몇 가지 예를 볼 수 있습니다.

JWT를 생성하는 과정에서 다음 값을 기록해 둡니다.이 값은 사용 사례에 해당하는 경우 게이트웨이를 생성할 때 CustomJWTAuthorizerConfiguration에서 작성합니다.

  • 검색 URL - 로그인 자격 증명과 토큰 엔드포인트를 검색할 수 있는 URL입니다.

  • 클라이언트 ID - 토큰을 요청하는 클라이언트 애플리케이션의 퍼블릭 식별자로, client_id 클레임에 대해 검증됩니다.

  • 클라이언트 보안 암호 - 토큰을 검색하기 위해 클라이언트 애플리케이션에 대한 액세스를 인증하는 프라이빗 키입니다.

  • 허용된 대상 - aud 클레임을 통해 토큰의 의도한 수신자 또는 소비자를 검증하는 식별자입니다.

  • 허용된 범위 - 사용자 계정에 대한 애플리케이션 액세스의 제한을 정의하는 범위입니다. 자세한 내용은 OAuth 범위를 참조하세요.

  • 기타 필수 클레임 값 - 사용하는 권한 부여자에 따라 인증을 위해 클레임 필드 값과 일치하는 필수 사용자 지정 클레임 필드 및 규칙을 지정해야 할 수 있습니다.

다음을 수행하려면 이러한 값이 필요합니다.

  • 권한 부여자 구성에서 값을 지정하여 게이트웨이를 생성합니다.

  • 게이트웨이를 호출하기 위한 권한 부여 자격 증명을 얻습니다. 자격 증명을 얻는 방법을 알아보려면 자격 증명 공급자의 설명서를 찾아보십시오. 예를 들어 Amazon Cognito를 사용한 경우 Amazon Cognito 개발자 안내서의 토큰 발급자 엔드포인트를 참조하세요.

인증 과제의 범위 광고

클라이언트가 유효한 액세스 토큰 없이 JWT 인증 게이트웨이에 요청을 보내면 게이트웨이는 필요한 OAuth 범위를 알리는 WWW-Authenticate 헤더와 함께 오류 응답을 반환합니다. 이는 RFC 6750 베어러 토큰 챌린지 형식을 따르며 MCP 호환 클라이언트가 토큰 획득에 필요한 범위를 자동으로 검색할 수 있도록 합니다.

게이트웨이는 오류에 따라 다음 응답을 반환합니다.

  • 401 무단 - 요청에 토큰이 없거나 잘못된 토큰이 있습니다. WWW-Authenticate 헤더에는 resource_metadatascope 파라미터가 포함됩니다.

  • 403 금지됨 - 토큰은 유효하지만 필요한 범위를 포함하지 않습니다. WWW-Authenticate 헤더에는 error="insufficient_scope", scoperesource_metadata 파라미터가 포함됩니다.

scope 값에는 게이트웨이의 CustomJWTAuthorizerConfiguration에서 허용 범위로 구성된 공백으로 구분된 범위가 포함됩니다. resource_metadata 값은 클라이언트가 권한 부여 서버 및 지원되는 범위를 검색하기 위해 가져올 수 /.well-known/oauth-protected-resource있는에서 게이트웨이의 OAuth 보호 리소스 메타데이터 문서를 가리킵니다.

프라이빗(VPC 호스팅) 자격 증명 공급자 사용

AgentCore Gateway는 VPC 내에서 호스팅되는 자격 증명 공급자를 통한 JWT 기반 인바운드 권한 부여를 지원합니다. AgentCore가 퍼블릭 인터넷privateEndpoint에 노출되지 않고 프라이빗 OIDC 검색, 토큰 및 JWKS 엔드포인트에 도달할 수 customJWTAuthorizer 있도록에서를 구성할 수 있습니다.

IAM 보안 주체는에 대한 iam:CreateServiceLinkedRole 권한이 있어야 AgentCore 자격 증명identity-network.bedrock-agentcore.amazonaws.com이 아직 존재하지 않는 경우 사용자를 대신하여 AWSServiceRoleForBedrockAgentCoreIdentity 서비스 연결 역할을 생성할 수 있습니다.

는의 도메인에 privateEndpoint 적용됩니다discoveryUrl. 자격 증명 공급자가 다른 엔드포인트에 다른 도메인을 사용하는 경우(예: 토큰 또는 JWKS 엔드포인트가 검색 URL과 다른 도메인으로 확인됨) privateEndpointOverrides를 사용하여 각 추가 도메인에 대해 별도의 프라이빗 엔드포인트 구성을 지정합니다.

다음 예시에서는 관리형 Lattice를 사용하여 프라이빗 자격 증명 공급자로 게이트웨이를 생성합니다.

{ "name": "my-private-idp-gateway", "protocolType": "MCP", "roleArn": "arn:aws:iam::123456789012:role/my-gateway-role", "authorizerType": "CUSTOM_JWT", "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": [ "my-audience" ], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } } } } }

토큰 또는 JWKS 엔드포인트가 검색 URL과 다른 도메인을 사용하는 경우 각 추가 도메인에 대한 privateEndpointOverrides 항목을 추가합니다. 현재 privateEndpointOverrides는 자체 관리형 Lattice 리소스에서만 지원됩니다.

{ ... "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": ["my-audience"], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } }, "privateEndpointOverrides": [ { "domain": "my-token-server.internal.example.com", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-def456" } } } ] } } }

자체 관리형 Lattice, 교차 계정 설정 및 고급 구성은 VPC Lattice를 사용하여 VPC의 프라이빗 리소스에 연결을 참조하세요. 인바운드 및 아웃바운드 프라이빗 IdP 시나리오를 모두 다루는 포괄적인 가이드는 프라이빗 자격 증명 공급자에 연결을 참조하세요.

오프로드된 인바운드 권한 부여

오프로드된 인바운드 권한 부여의 경우 게이트웨이는 자체 권한 부여 결정을 내리지 않습니다. 대신 다른 구성 요소로 권한 부여를 오프로드합니다.

  • 수신한 요청을 승인하는 다운스트림 대상 서비스입니다.

  • 게이트웨이에 연결된 정책 엔진으로, 액세스 정책을 평가합니다.

  • 요청이 대상에 도달하기 전에 사용자 지정 인증 또는 권한 부여 로직을 실행하는 인터셉터 Lambda 함수입니다.

AgentCore는 두 가지 오프로드 유형을 제공합니다.

  • 인증 전용(AUTHENTICATE_ONLY) - 게이트웨이는 호출자의 SigV4 서명을 확인하여 호출자를 인증하지만 권한 부여 결정은 하지 않습니다. 요청에 서명해야 하지만 인증된 호출자는 대상에 전달됩니다.

  • 권한 없음(NONE) - 게이트웨이는 인바운드 인증 또는 권한 부여를 수행하지 않습니다. 요청은 인증되지 않을 수 있으며 모든 호출자는 대상으로 전달됩니다.

어느 유형이든 권한 부여가 실제로 적용되는 위치를 결정합니다.

  • 정책 엔진 - 게이트웨이에 정책 엔진을 연결하여 액세스 정책을 중앙에서 평가합니다. 프로덕션 게이트웨이에 권장되는 패턴이며 OAuth와 함께 자주 사용됩니다.

  • 인터셉터 Lambda 함수 - 요청이 대상에 도달하기 전에 자체 인증 또는 권한 부여 로직을 실행합니다. 이는 기본 제공 인바운드 권한 부여 옵션이 요구 사항을 충족하지 않는 프로덕션 게이트웨이에 권장됩니다.

  • 다운스트림 대상 - 대상이 수신한 요청에 대해 권한 부여를 적용하도록 합니다. 이는 예를 들어 런타임의 인증 및 권한 부여를 변경하지 않고 기존 런타임 앞에 게이트웨이를 배치하는 실험 및 점진적 온보딩에 유용합니다. 따라서 런타임이 이미 신뢰하는 인증을 계속 적용하는 동안 게이트웨이 기능을 점진적으로 채택할 수 있습니다.

중요

AUTHENTICATE_ONLY 또는 중 하나를 선택하여 인바운드 권한 부여를 오프로드하는 경우 NONE AgentCore Gateway는 자체적으로 권한 부여를 적용하지 않습니다. 이 시나리오에서는 정책 엔진, 인터셉터 Lambda 함수 또는 다운스트림 대상과 같은 별도의 구성 요소로 권한 부여를 오프로드해야 합니다. 그렇지 않으면 호출자가 대상에 도달할 수 있습니다.

인증 전용 권한 부여

인증 전용 권한 부여(AUTHENTICATE_ONLY)를 사용하면 게이트웨이는 호출자의 서명 버전 4(SigV4) 서명을 확인하여 자격 증명을 확인하지만 자체 권한 부여는 결정하지 않습니다. 인증된 모든 IAM 보안 주체는 권한에 관계없이 게이트웨이를 호출할 수 있으며 요청은 대상으로 전달됩니다. 권한 부여는 다운스트림 대상 서비스 또는 게이트웨이에 연결된 정책 엔진에 위임됩니다.

중요

AUTHENTICATE_ONLY에서는 게이트웨이가 권한 부여 정책을 적용하지 않습니다. 유효한 SigV4-signed 요청이 대상에 전달됩니다. 다운스트림 대상이 자체 권한 부여 로직을 구현하거나 게이트웨이에 정책 엔진을 연결하여 액세스를 제어해야 합니다. 대상 또는 게이트웨이 정책 수준에서 적절한 권한이 없으면 인증된 호출자가 백엔드 서비스에 연결할 수 있습니다.

권한 없음

를 사용하여 권한 부여 없이 구성된 게이트웨이를 생성할 수 있습니다authorizerType=NONE. 게이트웨이는 수신 게이트웨이 요청에 대해 어떠한 권한 부여도 수행하지 않으며 요청을 인증할 수 없습니다.

중요

아래 나열된 모든 보안 모범 사례를 구현하지 않는 한 프로덕션 워크로드에 권한 없음 게이트웨이를 사용하지 마세요. 사용자 지정 인증 로직이 필요한 경우 요청이 대상에 도달하기 전에 인터셉터 Lambda 함수를 사용하여 인증을 처리하는 것이 좋습니다.

보안 모범 사례

  1. bedrock-agentcore:GatewayAuthorizerType 조건 키를 사용하여를 사용하여 게이트웨이를 생성하기 위해 조직 내에서 액세스를 선택적으로 허용/거부합니다. authorizerType=NONE

  2. 테스트에 편의상 권한 없음 게이트웨이를 사용하지 마십시오. 퍼블릭으로 만들려는 게이트웨이에 사용해야 하지만 자체 사용자 지정 제한 규칙 및 검사를 구현하여 퍼블릭 게이트웨이가 인증되지 않은 사용자를 처리할 수 있는지 확인해야 합니다.

  3. 민감한 정보로 응답할 수 있는 대상에는 권한 없음 게이트웨이를 사용하지 마십시오. 대상은 자체 권한 부여 구성으로 구성되지만 게이트웨이에 다른 보안 계층을 추가하는 것이 가장 좋습니다.

인증을 변경하지 않고 기존 런타임 온보딩

오프로드된 인바운드 유형을 발신자의 자격 증명을 런타임으로 전달하는 일치하는 아웃바운드 권한 부여 유형과 페어링하는 경우 게이트웨이에 대한 온보딩은 기존 클라이언트에서 엔드포인트 재정의를 설정하는 것만큼 간단할 수 있습니다. 인증 변경은 필요하지 않습니다.

  • IAM 런타임 - AUTHENTICATE_ONLY 인바운드 권한 부여를 발신자 IAM 자격 증명(CALLER_IAM_CREDENTIALS) 아웃바운드 권한 부여와 결합합니다. 게이트웨이는 SigV4 호출자를 인증한 다음 동일한 호출자 자격 증명으로 런타임에 요청에 서명하므로 런타임의 기존 IAM 권한 부여는 변경되지 않고 계속 적용됩니다. 자세한 내용은 발신자 IAM 자격 증명을 참조하세요.

  • OAuth 런타임 - 권한 없음 인바운드 권한 부여와 토큰 패스스루(JWT_PASSTHROUGH) 아웃바운드 권한 부여를 결합합니다. 게이트웨이는 인바운드 JWT를 수정하지 않고 런타임으로 전달하므로 런타임은 현재와 정확히 동일한 토큰을 검증합니다. (토큰 패스스루는 보유자 토큰을 전달하므로 JWT를 사용하는 인바운드 유형인 JWT 인바운드 권한 부여 또는가 필요합니다NONE. SigV4-based이며 보유자 토큰AUTHENTICATE_ONLY이 없는 에서는 사용할 수 없습니다.) 자세한 내용은 토큰 패스스루를 참조하세요.

    참고

    토큰 패스스루(JWT_PASSTHROUGH)는 프로덕션에 권장되는 접근 방식이 아닙니다. 인바운드 토큰을 변경하지 않고 전달하면 게이트웨이와 다운스트림 대상 모두에서 동일한 토큰을 수락하므로 범위가 엄격하게 지정되어야 합니다. 예를 들어 각 토큰의 대상(aud)은 의도한 리소스로 제한되어야 합니다. 권장되는 패턴은 OBO(on-behalf-of) 토큰 교환입니다.이 경우 게이트웨이는 호출자의 토큰을 호출자의 토큰을 재생하는 대신 대상에 대한 새로운 대상 범위 토큰으로 교환합니다. 간편한 실험, 테스트 및 온보딩을 위해 토큰 패스스루를 사용하고 장기 프로덕션 워크로드를 위해 OBO로 이동합니다.

주의

이 섹션의 자격 증명 전달 구성은 다운스트림 런타임에만 의존하여 요청을 승인합니다. 게이트웨이는 자체 권한을 추가하지 않습니다. 테스트, 실험 및 중단이 적은 온보딩을 위한 것입니다. 프로덕션 게이트웨이의 경우 게이트웨이에서 권한 부여 적용 - JWT 또는 IAM 인바운드 권한 부여를 구성하거나, 정책 엔진을 연결하거나, 인터셉터 Lambda 함수를 사용합니다. 게이트웨이를 채택한 후 호출자가 게이트웨이를 우회하지 않도록 하려면 게이트웨이를 통한 트래픽 적용을 참조하세요.