계정에서 권한 부여를 생성하려면 kms:CreateGrant, kms:ListGrants 및 kms:RevokeGrant 권한을 키 정책에 추가해야 합니다. 또한 정책에는 Allow use of the key 및 Allow attachment of persistent resources 구문도 포함되어야 합니다.
다음은 키 정책의 예입니다. SOURCE_ACCOUNT는 암호화된 AMI를 공유하는 계정의 ID로 바꾸고 DESTINATION_ACCOUNT는 사용자 계정의 ID로 바꾸십시오.
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SOURCE_ACCOUNT:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SOURCE_ACCOUNT:user/AdminUser"
},
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*",
"kms:List*",
"kms:Put*",
"kms:Update*",
"kms:Revoke*",
"kms:Disable*",
"kms:Get*",
"kms:Delete*",
"kms:TagResource",
"kms:UntagResource",
"kms:ScheduleKeyDeletion",
"kms:CancelKeyDeletion"
],
"Resource": "*"
},
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::DESTINATION_ACCOUNT:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling",
"arn:aws:iam::SOURCE_ACCOUNT:user/AdminUser"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
},
{
"Sid": "Allow attachment of persistent resources",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::DESTINATION_ACCOUNT:user/DESTINATION_USER",
"arn:aws:iam::SOURCE_ACCOUNT:user/AdminUser"
]
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*"
}
]
}
참고: AWS Management Console을 사용하여 KMS 키를 생성하고 외부 계정 ID를 사용자로 포함하면 키 정책에서 kms:GrantIsForAWSResource를 자동으로 적용합니다. kms:GrantIsForAWSResource 조건 키는 사용자가 SLR에 대한 권한 부여를 생성하는 것을 허용하지 않습니다. 키 정책에서 Allow attachment of persistent resources 구문에 이 조건 키가 포함되지 않도록 해야 합니다.