사용자 지정 AWS KMS 고객 마스터 키를 사용하여 암호화된 EBS 볼륨을 생성하거나 연결할 수 없는 이유는 무엇입니까?

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

AWS Key Management Service(AWS KMS) 고객 마스터 키(CMK)로 암호화된 스냅샷에서 암호화된 Amazon Elastic Block Store(Amazon EBS) 볼륨을 생성하거나 연결할 수 없는 이유는 무엇입니까?

간략한 설명

스냅샷과 스냅샷을 암호화하는 데 사용한 사용자 지정 KMS 키가 같은 계정에 있고 키 정책에 누락된 권한이 있으면 암호화된 스냅샷에서 암호화된 EBS 볼륨을 생성하거나 연결하지 못할 수도 있습니다. KMS 키 정책에서 AWS Identity and Access Management(IAM) 사용자 또는 역할을 허용해야 합니다.

해결 방법

AWS CloudTrail 이벤트 기록을 사용하여 정책에서 누락된 권한 확인

1.    CloudTrail 콘솔을 엽니다.

2.    [이벤트 기록]을 선택하고 [시간 범위]에 AttachVolume 또는 CreateVolume API 호출이 실행된 시간을 포함하는 15분간의 기간을 입력합니다.

3.    [필터]를 선택하고 [이벤트 소스]를 선택한 다음 kms.amazonaws.com을 입력합니다.

4.    결과가 로드된 후 콘솔의 오른쪽 상단에 있는 다운로드 버튼을 선택한 다음 [CSV 다운로드]를 선택합니다.

5.    방금 다운로드한 파일을 열고 오류 코드 열에서 AccessDenied로 필터링합니다. AccessDenied 오류 코드가 포함된 모든 이벤트 이름은 일반적으로 권한 누락 문제입니다.

참고: CloudTrail 이벤트는 최대 15분 후에야 [이벤트 기록] 탭에 표시됩니다. CreateVolume 또는 AttachVolume 실패 상태가 수신된 직후에 [이벤트 기록]을 확인하면 이벤트가 표시되지 않을 수도 있습니다.

누락된 권한을 확인한 후 다음 해결 방법을 따라 문제를 해결하십시오.

CMK 정책에 볼륨 연결 또는 생성을 시도하는 IAM 사용자 또는 역할이 포함되어 있는지 확인

AWS KMS 콘솔의 기본 뷰에서 다음을 수행하십시오.

1.    AWS KMS 콘솔을 엽니다.

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

3.    [키 정책]에서 [키 사용자]가 나타날 때까지 아래로 스크롤합니다. [키 사용자] 섹션에서 볼륨을 생성하는 데 사용하는 IAM 사용자 또는 역할이 나열되는지 확인합니다.

4.    [키 사용자] 섹션에 해당 사용자 또는 역할이 나열되지 않으면 [추가]를 선택하고 해당 사용자 또는 역할을 선택한 다음 [추가]를 선택합니다.

AWS KMS 콘솔의 정책 뷰에서 다음을 수행하십시오.

이전에 AWS KMS CMK 키 정책을 수동으로 편집한 적이 있으면 정책(JSON) 뷰에서만 키 정책을 사용할 수 있습니다. 필요한 AWS KMS 권한을 허용하는 문에서 IAM 사용자 또는 역할의 ARNPrincipal로 지정해야 합니다.

예: 키 정책

다음은 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"
                }
            }
        }
    ]
}

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


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