為什麼無法使用自訂 AWS KMS 金鑰建立或連接加密的 EBS 磁碟區?

2 分的閱讀內容
0

我無法從快照建立或連接加密的 Amazon Elastic Block Store (Amazon EBS) 磁碟區。快照會使用 AWS Key Management Service (KMS) 客戶受管金鑰加密。

簡短描述

您可能無法從加密的快照建立或連接加密的 EBS 磁碟區。當您用來加密快照的快照和自訂 KMS 金鑰位於同一帳戶且遺失金鑰政策許可時,就會發生這種情況。若要解決此問題,請在 AWS KMS 金鑰政策中允許 AWS 身分和存取管理 (IAM) 使用者或角色。

解決方法

使用 CloudTrail 事件歷史記錄,識別政策中遺失的許可

  1. 開啟 AWS CloudTrail 主控台
  2. 選擇事件歷史記錄。然後,對於時間範圍,在進行 AttachVolumeCreateVolume API 呼叫時輸入 15 分鐘的時段。
  3. 選擇篩選條件,選取事件來源,然後輸入 kms.amazonaws.com
  4. 載入結果後,選擇下載按鈕,然後選擇下載 CSV
  5. 開啟 .csv 檔案,然後篩選 AccessDenied錯誤代碼欄。具有 AccessDenied 錯誤代碼的事件名稱通常都遺失許可。

注意:CloudTrail 事件最多需要 15 分鐘才會顯示在事件歷史記錄標籤上。在收到 CreateVolumeAttachVolume 失敗狀態後立即檢查事件歷史記錄可能不會顯示任何事件。

找出遺失的許可後,完成下列步驟以解決問題。

確認 KMS 金鑰政策包含建立或連接磁碟區的 IAM 使用者或角色

AWS KMS 主控台預設視圖

1.   開啟 AWS KMS 主控台

2.   選擇客戶受管金鑰,然後選取適當的金鑰。

3.   在金鑰政策下,向下捲動至金鑰使用者。確認金鑰使用者區段列出建立或連接磁碟區的 IAM 使用者或角色。

4.   如果金鑰使用者區段未列出使用者或角色,請選擇新增,選取使用者或角色,然後選擇新增

AWS KMS 主控台政策視圖

如果您先前手動編輯過 AWS KMS 金鑰政策,則金鑰政策只能在政策 (JSON) 視圖中使用。若要允許必要的 AWS KMS 許可,請在陳述式中列出 IAM 使用者或角色的 ARN 作為主體

金鑰政策範例

以下是允許使用者 A 存取金鑰 1 的 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 個月前