為什麼我無法建立已加密的 Amazon EC2 執行個體快照?
我的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體使用 AWS Key Management Service (KMS) 加密。我想要為 EC2 執行個體建立 Amazon Elastic Block Store (Amazon EBS) 磁碟區的快照,但我收到錯誤。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
先決條件:
- 建立未加密的快照,以確認問題是否與 AWS KMS 加密有關。
- 檢查您的 AWS CloudTrail 事件歷史記錄,以取得詳細錯誤訊息或其他內容。
根據您在嘗試建立 Amazon EBS 磁碟區的加密快照時收到的錯誤訊息,採取以下動作。
疑難排解「AccessDenied: User is not authorized to perform: kmsCreateGrant」錯誤
如果建立快照的 AWS Identity and Access Management (IAM) 身分沒有必要的權限,您就會收到「AccessDenied」錯誤訊息。當您共用加密的快照時,您也必須共用用來加密快照的客戶自管金鑰。
若要在 AWS 帳戶之間共用金鑰,請在建立金鑰時選擇 Add another account (新增其他帳戶)。或者,更新 AWS KMS key 政策,以允許目的地帳戶使用 AWS KMS key。
AWS KMS key 政策範例:
{ "Sid": "Allow use of the key for EBS snapshot operations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME" }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncrypt", "kms:Decrypt" ], "Resource": "*" }
**注意:**請將 ACCOUNT-ID 替換為目的地帳戶 ID,並將 ROLE-NAME 替換為 IAM 角色名稱。
如需詳細資訊,請參閱 AWS KMS 權限疑難排解。
疑難排解「No resource-based policies allow access」錯誤
當您錯誤設定跨帳戶存取,或目的地帳戶封鎖存取時,就會發生此錯誤。
若要疑難排解此問題,請確認 AWS KMS key 政策允許目的地帳戶使用必要權限存取該金鑰。
AWS KMS key 政策範例:
{ "Sid": "Allow use of the key for EBS snapshot operations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME" }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncrypt", "kms:Decrypt" ], "Resource": "*" }
**注意:**請將 ACCOUNT-ID 替換為目的地帳戶 ID,並將 ROLE-NAME 替換為 IAM 角色名稱。
接著,與目的地帳戶共用加密的快照,以及 AWS KMS key。
請確保目的地帳戶在 AWS Organizations 中的 Service Control Policies (SCP) 未封鎖存取。AWS 會在評估 IAM 或資源型政策之前先評估 SCP。
針對跨區域組態,請執行以下 AWS CLI describe-key 命令,以確認使用者可在目的地區域中存取 AWS KMS:
aws kms describe-key --key-id example-key-id --region example-region
**注意:**請將 example-key-id 替換為您的 AWS KMS key ID,並將 example-region 替換為您的區域。
如果使用者無法在目的地區域中存取金鑰,請確保您已建立多區域複本金鑰。
如需詳細資訊,請參閱允許其他帳戶中的使用者使用 AWS KMS key。
疑難排解「Resource does not exist in this Region」錯誤
若要疑難排解此問題,請確保您已正確設定在所需 AWS 區域中存取加密金鑰的權限。
若要確認 AWS KMS key 存在於目的地區域,請執行以下 list-keys 命令:
aws kms list-keys --region example-region
**注意:**請將 example-region 替換為目的地區域。
如果目的地區域中不存在該金鑰,請更新 AWS KMS key 政策,以授與目的地區域中帳戶的存取權。
AWS KMS key 政策範例:
{ "Sid": "Allow use of the key for EBS snapshot operations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME" }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncrypt", "kms:Decrypt" ], "Resource": "*" }
**注意:**請將 ACCOUNT-ID 替換為目的地帳戶 ID,並將 ROLE-NAME 替換為 IAM 角色名稱。
針對跨區域組態,請確保您已建立多區域複本金鑰。
若要檢查 AWS KMS key 是否具有所需的權限,請執行以下 get-key-policy 命令:
aws kms get-key-policy --key-id example-key-id --policy-name default --region example-region
**注意:**請將 example-key-id 替換為您的 AWS KMS key ID,並將 example-region 替換為您的目的地區域。
如果 AWS KMS key 政策未包含所需權限,請更新 AWS KMS key 政策。
相關內容
已提問 2 年前
已提問 3 年前
已提問 3 年前
