View a markdown version of this page

고객 관리형 키 정책 설정 - Amazon Bedrock AgentCore

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

고객 관리형 키 정책 설정

AWS 에이전트 레지스트리에서 고객 관리형 키를 사용하려면 호출 보안 주체에 대한 IAM 정책과 서비스가 암호화 및 복호화 작업을 수행하도록 허용하는 KMS 키 정책을 모두 구성해야 합니다.

사전 조건

고객 관리형 키로 레지스트리를 생성하기 전에 다음을 확인하세요.

  • 레지스트리와 동일한 AWS 리전에 대칭 암호화 KMS 키가 있습니다. KMS 키 생성에 대한 자세한 내용은 Key Management Service 개발자 안내서의 AWS 키 생성을 참조하세요.

  • IAM 보안 주체 호출에는 필요한 KMS 권한이 CreateRegistry 있습니다. 필수 IAM 권한을(를) 참조하세요.

필수 IAM 권한

암호화된 레지스트리와 상호 작용하려면 KMS 키에 대한 다음 권한이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryCMKAccess", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com" } } } ] }

다음 값을 교체합니다.

  • Resource - KMS 키의 ARN입니다.

  • kms:ViaService - us-east-1을 레지스트리의 AWS 리전으로 바꿉니다.

이 kms:ViaService 조건은 권한을 AWS 에이전트 레지스트리 서비스를 통해 이루어진 요청으로 제한하여 이러한 권한이 AWS 에이전트 레지스트리 외부에서 사용되지 않도록 합니다.

참고

IAM 정책 또는 키 정책을 통해 이러한 KMS 작업을 수행할 수 있는 권한이 있어야 합니다( 참조고객 관리형 키에 대한 키 정책). 키 정책에 IAM 정책을 활성화하는 기본 키 정책 문이 포함되어 있으면 IAM 정책으로 충분합니다.

고객 관리형 키에 대한 키 정책

다음 섹션에서는 AWS 에이전트 레지스트리에 필요한 KMS 키 정책 설명을 나열합니다. 서비스와 호출 보안 주체가 키를 사용할 수 있도록 KMS 키 정책에 이러한 문을 추가합니다. 키 정책에 IAM 정책을 활성화하는 기본 키 정책 문이 포함되어 있지 않거나 키가 다른 계정에 있는 경우 문을 추가해야 합니다.

중요

다음 섹션의 JSON 블록은 완전한 키 정책이 아닌 개별 정책 설명의 예입니다. 기존 KMS 키 정책을 대체하는 데 사용하지 마세요. 대신 조직의 페르소나와 서비스 연결 역할에 따라 필요한 문을 복사하여 기존 키 정책의 Statement 배열에 추가합니다. 정책을 저장하기 전에 환경과 일치하도록 각 문(계정 ID, 리전, 역할 ARN 및 레지스트리 ARN)의 값을 업데이트합니다.

키 정책은 조직의 레지스트리 페르소나를 기반으로 권한을 부여해야 합니다.

  • 관리자 - 레지스트리를 생성하고 암호화 구성을 관리합니다. kms:DescribeKey, kms:CreateGrant및 암호화/복호화 권한이 필요합니다.

  • 게시자 또는 승인자 - 레지스트리 레코드를 생성하고 업데이트합니다(레코드 설명자를 작성하고 읽음). 암호화 및 복호화 권한이 필요합니다.

  • 소비자 - 레지스트리 레코드 및 검색 결과를 읽습니다(레코드 설명자 읽기). 복호화 권한이 필요합니다.

AWS 에이전트 레지스트리가 런타임에 사용자를 대신하여 키를 사용할 수 서비스 연결 역할에 대한 정책 설명 있도록 페르소나 문 외에도를 추가합니다. AWS Resource Access Manager(AWS RAM)를 사용하여 AWS 조직의 다른 계정과 레지스트리를 공유하는 경우 도 추가합니다AWS RAM을 통한 조직 액세스에 대한 정책 설명.

참고

역할이 레코드 설명자(예: 레코드도 검색하는 게시자)를 모두 쓰고 읽는 경우에 표시된 대로 암호화 및 복호화 권한을 모두 부여합니다게시자에 대한 정책 설명.

관리자를 위한 정책 설명

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryAdminKeyValidation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryAdminRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com" } } }, { "Sid": "AllowRegistryAdminGrantCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryAdminRole" }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com" }, "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Sid": "AllowRegistryAdminCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryAdminRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/my-registry-id" } } } ] }
  • AllowRegistryAdminKeyValidation - 관리자가 키를 레지스트리와 함께 사용하기 전에 검증할 수 있습니다.

  • AllowRegistryAdminGrantCreation - 관리자가 레지스트리를 생성할 때 권한 부여를 생성할 수 있습니다. 이 kms:GrantIsForAWSResource 조건은 AWS 서비스가 호출자를 대신하여 권한 부여 생성을 시작할 때만를 사용할 kms:CreateGrant 수 있도록 합니다.

  • AllowRegistryAdminCryptoOps - 관리자가 암호화 컨텍스트를 통해 특정 레지스트리로 범위가 지정된 레코드 설명자를 암호화하고 해독할 수 있습니다.

게시자에 대한 정책 설명

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryPublisherCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryPublisherRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/my-registry-id" } } } ] }
  • AllowRegistryPublisherCryptoOps - 게시자와 승인자가 레코드 설명자를 암호화하고 해독할 수 있습니다. CreateRegistryRecord 및에 필요합니다UpdateRegistryRecord.

소비자를 위한 정책 설명

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistryConsumerDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RegistryConsumerRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "agent-registry.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/my-registry-id" } } } ] }
  • AllowRegistryConsumerDecrypt - 소비자가 레코드 설명자를 해독할 수 있습니다. GetRegistryRecord 및에 필요합니다SearchDiscoverableRegistryRecords.

서비스 연결 역할에 대한 정책 설명

AWS Agent Registry의 서비스 연결 역할에 런타임 시 키를 사용할 수 있는 권한을 부여합니다. 서비스는이 역할을 사용하여 사용자를 대신하여 레코드 설명자를 암호화하고 해독합니다.

이 문을 추가하려면 순서가 지정된 두 단계가 필요합니다.

  1. 먼저 계정에서 서비스 연결 역할을 생성합니다. AWS 에이전트 레지스트리는 역할을 생성하지 않습니다. KMS 키 정책 설명을 추가하기 전에 역할을 직접 생성해야 합니다. AWS CLI를 사용합니다.

    aws iam create-service-linked-role --aws-service-name agent-registry.amazonaws.com

    이렇게 하면에 AWSServiceRoleForAgentRegistry 역할이 생성됩니다arn:aws:iam::<account-id>:role/aws-service-role/agent-registry.amazonaws.com/AWSServiceRoleForAgentRegistry. 요청은 계정당 한 번만 하면 됩니다.

  2. 그런 다음 KMS 키 정책에 다음 문을 추가합니다. IAM은 아직 존재하지 않는 보안 주체를 참조하는 키 정책을 거부하므로 이름이 지정된 문에 붙여넣기 전에 역할이 있어야 합니다.

암호화 컨텍스트 와일드카드를 사용하여 계정의 레지스트리로 문의 범위를 지정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRegistrySlrCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/aws-service-role/agent-registry.amazonaws.com/AWSServiceRoleForAgentRegistry" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Encrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:agent-registry:registry-arn": "arn:aws:agent-registry:us-east-1:111122223333:registry/*" } } } ] }
  • AllowRegistrySlrCryptoOps - AWS Agent Registry의 서비스 연결 역할(AWSServiceRoleForAgentRegistry)이 kms:EncryptionContext:aws:agent-registry:registry-arn 조건을 통해 계정의 레지스트리로 범위가 지정된 레코드 설명자를 자동으로 암호화하고 해독할 수 있습니다.

AWS RAM을 통한 조직 액세스에 대한 정책 설명

AWS Resource Access Manager(AWS RAM)를 사용하여 customer-managed-key-encrypted 레지스트리를 AWS 조직의 다른 계정과 공유하는 경우이 문을 추가합니다. 조직의 모든 보안 주체에게 공유된 레지스트리에서 레코드 설명자를 해독할 수 있는 권한을 부여합니다. AWS RAM을 통해 레지스트리를 공유하지 않는 경우이 문은 필요하지 않습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOrganizationDecrypt", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-EXAMPLE1234" } } } ] }
  • AllowOrganizationDecrypt - AWS 조직의 모든 보안 주체가 AWS RAM을 통해 공유하는 레지스트리에서 레코드 설명자를 해독하도록 허용합니다. aws:PrincipalOrgID 조건은 명명된 조직의 멤버 계정에만이 권한의 범위를 지정합니다. 일치하는 조직 ID가 없으면는 아무 권한도 "Principal": "*" 부여하지 않습니다. 발신자에게는 공유 레지스트리 자체에 대한 해당 서비스 수준 IAM 권한이 여전히 필요합니다.

키 정책 설명의 값 바꾸기

각 키 정책 설명에서 다음 값을 바꿉니다.

  • Principal - 각 페르소나에 대한 IAM 사용자 또는 역할의 ARN입니다. 111122223333을 계정 ID로 바꾸고 역할 이름을 실제 IAM 역할로 바꿉니다. 서비스 연결 역할 문의 경우 111122223333을 계정 ID로 바꾸고 표시된 대로 역할 경로와 이름(aws-service-role/agent-registry.amazonaws.com/AWSServiceRoleForAgentRegistry)을 유지합니다. 이는 고정된 서비스 관리형 값입니다.

  • kms:ViaService - us-east-1을 레지스트리의 AWS 리전으로 바꿉니다.

  • kms:EncryptionContext:aws:agent-registry:registry-arn -를 레지스트리의 ARN으로 바꿉니다. 계정의 모든 레지스트리에 대한 액세스를 허용하려면 와일드카드와 StringLike 함께를 사용합니다arn:aws:agent-registry:us-east-1:111122223333:registry/*.

  • aws:PrincipalOrgID - AWS RAM 공유 문에서를 AWS 조직 IDo-EXAMPLE1234로 바꿉니다. AWS Organizations 콘솔에서 확인하거나를 실행할 수 있습니다aws organizations describe-organization --query 'Organization.Id' --output text.