View a markdown version of this page

고객 관리형 KMS 키를 사용하여 AgentCore 정책 엔진 암호화 - Amazon Bedrock AgentCore

고객 관리형 KMS 키를 사용하여 AgentCore 정책 엔진 암호화

AgentCore의 정책은 기본적으로 암호화를 제공하여 AWS 소유 암호화 키를 사용하여 민감한 고객 저장 데이터를 보호합니다. 추가 보호 계층인 AgentCore의 정책을 사용하면 AWS Key Management Service(AWS KMS) 고객 관리형 키(CMK)를 사용하여 정책 엔진을 암호화할 수 있습니다. 이 기능은 저장 데이터 암호화를 통해 민감한 데이터를 보호하므로 다음을 수행할 수 있습니다.

  • 서비스 측의 운영 부담을 줄여 민감한 데이터 보호

  • 자체 AWS KMS 고객 관리형 키를 통해 권한 부여 정책의 세부 정보를 볼 수 있는 사용자를 제어합니다.

  • 엄격한 암호화 규정 준수 및 규제 요구 사항을 충족하는 보안에 민감한 애플리케이션 구축

다음 섹션에서는 새 정책 엔진에 대한 암호화를 구성하고 암호화 키를 관리하는 방법을 설명합니다.

참고

AgentCore의 저장 시 암호화 정책은 AgentCore의 정책을 사용할 수 있는 모든 AWS 리전에서 사용할 수 있습니다.

AWS AgentCore의 정책에 대한 KMS 키 유형

AgentCore의 정책은 AWS KMS와 통합되어 고객 데이터를 암호화하고 해독하는 데 사용되는 암호화 키를 관리합니다. 키 유형 및 상태에 대한 자세한 내용은 AWS KMS 개발자 안내서의 AWS Key Management Service 개념을 참조하세요. 새 정책 엔진을 생성할 때 다음 AWS KMS 키 유형 중에서 선택하여 데이터를 암호화할 수 있습니다.

AWS 소유 키

기본 암호화 유형입니다. AgentCore의 정책은 추가 비용 없이 키를 소유하며 생성 시 저장된 리소스 데이터를 암호화합니다. AgentCore의 정책에서 소유한 키를 사용하여 데이터를 암호화하거나 해독하기 위해 코드 또는 애플리케이션에 추가 구성이 필요하지 않습니다. 이러한 키를 보거나 관리하거나 사용하거나 감사할 필요가 없습니다. 자세한 내용은 AWS KMS 개발자 안내서의 AWS 소유 키를 참조하세요.

고객 관리형 키

AWS 계정에서 키를 생성, 소유 및 관리합니다. KMS 키를 완전히 제어할 수 있습니다. 고객 관리형 키에는 AWS KMS 요금이 적용됩니다. 자세한 내용은 AWS KMS 요금 페이지를 참조하세요. 키 유형에 대한 자세한 내용은 AWS KMS 개발자 안내서의 고객 관리형 키를 참조하세요.

정책 엔진의 암호화를 위해 고객 관리형 키를 지정하면 AgentCore의 정책이 정책 엔진과 모든 하위 리소스(정책, 정책 생성)를 해당 키로 암호화합니다. 고객 관리형 키를 사용하여 정책 엔진을 암호화하려면 키 정책에서 AgentCore의 정책에 대한 액세스 권한을 부여해야 합니다. 키 정책은 고객 관리형 키에 연결하여 액세스를 제어하는 리소스 기반 정책입니다. 자세한 내용은 AgentCore의 정책에 대한 AWS KMS 키 사용 권한 부여를 참조하세요.

또한 고객 관리형 키로 암호화된 정책 엔진을 생성하거나 고객 관리형 키로 암호화된 정책 엔진에 대한 API 호출을 수행하려면 호출을 수행하는 IAM 사용자 또는 역할도 키에 액세스할 수 있어야 합니다. AgentCore의 정책이 키에 액세스할 수 없는 경우 해당 키로 암호화된 리소스와 관련된 모든 권한 부여 결정이 거부됩니다. 키에 액세스할 수 없는 경우 해당 키로 암호화된 리소스를 읽거나 업데이트하거나 삭제할 수 없으며 암호화에 키를 활용하기 위한 호출 생성이 실패합니다.

중요

고객 관리형 키를 사용하여 정책 엔진을 암호화한 후에는 암호화에 다른 키를 사용하도록 리소스를 업데이트하거나 해당 정책 엔진에서 키를 제거할 수 없습니다.

AgentCore에서 정책과 함께 AWS KMS 및 데이터 키 사용

AgentCore 저장 시 암호화의 정책 기능은 KMS 키와 데이터 키 계층 구조를 사용하여 리소스 데이터를 보호합니다.

참고

AgentCore의 정책은 대칭 AWS KMS 키만 지원합니다. 비대칭 KMS 키를 사용하여 AgentCore 리소스에서 정책을 암호화할 수 없습니다.

AgentCore의 정책은 권한 부여 기반 모델을 사용하여 고객 관리형 키에 액세스합니다. 고객 관리형 키로 정책 엔진을 생성할 때 AgentCore의 정책은 다음 단계를 수행합니다.

  1. AgentCore의 정책은 키를 검증하여 키가 ENCRYPT_DECRYPT 키 사용량이 있는 대칭 암호화 키이고 Enabled 상태인지 확인합니다.

  2. AgentCore의 정책은 사용자를 대신하여 두 개의 AWS KMS 권한을 생성합니다. 이러한 권한 부여를 생성하려면 AgentCore의 정책이 전달 액세스 세션(FAS)을 통해 자격 증명을 kms:CreateGrant 사용하여를 호출합니다. CreateGrant 호출은 FAS를 통해 자격 증명으로 이루어지기 때문에 AWS KMS 키 정책은 AWS 계정 보안 주체(서비스 보안 주체 아님)에게 kms:CreateGrant 권한을 부여해야 합니다. 그러면 권한 부여 자체를 통해 AgentCore의 정책이 추가 호출자 개입 없이 사용자를 대신하여 암호화 작업을 수행할 수 있습니다.

  3. 모든 정책 데이터(정책, 정책 생성 및 정책 엔진 아래의 관련 리소스)는 고객 관리형 키를 사용하여 암호화됩니다.

두 권한 부여는 서로 다른 목적을 제공합니다.

정책 관리 권한 부여

정책 데이터를 관리하는 데 사용됩니다. 이 권한 부여를 통해 정책 및 관련 리소스를 생성, 읽기, 업데이트 및 삭제하기 위한 데이터 키 작업을 암호화, 복호화 및 생성할 수 있습니다.

정책 평가 권한 부여

런타임 정책 평가에 사용됩니다. 이 권한 부여는 정책 엔진이 수신되는 권한 부여 요청에 대해 Cedar 정책을 평가할 수 있도록 복호화 및 재암호화 작업을 허용합니다.

두 권한 부여 모두 특정 정책 엔진 리소스에 권한 부여를 바인aws:bedrock-agentcore-policy:policy-engine-arn딩하는 키를 사용하여 암호화 컨텍스트에 의해 제한됩니다.

고객 관리형 키를 사용하여 정책 엔진을 삭제하면 AgentCore의 정책이 두 권한 부여를 모두 자동으로 사용 중지합니다.

중요

권한 부여를 수동으로 취소해야 하는 경우 항상 정책 관리 권한 부여와 정책 평가 권한 부여를 모두 취소합니다. 권한 부여를 하나만 취소해도 키에 대한 서비스의 액세스 권한이 완전히 제거되지 않으므로 동작이 일관되지 않을 수 있습니다. AWS KMS 콘솔 또는 list-grants AWS CLI 명령을 사용하여 키에 대한 권한 부여를 보고 관리할 수 있습니다.

AgentCore의 정책에 대한 AWS KMS 키 사용 권한 부여

AgentCore에서 정책과 함께 고객 관리형 키를 사용하려면 AWS KMS 키 정책이 AWS 계정에 권한을 부여해야 합니다. 정책 엔진을 생성할 때 AgentCore의 정책은 전달 액세스 세션(FAS)을 통해 자격 증명을 kms:CreateGrant 사용하여를 호출합니다. 따라서 키 정책은 계정 보안 주체(서비스 보안 주체 아님)에게 kms:CreateGrant 및 기타 필요한 권한을 부여하고 kms:ViaService 조건을 사용하여 키가 AgentCore의 정책을 통해서만 사용되는지 확인해야 합니다.

최소한 AgentCore의 정책에는 고객 관리형 키에 대한 다음 권한이 필요합니다.

  • kms:CreateGrant - 암호화, 복호화, 데이터 키 생성, 재암호화 및 키 작업 설명에 대한 권한 부여 생성

  • kms:Decrypt - 키로 암호화된 데이터 복호화

  • kms:GenerateDataKey - 정책 데이터를 암호화하기 위한 데이터 키 생성

  • kms:DescribeKey - 키 메타데이터를 검색하여 키 구성 검증

소스 컨텍스트 이해

소스 컨텍스트는 지정된 키에 대해 AWS KMS 작업을 수행하려고 시도하는 소스 호출자에 대한 정보를 제공합니다. 이렇게 하면 데이터 소스에 컨텍스트를 바인딩하여 암호화된 데이터의 혼동 또는 오용을 방지할 수 있습니다.

AgentCore의 정책이 사용자를 대신하여 권한 부여를 통해 AWS KMS 작업을 수행할 때 소스 컨텍스트는 요청을 시작한 AgentCore 리소스의 정책을 식별합니다. 소스 컨텍스트를 키 정책의 권한 부여 기반 작업에 대한 추가 조건으로 사용하여 키 사용을 특정 계정 또는 리소스에서 시작된 요청으로 제한할 수 있습니다.

참고

소스 컨텍스트 조건( aws:SourceAccountaws:SourceArn )은 권한 부여 기반 AWS KMS 작업에서는 사용할 수 있지만 전달 액세스 세션을 사용하는 kms:CreateGrant 통화에서는 사용할 수 없습니다.

예를 들어 키 정책의 KMS 작업 및 검증 문에 aws:SourceAccountaws:SourceArn 조건을 추가하여 요청이 계정 및 정책 엔진 리소스에서 시작된 경우에만 이러한 작업이 성공하도록 할 수 있습니다.

{ "Sid": "Allow Policy for KMS operations with source context", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com", "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:policy-engine/*", "kms:EncryptionContext:aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws*:bedrock-agentcore:*:*:policy-engine/*" } } }

이 키 정책은 소스 계정이이 AWS KMS 키가 있는 계정과 동일한 경우 AgentCore의 정책이 권한 부여를 통해 사용자를 대신하여 KMS를 호출하도록 허용합니다. CloudTrail 감사 로그에서 KMS 키를 확인할 때 이러한 값을 확인할 수 있어야 합니다. 전역 AWS 조건 키에 대한 자세한 내용은 AWS KMS 개발자 안내서의 aws:SourceArn 또는 aws:SourceAccount 조건 키 사용을 참조하세요.

kms:ViaService 이해

kms:ViaService 조건 키는 KMS 키 사용을 지정된 AWS 서비스의 요청으로 제한합니다. 이 조건 키는 전달 액세스 세션(FAS)에 적용됩니다. 에 대한 자세한 내용은 AWS KMS 개발자 안내서의 kms:ViaServicekms:ViaService 참조하세요.

키 정책에서 kms:ViaService 값은 형식을 따릅니다bedrock-agentcore.REGION.amazonaws.com. 여기서 REGION은 정책 엔진이 생성된 AWS 리전입니다(예: bedrock-agentcore.us-east-1.amazonaws.com ).

암호화 컨텍스트 이해

암호화 컨텍스트는 암호화 무결성 검사를 위한 추가 인증 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하면 AWS KMS는 암호화 컨텍스트를 암호화된 데이터에 암호화 방식으로 바인딩합니다. 데이터를 해독하려면 동일한 암호화 컨텍스트를 전달해야 합니다. 자세한 내용은 AWS KMS 개발자 안내서의 암호화 컨텍스트를 참조하세요.

AgentCore의 정책은 모든 AWS KMS 암호화 작업에서 다음 암호화 컨텍스트를 사용하며 AgentCore의 정책이 암호화 및 복호화 프로세스를 위해 사용자를 대신하여 AWS KMS를 호출할 때 CloudTrail 로그 내에서 확인할 수 있습니다.

{ "aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:policy-engine/POLICY_ENGINE_ID" }

키 정책 조건에서이 암호화 컨텍스트를 사용하여 키를 사용할 수 있는 정책 엔진을 제한할 수 있습니다. 예를 들어 다음 섹션의 키 정책은 kms:EncryptionContext 조건을 사용하여 키를 정책 엔진 리소스에만 사용하도록 허용합니다.

전체 AWS KMS 키 정책

다음 예제 키 정책은 이전 섹션의 개념을 기반으로 정책 엔진을 암호화하고 암호화된 정책 엔진을 사용하는 데 필요한 권한을 제공합니다. 정책에는 보안 모범 사례를 준수하는 조건 키가 포함되어 있습니다.

중요

키 정책에서 다음 값을 바꿉니다. * 111122223333 - AWS 계정 ID로 바꿉니다. * us-east-1 - AWS 리전으로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Policy to create grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com", "kms:GrantConstraintType": "EncryptionContextSubset" }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws*:bedrock-agentcore:*:*:policy-engine/*" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "Decrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo" ] } } }, { "Sid": "Allow Policy for KMS operations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws*:bedrock-agentcore:*:*:policy-engine/*" } } }, { "Sid": "Allow Policy for KMS validation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com" } } } ] }

정책에는 다음 명령문이 포함되어 있습니다.

정책이 권한 부여를 생성하도록 허용

정책 엔진을 생성할 때 호출자가 AWS KMS 권한을 생성하도록 허용합니다. kms:GrantConstraintType 조건은 권한 부여가 암호화 컨텍스트에 의해 제한되도록 합니다. 의 ForAllValues:StringEquals 조건은 AgentCore의 정책에 필요한 암호화 작업으로만 권한 부여를 kms:GrantOperations 제한합니다.

KMS 작업에 대한 정책 허용

호출자가 AgentCore의 정책을 통해 복호화를 수행하고 데이터 키 작업을 생성할 수 있도록 허용합니다. 암호화 컨텍스트 조건은 이러한 작업의 범위가 정책 엔진 리소스로 지정되도록 합니다.

KMS 검증을 위한 정책 허용

호출자가 AgentCore의 정책을 통해 키를 설명할 수 있도록 허용합니다. 이 권한은 정책 엔진 생성 중에 키가 요구 사항(대칭, 활성화, 올바른 키 사용)을 충족하는지 확인하는 데 사용됩니다.

중요

AgentCore의 정책에서 이미 사용 중인 키에 대한 AWS KMS 키 정책을 수정할 때는 주의해야 합니다. 키 정책에서 필요한 권한을 실수로 제거하는 경우 AgentCore의 정책은 더 이상 정책 데이터를 해독할 수 없으며 모든 권한 부여 결정이 거부됩니다. 암호화된 데이터에 액세스해야 하는 모든 작업(예: 정책 생성, 읽기, 업데이트 또는 삭제)도 실패합니다.

정책 엔진을 암호화하기 위한 사전 조건

정책 엔진을 암호화하기 전에 다음 사전 조건을 충족했는지 확인합니다.

  • KMS 키에 액세스할 수 있습니다. KMS 키 생성에 대한 자세한 내용은 KMS 개발자 안내서의 KMS 키 생성을 참조하세요. AWS

  • KMS 키는 키 사용량이 있는 대칭 암호화 ENCRYPT_DECRYPT 키여야 합니다.

  • KMS 키는 활성화됨 상태여야 합니다.

  • KMS 키에는 필요한 권한을 부여하는 키 정책이 연결되어 있습니다. 필수 키 정책은 전체 AWS KMS 키 정책을 참조하세요.

KMS 키에 대한 IAM 권한 제어에 대한 자세한 내용은 KMS 개발자 안내서의 KMS 키 액세스 및 권한을 참조하세요. AWS

암호화된 정책 엔진 생성

암호화된 정책 엔진을 생성하기 전에 사용 중인 고객 관리형 키에 AgentCore의 정책이 암호화 및 복호화에 키를 사용하도록 설정된 적절한 키 정책 문이 있는지 확인합니다. 필요한 권한은 AgentCore의 정책에 대한 AWS KMS 키 사용 권한 부여를 참조하세요.

AWS CLI를 사용하여 정책 엔진을 암호화하려면 create-policy-engine 요청을 보낼 때 --encryption-key-arn 파라미터를 포함합니다.

aws bedrock-agentcore-control create-policy-engine \ --name "MyPolicyEngine" \ --description "Policy engine with customer-managed encryption" \ --encryption-key-arn "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"

응답에는 정책 엔진 ARN 및 상태가 포함됩니다.

{ "policyEngineId": "MyPolicyEngine-abc123", "name": "MyPolicyEngine", "description": "Policy engine with customer-managed encryption", "policyEngineArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/MyPolicyEngine-abc123", "status": "CREATING", "statusReasons": [], "encryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "createdAt": "2026-02-24T12:00:00Z", "updatedAt": "2026-02-24T12:00:00Z" }
참고

잘못된 KMS 키 정책으로 인해 정책 엔진에서 사용 중인 AWS KMS 키가 삭제, 비활성화 또는 액세스할 수 없는 경우 리소스 복호화가 실패합니다. 이로 인해 권한 부여 결정이 거부될 수 있습니다. 액세스 손실은 상황에 따라 일시적(키 정책을 수정할 수 있음)이거나 영구적(삭제된 키를 복원할 수 없음)일 수 있습니다. KMS 키 삭제 또는 비활성화와 같은 중요한 작업에 대한 액세스를 제한하는 것이 좋습니다. 또한 AgentCore AWS 의 정책에 액세스할 수 없는 경우 권한이 있는 사용자가에 액세스할 수 있도록 조직에서 AWS 브레이크 글래스 액세스 절차를 설정하는 것이 좋습니다.

제한 사항

정책 엔진의 고객 관리형 키 암호화에는 다음 제한 사항이 적용됩니다.

  • 일단 활성화되면 정책 엔진에 대한 암호화를 비활성화할 수 없습니다.

  • 암호화 없이 정책 엔진을 생성한 후에는 정책 엔진을 업데이트하여 고객 관리형 키로 암호화할 수 없습니다.

  • 고객 관리형 키로 정책 엔진을 생성한 후에는 키를 변경하거나 해당 정책 엔진에서 제거할 수 없습니다. 다른 키를 사용하려면 새 정책 엔진을 생성해야 합니다.

  • 고객 관리형 키 암호화는 정책 엔진 수준에서 구성됩니다. 정책 및 정책 생성을 포함하여 정책 엔진의 모든 리소스는 정책 엔진과 동일한 고객 관리형 키를 사용하여 암호화됩니다. 정책 엔진 내의 개별 리소스에 대해 다른 키를 지정할 수 없습니다.

  • AgentCore의 기존 암호화된 정책 엔진에 대한 고객 관리형 키 액세스에서 정책을 취소하면 정책 엔진이 더 이상 정책 데이터를 해독할 수 없으므로 모든 권한 부여 결정이 거부됩니다.

문제 해결

이 섹션에서는 AgentCore에서 정책을 사용할 때 발생할 수 있는 일반적인 고객 관리형 키 관련 오류를 설명하고 이를 해결하기 위한 문제 해결 단계를 제공합니다.

액세스 거부: AWS KMS 권한 문제

오류: "지정된 KMS 키에 대한 액세스가 거부되었습니다. 키 정책이 필요한 권한을 부여하는지 확인합니다.”

이는 호출자에게 IAM 정책 또는 AWS KMS 키 정책에 필요한 kms:* 작업 권한이 없거나 참조되는 키가 존재하지 않거나 더 이상 존재하지 않음을 의미할 수 있습니다.

이 문제를 해결하는 방법:

  1. KMS 키 ARN이 올바르고 키가 지정된 리전에 존재하는지 확인합니다.

  2. AWS KMS 키 정책에 필수 문이 포함되어 있는지 확인합니다. 전체 AWS KMS 키 정책을 참조하세요.

  3. 호출자의 IAM 정책에 필요한 AWS KMS 권한(, kms:CreateGrant , kms:Decrypt kms:GenerateDataKey, kms:DescribeKey )이 포함되어 있는지 확인합니다.

  4. CloudTrail에서 kms.amazonaws.com 이벤트를 확인하여 거부된 작업과 시도한 보안 주체를 식별합니다.

검증 예외: AWS KMS 키 구성

오류: "지정된 KMS 키가 사용 가능한 상태가 아닙니다. 키가 활성화되어 있고 삭제 보류 중이 아닌지 확인합니다.”

즉, 현재 구성으로 인해 참조되는 키를 고객 관리형 키 암호화에 사용할 수 없습니다. 가능한 이유는 다음과 같습니다.

  • 키가 비활성화되었거나 삭제 보류 중입니다.

  • 키는 대칭 암호화 키가 아닙니다.

  • 키에는 ENCRYPT_DECRYPT 키 사용량이 없습니다.

이 문제를 해결하려면: 키가 정책 엔진을 암호화하기 위한 사전 조건에 설명된 사전 조건을 충족하는지 확인합니다.