복사한 AMI에서 EC2 인스턴스를 시작할 수 없는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 9월 10일

Amazon Machine Image(AMI)를 다른 계정 또는 리전에 복사했습니다. 복사된 AMI에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작할 수 없습니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

암호화된 Amazon Elastic Block Store(Amazon EBS)를 사용하여 복사된 AMI에서 인스턴스를 시작하지 못하는 이유는 다음과 같을 수 있습니다.

  • AWS Key Management Service(KMS) 고객 관리 키(CMK) 정책에 요청 계정의 액세스를 허용하는 적절한 보안 주체가 누락되어 있습니다.
  • 요청 계정의 AWS Identity and Access Management(IAM) 엔터티에 볼륨의 교차 계정 CMK에 필요한 KMS 권한이 없습니다.

​해결방법

복사된 AMI에서 기존 KMS 사용자 지정 키에 대한 교차 계정 액세스 활성화

자세한 지침은 AWS Key Management Service를 사용하여 계정 간에 사용자 지정 암호화 키를 보다 안전하게 공유에서 기존 사용자 지정 키에 대한 교차 계정 액세스를 활성화하는 방법을 참조하십시오.

KMS 키에 액세스할 수 있도록 EC2 인스턴스에 대한 권한 설정

1.    AWS KMS 콘솔을 엽니다.

참고: 올바른 리전에 있는지 확인하십시오.

2.    [고객 관리형 키]를 선택한 다음 적절한 키를 선택합니다.

3.    [키 정책]에서 [키 사용자]가 나타날 때까지 아래로 스크롤합니다. [키 사용자] 섹션에 키에 액세스해야 하는 모든 내부 및 외부 계정과 사용자가 나열되는지 확인합니다.

4.    [키 사용자] 섹션에 계정 또는 사용자가 누락된 경우 [정책 보기]를 선택합니다.

참고: AWS KMS CMK 키 정책을 수동으로 편집한 적이 있으면 정책(JSON) 뷰에서만 키 정책을 사용할 수 있습니다.

5.    키 정책의 키 사용 허용 문이 올바른지 확인합니다. 문에는 키에 액세스해야 하는 모든 계정 및 사용자의 ARN이 포함되어야 합니다.

다음은 기본 키 정책에서 키 사용 허용 문의 예제입니다. 다음 예제의 키 사용 허용 문에는 다음 ARN이 포함됩니다.

  • 복사된 AMI를 포함하는 외부 AWS 계정입니다.
  • AMI의 상위 계정입니다.
  • 외부 계정 내의 사용자입니다.

전체 기본 키 정책에 대한 개요와 예제는 AWS KMS - 기본 키 정책에서 키 정책 사용을 참조하십시오.

{
             "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root",
                    "arn:aws:iam::444455556666:root",
                    "arn:aws:iam::111122223333:user/UserA"
                ]
            },
            "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::111122223333:root",
                    "arn:aws:iam::444455556666:root",
                    "arn:aws:iam::111122223333:user/UserA"
                ]
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}
   

6.    IAM 정책을 아직 생성하지 않았다면 다음 섹션으로 진행하여 정책을 생성하고 할당합니다.

IAM 정책을 생성하여 IAM 사용자 또는 그룹에 연결

1.    관리자 권한이 있는 사용자로 IAM 콘솔에 로그인합니다.

2.    [정책]을 선택합니다.

3.    정책 생성을 선택합니다.

4.    [JSON] 탭을 선택합니다. 다음 샘플 JSON 정책을 복사한 후 JSON 텍스트 상자에 붙여 넣습니다. arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE을 CMK의 ARN으로 바꿉니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUseOfTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": [
                "arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE"
            ]
        },
        {
            "Sid": "AllowAttachmentOfPersistentResources",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": [
                "arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE"
            ],
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": true
                }
            }
        }
    ]
}

5.    [정책 검토]를 선택합니다. [정책 검사기]에서 구문 오류가 보고됩니다.

6.    [검토] 페이지에서 정책 이름으로 KmsKeyUsagePolicy를 입력합니다. 정책 [요약]을 검토하여 정책에서 부여한 권한을 확인한 다음 [정책 생성]을 선택하여 정책을 저장합니다. 새 정책이 관리형 정책의 목록에 표시되면 IAM 사용자 또는 그룹에 연결할 준비가 된 것입니다.

7.    IAM 콘솔의 탐색 창에서 [정책]을 선택합니다.

8.    정책 목록 상단의 검색 상자에 정책이 표시될 때까지 KmsKeyUsagePolicy를 입력합니다. 그런 다음 목록에서 KmsKeyUsagePolicy 옆에 있는 확인란을 선택합니다.

9.    [정책 작업]을 선택하고 [연결]을 선택합니다.

10.    [필터]에서 [사용자]를 선택합니다.

11.    사용자가 목록에 표시될 때까지 검색 상자에 [username]을 입력합니다. 그런 다음 목록에서 해당 사용자 옆에 있는 확인란을 선택합니다.

12.    [정책 연결(Attach Policy)]을 선택합니다.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?