기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
고객 관리형 키 정책 설정
AWS 에이전트 레지스트리에서 고객 관리형 키를 사용하려면 호출 보안 주체에 대한 IAM 정책과 서비스가 암호화 및 복호화 작업을 수행하도록 허용하는 KMS 키 정책을 모두 구성해야 합니다.
사전 조건
고객 관리형 키로 레지스트리를 생성하기 전에 다음을 확인하세요.
필수 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의 서비스 연결 역할에 런타임 시 키를 사용할 수 있는 권한을 부여합니다. 서비스는이 역할을 사용하여 사용자를 대신하여 레코드 설명자를 암호화하고 해독합니다.
이 문을 추가하려면 순서가 지정된 두 단계가 필요합니다.
-
먼저 계정에서 서비스 연결 역할을 생성합니다. 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. 요청은 계정당 한 번만 하면 됩니다. -
그런 다음 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.