다른 계정에서 공유한 암호화된 AMI를 Auto Scaling 그룹에서 사용하려면 어떻게 해야 합니까?

3분 분량
0

다른 AWS 계정에서 공유한 암호화된 Amazon Machine Image(AMI)를 AWS Auto Scaling 그룹에서 사용하려고 합니다. AMI는 AWS Key Management Service(AWS KMS) 고객 관리형 키로 암호화됩니다.

간략한 설명

AWS KMS 키에 대한 AWS KMS 키 정책은 사용자 계정의 AWS Identity and Access Management(IAM) ID가 AMI를 사용하여 인스턴스를 시작할 수 있도록 허용해야 합니다. 인스턴스를 시작하기 위해 Auto Scaling 그룹은 서비스 연결 역할(SLR)에서 부여하는 권한을 사용합니다.

Auto Scaling 그룹에서 암호화된 AMI를 사용하려면 KMS 키 정책이 다음 역할에 대한 액세스 권한을 제공해야 합니다.

  • 계정의 Auto Scaling 그룹과 연결된 SLR
  • SLR이 키를 사용할 수 있도록 허용하는 권한 부여를 생성하기 위한 계정의 IAM ID

해결 방법

Auto Scaling 그룹에서 암호화된 AMI를 사용하려면 다음 단계를 수행하십시오.

  1. AMI를 암호화하는 KMS 키와 연결된 KMS 키 정책을 수정합니다.
  2. SLR이 키를 사용할 수 있도록 권한 부여를 생성합니다.

KMS 키 정책 수정

다음 단계를 완료하십시오.

  1. 암호화된 AMI를 공유하는 계정에서 AWS KMS 콘솔을 열고 KMS 키를 선택합니다.

  2. Key Policy(키 정책) 섹션에서 계정의 Auto Scaling 그룹에서 사용되는 SLR에 대해 다음과 같은 권한을 추가합니다.

    kms:Encrypt
    kms:Decrypt
    kms:ReEncrypt*
    kms:GenerateDataKey*
    kms:DescribeKey
  3. 계정에서 권한 부여를 생성하려면 kms:CreateGrant, kms:ListGrantskms:RevokeGrant 권한을 키 정책에 추가해야 합니다. 또한 정책에는 Allow use of the keyAllow 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 구문에 이 조건 키가 포함되지 않도록 해야 합니다.

SLR에 대한 권한 부여 생성

참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

권한 부여를 통해 계정의 SLR이 소스 계정의 KMS 키를 사용하여 암호화 작업을 수행할 수 있습니다.

계정에서, 키 정책에 지정된 DESTINATION_USER에서 create-grant AWS CLI 명령을 실행합니다.

aws kms create-grant --key-id [X] \
--grantee-principal [Y] \
--operations Decrypt Encrypt GenerateDataKey GenerateDataKeyWithoutPlaintext \
ReEncryptFrom ReEncryptTo CreateGrant DescribeKey

참고: **[X]**를 소스 계정 KMS 키 ARN으로 바꾸고 **[Y]**를 계정의 SLR ARN으로 바꾸십시오.

관련 정보

암호화된 볼륨과 함께 사용하기 위한 필수 AWS KMS 키 정책

AWS 공식
AWS 공식업데이트됨 4달 전
댓글 없음

관련 콘텐츠