사용자 지정 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 사용자 또는 역할의 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"
                }
            }
        }
    ]
}

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?