사용자 지정 AWS KMS 키를 사용해 암호화된 EBS 볼륨을 생성하거나 연결할 수 없는 이유는 무엇인가요?

2분 분량
0

스냅샷에서 암호화된 Amazon Elastic Block Store(Amazon EBS) 볼륨을 생성하거나 연결할 수 없습니다. 스냅샷은 AWS Key Management Service(AWS KMS) 고객 관리 키로 암호화됩니다.

간략한 설명

암호화된 스냅샷에서 암호화된 EBS 볼륨을 생성하거나 연결하지 못할 수 있습니다. 이는 스냅샷과 스냅샷을 암호화하는 데 사용된 사용자 지정 KMS 키가 동일한 계정에 있고, 키 정책 권한이 없는 경우 발생합니다. 이 문제를 해결하려면 AWS KMS 키 정책에서 AWS Identity and Access Management(AWS IAM) 사용자나 역할을 허용하세요.

해결 방법

CloudTrail 이벤트 기록을 사용하는 정책에서 누락된 권한을 확인합니다.

  1. AWS CloudTrail 콘솔을 엽니다.
  2. 이벤트 기록을 선택합니다. 그런 다음 AttachVolume이나 CreateVolume API 호출이 발생할 때 시간 범위를 15분으로 입력합니다.
  3. 필터를 선택하고 이벤트 소스를 선택한 다음 kms.amazonaws.com을 입력합니다.
  4. 결과가 로드되면 다운로드 버튼을 누르고 CSV 다운로드를 선택합니다.
  5. .csv 파일을 열고 오류 코드 열을 필터링해 AccessDenied를 찾습니다. 이벤트 이름AccessDenied 오류 코드가 있는 경우는 보통 권한이 누락된 경우입니다.

참고: CloudTrail 이벤트가 이벤트 기록 탭에 표시되는 데 최대 15분이 걸릴 수 있습니다. CreateVolume이나 AttachVolume 실패 상태를 받은 직후에 이벤트 기록을 확인하면 이벤트가 표시되지 않을 수 있습니다.

권한이 누락된 것을 확인한 후 다음 단계를 따라 문제를 해결하세요.

KMS 키 정책에 볼륨을 생성하거나 연결하는 IAM 사용자나 역할이 포함되어 있는지 확인합니다.

AWS KMS 콘솔 기본 보기

1.    AWS KMS 콘솔을 엽니다.

  1. 고객 관리 키를 선택하고 적절한 키를 선택합니다.

  2. 키 정책에서 아래로 스크롤해 키 사용자로 이동합니다. 키 사용자 섹션 목록에 볼륨을 생성하거나 연결하는 IAM 사용자나 역할이 있는지 확인합니다.

  3. 키 사용자 섹션 목록에 사용자나 역할이 없는 경우, 추가를 눌러 사용자나 역할을 선택하고 추가를 선택합니다.

AWS KMS 콘솔 정책 보기

이전에 AWS KMS 키 정책을 수동으로 편집했다면 정책(JSON) 보기에서만 키 정책을 사용할 수 있습니다. 필수 AWS KMS 권한을 허용하려면 명령문에 IAM 사용자나 역할의 ARN주요로 명시하세요.

예제 키 정책

다음은 UserAKey1에 허용하는 AWS 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"
				}
			}
		}
	]
}
AWS 공식
AWS 공식업데이트됨 9달 전