

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 的 Security Hub CSPM 控制項 AWS KMS
<a name="kms-controls"></a>

這些 AWS Security Hub CSPM 控制項會評估 AWS Key Management Service (AWS KMS) 服務和資源。控制項可能無法全部使用 AWS 區域。如需詳細資訊，請參閱[依區域的控制項可用性](securityhub-regions.md#securityhub-regions-control-support)。

## 【KMS.1】 IAM 客戶受管政策不應允許對所有 KMS 金鑰執行解密動作
<a name="kms-1"></a>

**相關需求：**NIST.800-53.r5 AC-2、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-5、NIST.800-53.r5 AC-6、NIST.800-53.r5 AC-6(3)

**類別：**保護 > 安全存取管理

**嚴重性：**中

**資源類型：** `AWS::IAM::Policy`

**AWS Config 規則：**[https://docs.aws.amazon.com/config/latest/developerguide/iam-customer-policy-blocked-kms-actions.html](https://docs.aws.amazon.com/config/latest/developerguide/iam-customer-policy-blocked-kms-actions.html)

**排程類型：**已觸發變更

**參數：**
+ `blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt` （不可自訂）
+ `excludePermissionBoundaryPolicy`：`True`（不可自訂）

檢查 IAM 客戶受管政策的預設版本是否允許主體在所有資源上使用 AWS KMS 解密動作。如果政策開啟程度足以允許對所有 KMS 金鑰執行 `kms:Decrypt`或 `kms:ReEncryptFrom`動作，則控制項會失敗。

控制項只會檢查資源元素中的 KMS 金鑰，不會考慮政策條件元素中的任何條件。此外，控制項會評估已連接和未連接的客戶受管政策。它不會檢查內嵌政策或 AWS 受管政策。

透過 AWS KMS，您可以控制誰可以使用您的 KMS 金鑰，並存取您的加密資料。IAM 政策定義身分 （使用者、群組或角色） 可以對哪些資源執行哪些動作。遵循安全最佳實務， AWS 建議您允許最低權限。換句話說，您應該僅將 `kms:Decrypt`或 `kms:ReEncryptFrom`許可授予身分，並僅授予執行任務所需的金鑰。否則，使用者可能會使用不適合您資料的金鑰。

決定使用者存取加密資料所需的最低金鑰集，而不是授予所有金鑰的許可。然後設計僅允許使用者使用這些金鑰的政策。例如，不允許所有 KMS 金鑰的`kms:Decrypt`許可。反之，`kms:Decrypt`只允許 帳戶特定區域中的金鑰。透過採用最低權限原則，您可以降低意外揭露資料的風險。

### 修補
<a name="kms-1-remediation"></a>

若要修改 IAM 客戶受管政策，請參閱《*IAM 使用者指南*》中的[編輯客戶受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html#edit-managed-policy-console)。編輯政策時，請針對 `Resource` 欄位提供您要允許解密動作之特定金鑰的 Amazon Resource Name (ARN)。

## 【KMS.2】 IAM 主體不應具有允許對所有 KMS 金鑰執行解密動作的 IAM 內嵌政策
<a name="kms-2"></a>

**相關需求：**NIST.800-53.r5 AC-2、NIST.800-53.r5 AC-2(1)、NIST.800-53.r5 AC-3、NIST.800-53.r5 AC-3(15)、NIST.800-53.r5 AC-3(7)、NIST.800-53.r5 AC-5、NIST.800-53.r5 AC-6、NIST.800-53.r5 AC-6(3)

**類別：**保護 > 安全存取管理

**嚴重性：**中

**資源類型：**
+ `AWS::IAM::Group`
+ `AWS::IAM::Role`
+ `AWS::IAM::User`

**AWS Config 規則：**[https://docs.aws.amazon.com/config/latest/developerguide/iam-inline-policy-blocked-kms-actions.html](https://docs.aws.amazon.com/config/latest/developerguide/iam-inline-policy-blocked-kms-actions.html)

**排程類型：**已觸發變更

**參數：**
+ `blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt` （不可自訂）

此控制項會檢查內嵌在 IAM 身分 （角色、使用者或群組） 中的內嵌政策是否允許對所有 KMS 金鑰進行 AWS KMS 解密和重新加密動作。如果政策開啟程度足以允許對所有 KMS 金鑰執行 `kms:Decrypt`或 `kms:ReEncryptFrom`動作，則控制項會失敗。

控制項只會檢查資源元素中的 KMS 金鑰，不會考慮政策條件元素中的任何條件。

透過 AWS KMS，您可以控制誰可以使用您的 KMS 金鑰，並存取您的加密資料。IAM 政策定義身分 （使用者、群組或角色） 可以對哪些資源執行哪些動作。遵循安全最佳實務， AWS 建議您允許最低權限。換言之，您應該僅授予身分所需的許可，並僅授予執行任務所需的金鑰。否則，使用者可能會使用不適合您資料的金鑰。

決定使用者存取加密資料所需的金鑰集下限，而不是授予所有金鑰的許可。然後設計僅允許使用者使用這些金鑰的政策。例如，不允許所有 KMS 金鑰的`kms:Decrypt`許可。反之，請只對帳戶特定區域中的特定金鑰允許 許可。透過採用最低權限原則，您可以降低意外揭露資料的風險。

### 修補
<a name="kms-2-remediation"></a>

若要修改 IAM 內嵌政策，請參閱《*IAM 使用者指南*》中的[編輯內嵌政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html#edit-inline-policy-console)。編輯政策時，請針對 `Resource` 欄位提供您要允許解密動作之特定金鑰的 Amazon Resource Name (ARN)。

## 【KMS.3】 AWS KMS keys 不應意外刪除
<a name="kms-3"></a>

**相關要求：**NIST.800-53.r5 SC-12、NIST.800-53.r5 SC-12(2)

**類別：**保護 > 資料保護 > 資料刪除保護

**嚴重性：**嚴重

**資源類型：** `AWS::KMS::Key`

**AWS Config rule：**`kms-cmk-not-scheduled-for-deletion-2`（自訂 Security Hub CSPM 規則）

**排程類型：**已觸發變更

**參數：**無

此控制項會檢查是否已排定刪除 KMS 金鑰。如果排定刪除 KMS 金鑰，則控制項會失敗。

刪除後，無法復原 KMS 金鑰。如果刪除 KMS 金鑰，在 KMS 金鑰下加密的資料也會永久無法復原。如果有意義的資料已在排程刪除的 KMS 金鑰下加密，請考慮解密資料或在新的 KMS 金鑰下重新加密資料，除非您刻意執行*密碼編譯清除*。

當 KMS 金鑰排定刪除時，如果排程錯誤，則會強制執行強制等待期間，以允許時間反轉刪除。預設等待期間為 30 天，但在排定刪除 KMS 金鑰時，可以縮短為 7 天。在等待期間，排程刪除可以取消，而且不會刪除 KMS 金鑰。

如需有關刪除 KMS 金鑰的其他資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[刪除 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html)。

### 修補
<a name="kms-3-remediation"></a>

若要取消排定的 KMS 金鑰刪除，請參閱《 *AWS Key Management Service 開發人員指南*》中的**在**[排程和取消金鑰刪除 （主控台） 下取消金鑰刪除](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html#deleting-keys-scheduling-key-deletion-console)。

## 【KMS.4】 應啟用 AWS KMS 金鑰輪換
<a name="kms-4"></a>

**相關要求：**CIS AWS Foundations Benchmark v5.0.0/3.6、CIS AWS Foundations Benchmark v3.0.0/3.6、CIS AWS Foundations Benchmark v1.4.0/3.8、CIS AWS Foundations Benchmark v1.2.0/2.8、NIST.800-53.r5 SC-12、NIST.800-53.r5 SC-12(2)、NIST.800-53.r5 SC-28(3)、PCI DSS v3.2.1/3.6.4、PCI DSS v4.0.1/3.7.4

**類別：**保護 > 資料保護 > data-at-rest加密

**嚴重性：**中

**資源類型：** `AWS::KMS::Key`

**AWS Config 規則：**[https://docs.aws.amazon.com/config/latest/developerguide/cmk-backing-key-rotation-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/cmk-backing-key-rotation-enabled.html)

**排程類型：**定期

**參數：**無

AWS KMS 可讓客戶輪換後端金鑰，這是存放在 中的金鑰材料 AWS KMS ，並與 KMS 金鑰的金鑰 ID 繫結。它是用來執行加密操作的備份金鑰，例如加密和解密。自動化輪換金鑰目前會保留之前所有的備份金鑰，以便透明解密加密的資料。

CIS 建議您啟用 KMS 金鑰輪換。輪換加密金鑰有助於降低被盜用金鑰造成的可能影響，因為可能公開的舊金鑰無法存取使用新金鑰加密的資料。

### 修補
<a name="kms-4-remediation"></a>

若要啟用 KMS 金鑰輪換，請參閱《 *AWS Key Management Service 開發人員指南*》中的[如何啟用和停用自動金鑰輪換](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotating-keys-enable-disable)。

## 【KMS.5】 不應公開存取 KMS 金鑰
<a name="kms-5"></a>

**類別：**保護 > 安全網路組態 > 資源不可公開存取

**嚴重性：**嚴重

**資源類型：** `AWS::KMS::Key`

**AWS Config 規則：**[https://docs.aws.amazon.com/config/latest/developerguide/kms-key-policy-no-public-access.html](https://docs.aws.amazon.com/config/latest/developerguide/kms-key-policy-no-public-access.html)

**排程類型：**已觸發變更

**參數：**無

此控制項會檢查 是否 AWS KMS key 可公開存取。如果 KMS 金鑰可公開存取，則控制項會失敗。

實作最低權限存取對於降低安全風險以及錯誤或惡意意圖的影響至關重要。如果 的金鑰政策 AWS KMS key 允許從外部帳戶存取，第三方可能可以使用金鑰來加密和解密資料。這可能會導致來自使用 金鑰 AWS 服務 之 的內部或外部威脅滲透資料。

**注意**  
 AWS KMS key 如果您的組態 AWS Config 無法在 KMS 金鑰的組態項目 (CI) 中記錄金鑰政策，則此控制項也會傳回 的問題`FAILED`清單。若要 AWS Config 讓 在 KMS 金鑰的 CI 中填入金鑰政策，[AWS Config 角色](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli-prereq.html#gs-cli-create-iamrole)必須具有使用 [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html) API 呼叫讀取金鑰政策的存取權。若要解決此類`FAILED`問題清單，請檢查可阻止 AWS Config 角色對 KMS 金鑰的金鑰政策具有讀取存取權的政策。例如，請檢查下列項目：  
KMS 金鑰的金鑰政策。
適用於您帳戶的 中的[服務控制政策 (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) [和資源控制政策 RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。 AWS Organizations 
如果您未使用[AWS Config 服務連結](https://docs.aws.amazon.com/config/latest/developerguide/using-service-linked-roles.html) AWS Config 角色，則為角色的許可。
此外，此控制項不會評估使用萬用字元或變數的政策條件。若要產生`PASSED`調查結果，金鑰政策中的條件只能使用固定值，這些值不包含萬用字元或政策變數。如需政策變數的相關資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[變數和標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

### 修補
<a name="kms-5-remediation"></a>

如需更新 金鑰政策的相關資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的 中的[金鑰政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-overview)。