我啟動了一個連接加密 Amazon Elastic Block Store (Amazon EBS) 磁碟區的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。不過,該 EC2 執行個體無法建立或啟動。
簡短說明
啟動執行個體時,發生啟動問題的執行個體可能會從擱置中狀態轉為正在關閉,最後進入已終止狀態。
或者,您可能會在 describe-instances AWS Command Line Interface (AWS CLI) 命令的輸出中收到以下錯誤訊息:
" "StateReason": { "Code": "Client.InternalError" "Message": "Client.InternalError: Client error on launch" }"
如果用於加密的 AWS Key Management Service (KMS) 金鑰未設為啟用,便會發生此問題。另一個可能原因是,啟動執行個體的 AWS Identity and Access Management (IAM) 使用者或角色不具備必要的 AWS KMS 權限。
注意: 即使 IAM 使用者具備完整的 Amazon EC2 權限,您仍必須授予該使用者 AWS KMS key 的存取權。
若要解決 IAM 問題,請建立允許存取 AWS KMS key 的政策,然後將該政策連接至 IAM 實體。或者,將 IAM 實體新增為 AWS KMS key 使用者。
解決方法
注意: 如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
檢查 AWS KMS key 狀態
請確認您已將 AWS KMS key 設為啟用。
建立允許存取 AWS KMS key 的政策,然後將該政策連接至 IAM 實體
建立以下 IAM 政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:Encrypt",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
},
{
"Effect": "Allow",
"Action": "kms:CreateGrant",
"Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
注意: 將 arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab 替換為AWS KMS key 的 Amazon Resource Name (ARN)。
接著,將政策連接至 IAM 角色或使用者。
將 IAM 實體新增為 AAWS KMS key 使用者
完成以下步驟:
- 開啟 AWS KMS console (AWS KMS 主控台)。
- 選擇 Customer managed keys (客戶管理金鑰)。
- 在 Key ID (金鑰 ID),選擇您的金鑰 ID。
- 在 Key users (金鑰使用者),選擇 Add (新增)。
- 在 Name (名稱),選擇 IAM 使用者或角色,然後選擇 Add (新增)。
注意: 預設金鑰政策允許您的 AWS 帳戶存取金鑰。如果改用自訂金鑰政策,AWS KMS key 政策必須明確允許以下權限:
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:role/MyRoleName",
"arn:aws:iam::123456789012:user/MyUserName"
]
},
"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::123456789012:role/MyRoleName",
"arn:aws:iam::123456789012:user/MyUserName"
]
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
}
注意: 將 arn:aws:iam::123456789012:role/MyRoleName 替換為 IAM 角色 ARN,並將 arn:aws:iam::123456789012:user/MyUserName 替換為 IAM 使用者 ARN。
相關資訊
如何確認 AWS KMS API 呼叫使用具備資料加密的已驗證加密?
AWS KMS 中的金鑰政策
Amazon Elastic Block Store (Amazon EBS) 如何使用 AWS KMS