為什麼無法從複製的 AMI 啟動 EC2 執行個體?

2 分的閱讀內容
0

我將 Amazon Machine Image (AMI) 複製到不同的 AWS 帳戶或 AWS 區域。但是,我無法從複製的 AMI 啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。

簡短說明

如果您沒有下列許可,則無法使用加密的 Amazon Elastic Block Store (Amazon EBS) 從複製的 AMI 啟動執行個體:

  • AWS Key Management Service (AWS KMS) 客戶受管金鑰政策遺失允許請求帳戶存取 AMI 的正確主體。
  • 請求帳戶中的 AWS Identity and Access Management (IAM) 實體沒有磁碟區跨帳戶 AWS KMS 金鑰的必要 AWS KMS 許可。

解決方法

在複製的 AMI 上開啟對現有 AWS KMS 自訂金鑰的跨帳戶存取權

如需詳細指示,請參閱使用 AWS Key Management Service 在帳戶之間更安全地共享自訂加密密鑰

設定 EC2 執行個體的許可以存取 AWS KMS 金鑰

1.    開啟 AWS KMS 主控台
**注意:**確保您位於正確的區域。

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

3.    在金鑰政策下,捲動至金鑰使用者。確認金鑰使用者區段列出所有需要存取金鑰的內部和外部帳戶及使用者。

4.    如果金鑰使用者區段中遺失任何帳戶或使用者,請在金鑰政策下選擇切換為政策視圖
注意: 如果您在任何時候手動編輯 AWS KMS 金鑰政策,則金鑰政策僅適用於在政策 (JSON) 視圖。

5.    確認金鑰政策中的允許使用金鑰陳述式正確。此陳述式必須包含需要存取金鑰的所有帳戶和使用者的 ARN。

以下是預設金鑰政策中的允許使用金鑰陳述式的範例程式碼片段。此範例包括下列 ARN:

  • 包含複製的 AMI 的外部 AWS 帳戶。
  • AMI 的父帳戶。
  • 外部帳戶內的使用者。

如需整個預設金鑰政策的概觀和範例,請參閱預設金鑰政策

{
	"Sid": "Allow use of the key",
	"Effect": "Allow",
	"Principal": {
		"AWS": [
			"arn:aws:iam::111122223333:root",
			"arn:aws:iam::444455556666:root",
			"arn:aws:iam::111122223333: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::111122223333:root",
			"arn:aws:iam::444455556666:root",
			"arn:aws:iam::111122223333:user/UserA"
		]
	},
	"Action": [
		"kms:CreateGrant",
		"kms:ListGrants",
		"kms:RevokeGrant"
	],
	"Resource": "*",
	"Condition": {
		"Bool": {
			"kms:GrantIsForAWSResource": "true"
		}
	}
}]
}

6.    建立並指派 IAM 政策。

建立 IAM 政策並將其連接至您的 IAM 使用者或群組

若要建立 IAM 政策並將其連接至您的 IAM 使用者或群組,請完成下列步驟:

**注意:**如果您已建立 IAM 政策,請繼續執行步驟 7 以連接政策。 

1.    以具有管理員許可的使用者身分開啟 IAM 主控台

2.    選擇政策

3.    選擇建立政策

4.    選擇 JSON 標籤。複製下列範例 JSON 政策,然後在 JSON 文字方塊中輸入。將 arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE 取代為您的 AWS KMS 金鑰的 ARN。

{
	"Version": "2012-10-17",
	"Statement": [{
		"Sid": "AllowUseOfTheKey",
		"Effect": "Allow",
		"Action": ["kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey"],
		"Resource": ["arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE"]
	}, {
		"Sid": "AllowAttachmentOfPersistentResources",
		"Effect": "Allow",
		"Action": ["kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant"],
		"Resource": ["arn:aws:kms:REGION:MAINACCOUNTNUMBER:key/1a345678-1234-1234-1234-EXAMPLE"],
		"Condition": {
			"Bool": {
				"kms:GrantIsForAWSResource": true
			}
		}
	}]
}

5.    選擇檢閱政策政策驗證程式會報告任何語法錯誤。

6.    在檢閱頁面上,對政策名稱輸入 KmsKeyUsagePolicy。檢閱政策摘要以查看政策授與的許可,然後選擇建立政策以儲存政策。新政策會顯示在受管政策清單中,並準備好連接至您的 IAM 使用者或群組。

7.    在 IAM 主控台的導覽窗格中,選擇政策

8.    在搜尋方塊中,輸入 KmsKeyUsagePolicy。然後,勾選 KmsKeyUsagePolicy 旁邊的方塊。

9.    選擇政策動作,然後選擇連接

10.   在篩選條件中,選擇使用者

11.    在搜尋方塊中,輸入您的使用者名稱。然後,勾選您的使用者名稱旁邊的方塊。

12.    選擇連接政策

相關資訊

複製 AMI

編輯金鑰

教程: 建立並連接您的第一個客戶受管政策

驗證 IAM 政策

AWS 官方
AWS 官方已更新 9 個月前