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

3분 분량
0

Amazon Machine Image(AMI)를 다른 AWS 계정 또는 AWS 리전에 복사했습니다. 하지만 복사한 AMI에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작할 수 없습니다.

간단한 설명

다음 권한이 없는 경우, 암호화된 Amazon Elastic Block Store(Amazon EBS)가 있는 복사된 AMI에서 인스턴스를 시작할 수 없습니다.

  • AWS Key Management Service(AWS KMS) 고객 관리 키 정책에 요청 계정이 AMI에 액세스할 수 있도록 허용하는 올바른 주체가 누락되어 있습니다.
  • 요청 계정의 AWS ID 및 액세스 관리(IAM) 엔티티에 볼륨의 계정 간 AWS KMS 키에 필요한 AWS KMS 권한이 없습니다.

해결 방법

복사한 AMI에서 기존 AWS KMS 사용자 지정 키에 대한 크로스 계정 액세스를 사용 설정합니다.

자세한 지침은 AWS 키 관리 서비스를 사용하여 계정 간에 사용자 지정 암호화 키를 더 안전하게 공유하기를 참조하세요.

EC2 인스턴스가 AWS KMS 키에 액세스할 수 있는 권한을 설정합니다.

1.    AWS KMS 콘솔을 엽니다.
참고: 올바른 리전에 있는지 확인합니다.

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

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

4.    키 사용자 섹션에 누락된 계정 또는 사용자가 있으면 키 정책에서 정책 보기로 전환을 선택합니다.
참고: 어느 시점에 AWS KMS 키 정책을 수동으로 편집한 경우, 키 정책은 정책(JSON) 보기에서만 사용할 수 있습니다.

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

다음은 기본 키 정책에 있는 키 사용 허용 문의 예제 코드 조각입니다. 이 예에는 다음과 같은 ARN이 포함되어 있습니다.

  • 복사된 AMI가 포함된 외부 AWS 계정.
  • AMI의 부모 계정.
  • 외부 계정 내의 사용자.

전체 기본 키 정책에 대한 개요 및 예는 기본 키 정책을 참조하세요.

{
	"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 사용자 또는 그룹에 연결하기

IAM 정책을 생성하여 IAM 사용자 또는 그룹에 연결하려면 다음 단계를 완료합니다.

참고: 이미 IAM 정책을 생성한 경우 7단계로 진행하여 정책을 연결합니다.

1.    관리자 권한이 있는 사용자로 IAM 콘솔을 엽니다.

2.    정책을 선택합니다.

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

4.    JSON 탭을 선택합니다. 다음 예제 JSON 정책을 복사한 다음 JSON 텍스트 상자에 입력합니다. arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE를 AWS KMS 키의 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.    검색 상자에 사용자 아이디를 입력합니다. 그런 다음 사용자 아이디 옆에 있는 확인란을 선택합니다.

12.    정책 연결을 선택합니다.

관련 정보

AMI 복사

키 편집

자습서: 첫 번째 고객 관리 정책 생성 및 연결

IAM 정책 유효성 검사

AWS 공식
AWS 공식업데이트됨 9달 전