기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
프라이빗 키 JWT 클라이언트 인증
프라이빗 키 JWT를 사용하면 AgentCore 자격 증명은 클라이언트 보안 암호 대신 RFC 7523, 섹션 2.2에 따라 서명된 JWT 클라이언트 어설션을 사용하여 다운스트림 자격 증명 공급자의 토큰 엔드포인트에 인증합니다. 프라이빗 키는 AWS Key Management Service(KMS)를 벗어나지 않습니다. AgentCore 자격 증명은를 통해 각 어설션에 서명합니다kms:Sign. ID 공급자는 클라이언트 어설션을 인증하는 데 사용되는 해당 퍼블릭 키를 소유하고 액세스 토큰을 반환합니다.
이 방법을 사용하면 AgentCore Identity와 권한 부여 서버 간의 공유 보안 암호가 제거되어 사용자가 완전히 제어할 수 있는 비대칭 키 페어로 대체됩니다.
프라이빗 키 JWT 클라이언트 인증 작동 방식
-
, 비대칭 KMS 서명 키의
clientIdARN 및 프라이빗 키 JWT 클라이언트 인증을 위해 ID 제공업체에 필요한 것과 동일한 서명 알고리즘을 사용하여 사용자 지정 OAuth 2.0 자격 증명 공급자를 구성합니다. -
AgentCore Identity는 M2M(Machinemachine-to-machine), OBO(on-behalf-of) 또는 권한 부여 코드 흐름을 위한 토큰이 필요한 경우 수명이 짧은 JWT 클라이언트 어설션을 구축합니다. 어설션에는 자격 증명 공급자가 요구하는 클레임이 포함됩니다.
-
그런 다음 AgentCore Identity는 제공된 비대칭 서명 키 ARN을 사용하여 AWS KMS를 사용하여 어설션에 서명합니다.
-
서명된 어설션은와 마찬가지로 토큰 엔드포인트
client_assertion로 전송됩니다client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer. -
권한 부여 서버는 등록한 퍼블릭 키에 대해 어설션을 검증하고 요청된 토큰을 발급합니다.
프라이빗 키 JWT는 사용자 지정 OAuth 2.0 자격 증명 공급자(CustomOauth2)에서 사용할 수 있습니다. 클라이언트 자격 증명(M2M), JWT 권한 부여(OBO)와의 토큰 교환, 권한 부여 코드(사용자 위임 액세스) 등 모든 권한 부여 흐름에서 작동합니다.
AgentCore 자격 증명에서 프라이빗 키 JWT 구성
자격 증명 공급자를 성공적으로 구성하려면 먼저 서명 알고리즘, 퍼블릭 키 및 필수 JWT 클라이언트 어설션 클레임과 같은 프라이빗 키 JWT 클라이언트 인증에 대한 자격 증명 공급자의 요구 사항을 확인합니다.
서명 알고리즘
자격 증명 공급자가 프라이빗 키 JWT 클라이언트 인증에 필요한 서명 알고리즘을 식별합니다. 이는 OAuth 2.0 사용자 지정 자격 증명 공급자를 생성하거나 업데이트하는 privateKeyJwtConfig 동안의 signingAlgorithm 필드에 해당합니다.
-
AgentCore Identity에서 자격 증명 공급자를 생성할 때 서명 알고리즘과 동일한 알고리즘을 지정합니다.
-
이 서명 알고리즘은 아래에 자세히 설명된 허용 가능한 KMS 키 사양을 선택하는 데에도 사용됩니다.
AWS KMS 비대칭 키 구성
자격 증명 공급자가 서명 키를 관리하는 방법을 결정합니다.
-
자격 증명 공급자가 업로드된 퍼블릭 키를 수락하는 경우
SIGN_VERIFY사용량이 있는 비대칭 KMS 키 페어를 생성합니다. 서명 알고리즘을 지원하는 키 사양을 선택합니다(다음 표 참조). 키는 자격 증명 공급자와 동일한 리전에 있어야 합니다. AgentCore 자격 증명에서 자격 증명 공급자를 생성하는 동안 KMS 키 ARN을 지정합니다.생성 후 kms:GetPublicKey API를 사용하여 해당 퍼블릭 키를 생성합니다.는 DER 인코딩 X.509 퍼블릭 키 또는 SPKI를
kms:GetPublicKey반환합니다. 일부 자격 증명 공급자는 이러한 퍼블릭 키를 특정 형식으로 요구합니다. 예를 들어 Microsoft Entra에는 X.509 인증서 객체가 필요하고 Okta에는 JSON 웹 키가 필요하지만 Ping Identity는 둘 다 지원합니다. 퍼블릭 키를 자격 증명 공급자의 필수 형식으로 변환하고 자격 증명 공급자에 업로드합니다. -
자격 증명 공급자가 키 페어를 생성하고 프라이빗 키 구성 요소를 제공하는 경우
SIGN_VERIFY사용량이 있는 KMS 키로 가져옵니다. 서명 알고리즘과 호환되는 키 사양을 선택합니다(다음 표 참조). 지침은 AWS KMS 키의 키 구성 요소 가져오기를 참조하세요. AgentCore 자격 증명에서 자격 증명 공급자를 생성하는 동안 KMS 키 ARN을 지정합니다.
signingAlgorithm 선택한에 따라 허용되는 KMS 키 사양이 결정됩니다.
| 서명 알고리즘 | 허용되는 KMS 키 사양 |
|---|---|
|
|
|
|
|
|
|
|
|
AWS KMS 키 정책
프라이빗 키 JWT에 비대칭 KMS 서명 키를 사용하려면 키를 통해 AgentCore Identity가 사용자를 대신하여 서명 및 키 설명 작업을 수행할 수 있어야 합니다. KMS 키의 키 정책에 다음 권한을 추가합니다.
kms:ViaService 조건은 요청이 Amazon Bedrock AgentCore 자격 증명을 통해 시작된 경우에만 키를 사용할 수 있도록 합니다. 교차 계정 키는 키 정책이 kms:DescribeKey 및를 호출 자격 증명에 부여kms:Sign할 때 지원됩니다. Principal ARN을 AgentCore 자격 증명을 호출할 계정의 루트 ARN으로 바꿉니다.
{ "Id": "identity-service-cmk-policy", "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockAgentCoreIdentityPrivateKeyJwtAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Sign", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" }, "StringLike": { "kms:ViaService": "bedrock-agentcore-identity.*.amazonaws.com" } } } ] }
교차 리전 키는 지원되지 않습니다. KMS 키는 자격 증명 공급자와 동일한 AWS 리전에 있어야 합니다.
JWT 클라이언트 어설션의 추가 클레임
자격 증명 공급자가 프라이빗 키 JWT 클라이언트 인증을 위해 JWT 클라이언트 어설션 헤더 또는 페이로드에서 추가 클레임을 요구하는지 확인합니다. 그렇다면 내의 additionalHeaderClaims 및 additionalPayloadClaims 필드에 포함시킵니다privateKeyJwtConfig.
-
의 경우 클레임
alg또는를 허용하지additionalHeaderClaims않습니다typ. -
의 경우
additionalPayloadClaims,iss,sub,jti,iat또는 클레임exp을 허용하지 않습니다nbf.aud클레임에 대한 재정의를 허용합니다(기본값은 자격 증명 공급자의 토큰 엔드포인트).
프라이빗 키 JWT 인증을 사용하여 사용자 지정 공급자로 OAuth 클라이언트 구성
프라이빗 키 JWT 클라이언트 인증으로 자격 증명 공급자를 구성하려면 AWS 콘솔에서 사용자 지정 공급자를 사용하여 OAuth 클라이언트 추가를 참조하세요. AWS CLI를 사용하여 자격 증명 공급자를 구성할 수도 있습니다.
CLI 예제: Microsoft 자격 증명 공급자의 프라이빗 키 JWT
aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "microsoft-private-key-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://login.microsoftonline.com/your-tenant-id/v2.0/.well-known/openid-configuration" }, "clientId": "your-client-id", "clientAuthenticationMethod": "PRIVATE_KEY_JWT", "privateKeyJwtConfig": { "privateKeySource": { "kmsKeySource": { "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/your-key-id" } }, "signingAlgorithm": "PS256", "additionalHeaderClaims": { "x5t#S256": "Base64url-encoded SHA-256 thumbprint of the DER encoding of the X.509 public key certificate uploaded to Microsoft Entra" }, "additionalPayloadClaims": { "aud": "https://login.microsoftonline.com/your-tenant-id/oauth2/v2.0/token" } } } } }'
CLI 예제: 토큰 교환On-behalf-of Okta 자격 증명 공급자의 프라이빗 키 JWT
aws bedrock-agentcore-control create-oauth2-credential-provider \ --cli-input-json '{ "name": "okta-private-key-jwt", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "https://your-app.okta.com/oauth2/default/.well-known/openid-configuration" }, "clientId": "your-client-id", "clientAuthenticationMethod": "PRIVATE_KEY_JWT", "privateKeyJwtConfig": { "privateKeySource": { "kmsKeySource": { "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/your-key-id" } }, "signingAlgorithm": "RS256" }, "onBehalfOfTokenExchangeConfig": { "grantType": "TOKEN_EXCHANGE", "tokenExchangeGrantTypeConfig": { "actorTokenContent": "NONE" } } } } }'
프라이빗 키 JWT 인증을 사용하는 사용자 지정 공급자가 있는 OAuth 클라이언트에 대한 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
|
|
예 |
|
|
|
예 |
자격 증명 공급자에 등록된 클라이언트 식별자입니다. |
|
|
예 |
비대칭 KMS 서명 키의 전체 ARN입니다. 자격 증명 공급자와 동일한 리전에 있어야 합니다. 교차 계정이 지원됩니다. |
|
|
예 |
JWT에 서명하기 위한 알고리즘입니다. 중 하나: |
|
|
아니요 |
추가 JWT 헤더 클레임(맵, 최대 10개 항목). 이를 사용하여 자격 증명 공급자에 등록된 키와 |
|
|
아니요 |
추가 JWT 페이로드 클레임(맵, 최대 10개 항목). |
|
|
불필요 |
프라이빗 키 JWT 사용 시 생략합니다. |