Amazon EC2 Auto Scaling을 사용하여 암호화된 AMI 또는 암호화된 볼륨으로 EC2 인스턴스를 시작할 수 없습니다.

최종 업데이트 날짜: 2021년 10월 12일

Amazon Elastic Compute Cloud(Amazon EC2) Auto Scaling이 암호화된 Amazon Machine Image(AMI) 또는 암호화된 볼륨을 사용하여 인스턴스를 시작하지 못했습니다. Amazon EC2 Auto Scaling을 생성하는 데 사용하는 AWS Identity and Access Management(IAM) 자격 증명(사용자, 역할)에는 관리자 권한이 있습니다.

간략한 설명

Amazon EC2 Auto Scaling은 다른 AWS 서비스를 호출하는 데 필요한 권한에 대한 서비스 연결 역할을 사용합니다. SLR에 대한 권한은 AWS에서 하드 코딩하므로 변경할 수 없습니다. 기본적으로 Amazon EC2 Auto Scaling SLR에 제공되는 권한에는 AWS KMS 키에 액세스할 수 있는 권한이 포함되어 있지 않습니다.

AWS 관리형 키 또는 고객 관리형 키를 사용하여 Amazon EC2 Auto Scaling으로 Amazon Elastic Block Store(Amazon EBS) 볼륨 또는 AMI를 암호화할 수 있습니다. Amazon EC2 Auto Scaling에서는 AWS 관리형 키를 사용하기 위해 추가 권한이 필요하지 않습니다. 그러나 Amazon EC2 Auto Scaling SLR에는 고객 관리형 키에 대한 추가 권한이 필수입니다.

해결 방법

Amazon EC2 Auto Scaling이 동일 또는 외부 AWS 계정에 있는 고객 관리형 키를 사용하는지 여부에 따라 다음 지침을 따르세요.

참고:

Amazon EC2 Auto Scaling은 동일한 AWS 계정에 있는 고객 관리형 키를 사용하고 있습니다.

키 정책 변경에 대한 지침에 따라 다음 예시 문을 추가합니다.

참고: 123456789012를 Amazon EC2 Auto Scaling 그룹이 배포된 계정 ID로 바꿉니다.

{
    "Sid": "Allow service-linked role use of the KMS",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "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::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "Action": [
        "kms:CreateGrant"
    ],
    "Resource": "*",
    "Condition": {
        "Bool": {
            "kms:GrantIsForAWSResource": true
        }
    }
}

Amazon EC2 Auto Scaling은 외부 AWS 계정에 있는 고객 관리형 키를 사용하고 있습니다.

1.    키 정책 변경에 대한 지침을 따릅니다. 외부 AWS 계정에 있는 IAM 엔터티에 권한을 부여하도록 키 정책을 수정하여 CreateGrant API 작업을 수행합니다.

{
    "Sid": "Allow external account 111122223333 use of the KMS",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::111122223333:root"
        ]
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
},
{
    "Sid": "Allow attachment of persistent resources in external account 111122223333",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::111122223333:root"
        ]
    },
    "Action": [
        "kms:CreateGrant"
    ],
    "Resource": "*"
}

2.    Amazon EC2 Auto Scaling 그룹을 소유한 AWS 계정에 있는 IAM 엔터티의 자격 증명과 함께 AWS CLI 명령 create-grant를 사용합니다.

참고: 444455556666을 KMS 키가 있는 계정 ID로 바꿉니다.

$ aws kms create-grant --key-id arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling --operations Decrypt GenerateDataKeyWithoutPlaintext ReEncryptFrom ReEncryptTo CreateGrant

참고: IAM 엔터티에 CreateGrant API 작업을 수행할 수 있는 권한이 있는지 확인합니다. CreateGrant 권한이 누락된 경우 IAM 엔터티의 연결된 정책에 다음 문을 추가합니다.

{
      "Sid": "AllowCreationOfGrantForTheKMSinExternalAccount444455556666",
      "Effect": "Allow",
      "Action": "kms:CreateGrant",
      "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d"
}