암호화된 볼륨이 연결된 상태로 인스턴스를 시작하면 “시작 시 클라이언트 오류(client error on launch)”라는 오류가 발생하며 인스턴스가 즉시 중지됩니다.
암호화된 볼륨이 연결된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작했지만 인스턴스가 시작되지 않습니다. 인스턴스가 대기 중 상태에서 종료 중 상태로 즉시 전환된 다음 마지막으로 종료됨 상태로 전환됩니다. 종료된 인스턴스에서 AWS Command Line Interface(AWS CLI) 명령 describe-instances를 실행했는데 다음 오류가 발생합니다. ... "StateReason": { "Code": "Client.InternalError" "Message": "Client.InternalError: Client error on launch" }, ... 이를 해결하려면 어떻게 해야 합니까?
간략한 설명
이 문제는 다음의 경우에 암호화된 볼륨이 연결된 EC2 인스턴스에서 발생합니다.
- 인스턴스를 시작하는 AWS Key Management Service(AWS KMS) 또는 AWS Identity and Access Management(IAM) 사용자에게 필요한 권한이 없습니다.
- KMS 키 사용은 SourceIp 조건 키에 의해 제한됩니다.
AWS KMS 키를 복호화하려면 IAM 사용자에게 AWS KMS에 대한 권한이 있어야 합니다.
KMS 키를 복호화하기 위한 액세스를 허용하려면 IAM 정책 또는 권한 부여와 함께 키 정책을 사용해야 합니다. IAM 정책만으로는 KMS 키에 대한 액세스를 허용하기에 충분하지 않지만 KMS 키의 키 정책과 함께 사용할 수 있습니다.
기본적으로 KMS 키는 루트 계정에만 액세스 권한을 부여합니다. IAM 사용자 또는 역할에 EC2 전체 권한이 제공되는 경우 AWS KMS 권한은 KMS 키 정책에 대한 액세스 권한을 명시적으로 부여해야 합니다.
해결 방법
IAM 보안 주체가 AWS KMS API를 호출하도록 허용하는 IAM 정책 생성
참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
1. IAM 콘솔을 열고 **정책(Policies)**을 선택한 다음 **정책 생성(Create Policy)**을 선택합니다.
2. JSON 탭을 선택한 다음, **리소스(Resource)**에 대한 키 ARN을 사용해 이 정책을 복사하여 붙여넣습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:ReEncrypt*", "kms:Encrypt", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
3. **정책 검토(Review policy)**를 선택합니다.
4. **이름(Name)**에 의미 있는 이름을 입력한 다음 **정책 생성(Create policy)**을 선택합니다.
5. 4단계에서 생성한 정책을 선택합니다.
6. 정책 사용(Policy usage) 탭을 선택한 다음 **연결(Attach)**을 선택합니다.
7. **이름(Name)**에서 KMS 키에 대한 권한을 부여할 IAM 엔터티를 선택한 다음 **정책 연결(Attach policy)**을 선택합니다.
IAM 보안 주체에 KMS 키에 대한 명시적 액세스 권한 부여
1. AWS KMS 콘솔을 열고 **고객 관리형 키(Customer managed keys)**를 선택합니다.
2. **키 ID(Key ID)**에서 본인의 키 ID를 선택합니다.
3. **키 사용자(Key users)**에서 **추가(Add)**를 선택합니다.
4. **이름(Name)**에서 IAM 사용자 또는 역할을 선택한 다음 **추가(Add)**를 선택합니다.
참고: 기본 키 정책 대신 사용자 지정 키 정책을 사용하는 경우 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" } } }
IP 주소 조건 사용
AWS KMS를 사용하여 통합 서비스에서 사용자 데이터를 보호하는 경우, IP 주소 조건 연산자 또는 aws:SourceIp 조건 키를 동일한 액세스 정책 문에 지정할 때는 주의하세요. 암호화된 Amazon Elastic Block Store(Amazon EBS) 볼륨을 Amazon EC2 인스턴스에 연결하면 Amazon EC2가 AWS KMS에 요청을 전송합니다. 이 요청은 볼륨의 암호화된 데이터 키를 복호화합니다. 이 요청은 사용자의 IP 주소가 아니라 EC2 인스턴스와 연결된 IP 주소로부터 수신됩니다. 따라서 SourceIp 조건이 설정되어 있고 인스턴스가 실패하면 복호화 요청이 거부됩니다.
kms:ViaService 조건 키를 사용하십시오. AWS KMS가 사용자를 대신하여 해당 서비스의 상호 작용을 허용합니다. 보안 주체에게 KMS 키 및 통합 서비스를 사용할 권한이 있어야 합니다. 자세한 내용은 kms:ViaService 조건 키 제한을 참조하십시오.
참고: 로그온한 사용자가 있는 EC2 인스턴스는 이 조건과 상호 작용할 수 없으며 사용자를 대신하는 서비스만 이 조건과 상호 작용할 수 있습니다. 이 상호 작용은 사용자가 검토할 수 있도록 AWS CloudTrail 로그에 기록됩니다.
다음 예제에서는 API 호출에 대한 CloudTrail 항목이 AWS KMS에 만들어졌습니다. 이는 특정 IP 주소가 아닌 Amazon EC2 인프라에서 호출됩니다. AWS KMS가 Amazon EC2와 상호 작용하도록 허용하는 정책을 사용자에게 추가하면 API 호출이 완료될 수 있습니다.
"userIdentity": { "sessionContext": { "sessionIssuer": { "accountId": "450822418798", "principalId": "450822418798:aws:ec2-infrastructure", "userName": "aws:ec2-infrastructure", "arn": "arn:aws:iam::450822418798:role/aws:ec2-infrastructure", "type": "Role" }, ... "eventType": "AwsApiCall", "@log_group": "CloudTrail/AllRegionLogGroup", "awsRegion": "eu-west-1", "requestParameters": { "encryptionContext": { "aws:ebs:id": "vol-0ca158925aa9c1883" } }
관련 정보
AWS KMS API를 호출할 때 연결된 데이터 암호화로 인증된 암호화가 사용되는지 확인하려면 어떻게 해야 합니까?
관련 콘텐츠
- 질문됨 7달 전lg...
- 질문됨 6일 전lg...
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 10달 전
- AWS 공식업데이트됨 6달 전