암호화된 Amazon Elastic Block Store(Amazon EBS) 볼륨이 연결된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작했습니다. 하지만 EC2 인스턴스가 시작되거나 실행되지 않습니다.
간략한 설명
실행 문제가 있는 인스턴스는 시작 시 Pending(보류 중) 상태에서 **Shutting down(종료 중)**을 거쳐 Terminated(종료됨) 상태로 이동할 수 있습니다.
또는 AWS Command Line Interface(AWS CLI)의 describe-instances 명령 출력에서 다음 오류 메시지가 수신될 수 있습니다.
" "StateReason": { "Code": "Client.InternalError" "Message": "Client.InternalError: Client error on launch" }"
이 문제는 암호화에 사용한 AWS Key Management Service(AWS KMS) 키가 **Enable(사용)**으로 설정되지 않은 경우 발생합니다. 또는 인스턴스를 시작한 AWS Identity and Access Management(IAM) 사용자 또는 역할에 필요한 AWS KMS 권한이 없는 경우 발생합니다.
참고: IAM 사용자에게 완전한 Amazon EC2 권한이 있더라도 AWS KMS 키에 대한 액세스 권한을 별도로 부여해야 합니다.
IAM 문제를 해결하려면 AWS KMS 키에 대한 액세스를 허용하는 정책을 생성한 후 IAM 엔터티에 해당 정책을 연결하십시오. 또는 AWS KMS 키 사용자에 IAM 엔터티를 추가하십시오.
해결 방법
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
AWS KMS 키 상태 확인
AWS KMS 키가 Enable(활성화)로 설정되어 있는지 확인합니다.
AWS KMS 키에 대한 액세스를 허용하는 정책을 생성하고 IAM 엔터티에 연결
다음 IAM 정책을 생성합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:Encrypt",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
},
{
"Effect": "Allow",
"Action": "kms:CreateGrant",
"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
참고: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab를 사용 중인 AWS KMS 키의 Amazon 리소스 이름(ARN)으로 바꾸십시오.
그런 다음 정책을 IAM 역할 또는 사용자에게 연결하십시오.
AWS KMS 키 사용자에 IAM 엔터티 추가
다음 단계를 완료합니다.
- AWS KMS 콘솔을 엽니다.
- **AWS KMS console(AWS KMS 콘솔)**을 엽니다.
- **Key ID(키 ID)**에서 사용 중인 키 ID를 선택합니다.
- **Key users(키 사용자)**에서 **Add(추가)**를 선택합니다.
- **Name(이름)**에서 해당 IAM 사용자 또는 역할을 선택한 다음, **Add(추가)**를 선택합니다.
참고: 기본 키 정책은 AWS 계정에 대한 액세스를 허용합니다. 대신 사용자 지정 키 정책을 사용하는 경우, 해당 AWS KMS 키 정책에서 다음 권한을 명시적으로 허용해야 합니다.
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:role/MyRoleName",
"arn:aws:iam::123456789012:user/MyUserName"
]
},
"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/MyRoleName",
"arn:aws:iam::123456789012:user/MyUserName"
]
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
}
참고: arn:aws:iam::123456789012:role/MyRoleName을 사용 중인 IAM 역할 ARN으로, arn:aws:iam::123456789012:user/MyUserName을 사용 중인 IAM 사용자 ARN으로 바꾸십시오.
관련 정보
데이터 암호화를 통한 인증된 암호화가 AWS KMS API 직접 호출에 사용되었는지 어떻게 확인할 수 있습니까?
AWS KMS 내의 키 정책
Amazon Elastic Block Store(Amazon EBS)가 AWS KMS를 사용하는 방법