跳至內容

為什麼我無法建立已加密的 Amazon EC2 執行個體快照?

2 分的閱讀內容
0

我的 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 版本

先決條件:

根據您在嘗試建立 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 政策

AWS 官方已更新 9 個月前