暗号化された EBS ボリュームの作成またはアタッチにカスタム AWS KMS キーを使用できないのはなぜですか?

所要時間2分
0

暗号化された Amazon Elastic Block Store (Amazon EBS) ボリュームをスナップショットから作成またはアタッチできません。スナップショットは、AWS キー管理サービス (AWS KMS) の顧客管理キーで暗号化されます。

簡単な説明

暗号化されたスナップショットから暗号化された EBS ボリュームを作成またはアタッチできない場合があります。これは、スナップショットと、スナップショットの暗号化に使用されるカスタム KMS キーが同じアカウントにあり、キーポリシー権限がない場合に発生します。この問題を解決するには、AWS KMS キーポリシーで AWS ID およびアクセス管理 (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 コンソールを開きます。

2.   [カスタマー管理キー] を選択し、適切なキーを選択します。

3.   [キーポリシー] で、[キーユーザー] までスクロールします。[キーユーザー] セクションに、ボリュームを作成またはアタッチする IAM ユーザーまたはロールが表示されていることを確認します。

4.   [キーユーザー] セクションにユーザーまたはロールが表示されない場合は、[追加] を選択し、ユーザーまたはロールを選択して、[追加] を選択します。

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公式更新しました 8ヶ月前