사용자 지정 AWS KMS 키를 사용하여 암호화된 EBS 볼륨을 생성하거나 연결할 수 없는 이유는 무엇입니까?
최종 업데이트 날짜: 2020년 9월 1일
AWS Key Management Service(AWS KMS) 고객 관리형 키로 암호화된 스냅샷에서 암호화된 Amazon Elastic Block Store(Amazon EBS) 볼륨을 생성하거나 연결할 수 없는 이유는 무엇입니까?
간략한 설명
스냅샷과 스냅샷을 암호화하는 데 사용한 사용자 지정 KMS 키가 같은 계정에 있고 키 정책에 누락된 권한이 있으면 암호화된 스냅샷에서 암호화된 EBS 볼륨을 생성하거나 연결하지 못할 수도 있습니다. KMS 키 정책에서 AWS Identity and Access Management(IAM) 사용자 또는 역할을 허용해야 합니다.
해결 방법
AWS CloudTrail 이벤트 기록을 사용하여 정책에서 누락된 권한 확인
1. CloudTrail 콘솔을 엽니다.
2. [이벤트 기록(Event history)]을 선택하고 [시간 범위(Time range)]에 AttachVolume 또는 CreateVolume API 호출이 실행된 시간을 포함하는 15분간의 기간을 입력합니다.
3. [필터(Filter)]를 선택하고 [이벤트 소스(Event source)]를 선택한 다음 kms.amazonaws.com을 입력합니다.
4. 결과가 로드된 후 콘솔의 오른쪽 상단에 있는 [다운로드(download)] 버튼을 선택한 다음 [CSV 다운로드(Download CSV)]를 선택합니다.
5. 방금 다운로드한 파일을 열고 [오류 코드(Error code)] 열에서 AccessDenied로 필터링합니다. AccessDenied 오류 코드가 포함된 모든 [이벤트 이름(Event names)]은 일반적으로 권한 누락 문제입니다.
참고: CloudTrail 이벤트는 최대 15분 후에야 [이벤트 기록(Events history)] 탭에 표시됩니다. CreateVolume 또는 AttachVolume 실패 상태가 수신된 직후에 [이벤트 기록(Events history)]을 확인하면 이벤트가 표시되지 않을 수도 있습니다.
누락된 권한을 확인한 후 다음 해결 방법을 따라 문제를 해결하십시오.
KMS 키 정책에 볼륨 연결 또는 생성을 시도하는 IAM 사용자 또는 역할이 포함되어 있는지 확인
AWS KMS 콘솔의 기본 뷰에서 다음을 수행합니다.
1. AWS KMS 콘솔을 엽니다.
2. [고객 관리형 키]를 선택한 다음 적절한 키를 선택합니다.
3. [키 정책(Key policy)]에서 [키 사용자(Key users)]가 나타날 때까지 아래로 스크롤합니다. [키 사용자(Key users)] 섹션에서 볼륨을 생성하는 데 사용하는 IAM 사용자 또는 역할이 나열되는지 확인합니다.
4. [키 사용자] 섹션에 해당 사용자 또는 역할이 나열되지 않으면 [추가]를 선택하고 해당 사용자 또는 역할을 선택한 다음 [추가]를 선택합니다.
AWS KMS 콘솔의 정책 뷰에서 다음을 수행합니다.
이전에 AWS KMS 키 정책을 수동으로 편집한 적이 있으면 정책(JSON) 뷰에서만 키 정책을 사용할 수 있습니다. 필요한 AWS KMS 권한을 허용하는 문에서 IAM 사용자 또는 역할의 ARN을 Principal로 지정해야 합니다.
예: 키 정책다음은 UserA가 Key1에 액세스하도록 허용하는 KMS 키 정책의 예입니다.
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
...
},
{
"Sid": "Allow access for Key Administrators",
...
},
{
"Sid": "Allow use of the keys",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111: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::111111111111:user/UserA"
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
}
]
}