适用于 Amazon KMS 的 Security Hub 控件
这些 Amazon Security Hub CSPM 控件可评估 Amazon Key Management Service(Amazon KMS)服务和资源。这些控件可能并非在所有 Amazon Web Services 区域都可用。有关更多信息,请参阅 按地区划分的控件可用性。
[KMS.1] IAM 客户托管策略不应允许对所有 KMS 密钥执行解密操作
相关要求: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
Amazon Config 规则: iam-customer-policy-blocked-kms-actions
计划类型:已触发变更
参数:
-
blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt(不可自定义) -
excludePermissionBoundaryPolicy:True(不可自定义)
检查 IAM 客户托管策略的默认版本是否允许主体对所有资源使用 Amazon KMS 解密操作。如果策略足够开放,可以允许对所有 KMS 密钥执行 kms:Decrypt 或 kms:ReEncryptFrom 操作,则控制失败。
该控件仅检查 Resource 元素中的 KMS 密钥,而不考虑策略的 Condition 元素中的任何条件。此外,该控件还会评估附加和独立的客户管理型策略。它不检查内联策略或 Amazon 托管策略。
使用 Amazon KMS,您可以控制谁可以使用您的 KMS 密钥并访问加密数据。IAM policy 定义了一个身份(用户、组或角色)可以对哪些资源执行哪些操作。遵循安全最佳实践,Amazon 建议您允许最低权限。换句话说,您应仅授予身份 kms:Decrypt 或 kms:ReEncryptFrom 权限,并仅授予执行任务所需的密钥。否则,用户可能会使用不适合数据的密钥。
不要授予所有密钥的权限,而是确定用户访问加密数据所需的最小密钥集。然后设计允许用户仅使用这些密钥的策略。例如,不要允许对所有 KMS 密钥的 kms:Decrypt 权限。取而代之的是,仅允许 kms:Decrypt 使用特定区域中您账户的密钥。通过采用最低权限原则,您可以降低数据意外泄露的风险。
修复
要修改 IAM 客户托管策略,请参阅 IAM 用户指南中的编辑客户管理型策略。编辑策略时,在 Resource 字段中提供您要允许执行解密操作的一个或多个密钥的 Amazon 资源名称(ARN)。
[KMS.2] IAM 主体不应有允许对所有 KMS 密钥进行解密操作的 IAM 内联策略
相关要求: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
Amazon Config 规则: iam-inline-policy-blocked-kms-actions
计划类型:已触发变更
参数:
-
blockedActionsPatterns: kms:ReEncryptFrom, kms:Decrypt(不可自定义)
此控件检查嵌入在 IAM 身份(角色、用户或群组)中的内联策略是否允许对所有 KMS 密钥执行 Amazon KMS 解密和重新加密操作。如果策略足够开放,可以允许对所有 KMS 密钥执行 kms:Decrypt 或 kms:ReEncryptFrom 操作,则控制失败。
该控件仅检查 Resource 元素中的 KMS 密钥,而不考虑策略的 Condition 元素中的任何条件。
使用 Amazon KMS,您可以控制谁可以使用您的 KMS 密钥并访问加密数据。IAM policy 定义了一个身份(用户、组或角色)可以对哪些资源执行哪些操作。遵循安全最佳实践,Amazon 建议您允许最低权限。换句话说,您应该仅向身份授予他们所需的权限,并且仅授予执行任务所需的密钥。否则,用户可能会使用不适合数据的密钥。
不要授予所有密钥的权限,而是确定用户访问加密数据所需的最小密钥集。然后设计允许用户仅使用这些密钥的策略。例如,不要允许对所有 KMS 密钥的 kms:Decrypt 权限。相反,请仅允许对账户特定区域中的特定密钥授予权限。通过采用最低权限原则,您可以降低数据意外泄露的风险。
修复
要修改 IAM 内联策略,请参阅 IAM 用户指南中的编辑内联策略。编辑策略时,在 Resource 字段中提供您要允许执行解密操作的一个或多个密钥的 Amazon 资源名称(ARN)。
[KMS.3] Amazon KMS keys 不应在无意中删除
相关要求:NIST.800-53.r5 SC-12、NIST.800-53.r5 SC-12(2)。
类别:保护 > 数据保护 > 数据删除保护
严重性:严重
资源类型:AWS::KMS::Key
Amazon Config规则:kms-cmk-not-scheduled-for-deletion-2(自定义 Security Hub 规则)
计划类型:已触发变更
参数:无
此控件检查是否计划删除 KMS 密钥。如果计划删除 KMS 密钥,则控制失败。
KMS 密钥一经删除就无法恢复。如果删除 KMS 密钥,则使用 KMS 密钥加密的数据也将永久无法恢复。如果在计划删除的 KMS 密钥下加密了有意义的数据,请考虑使用新的 KMS 密钥对数据进行解密或重新加密数据,除非您故意执行加密擦除。
当计划删除 KMS 密钥时,如果计划错误,则会强制执行强制等待期,以便有时间撤消删除。默认等待期为 30 天,但当计划删除 KMS 密钥时,等待期可缩短至短至 7 天。在等待期限内,可以取消预定删除,KMS 密钥不会被删除。
有关删除 KMS 密钥的更多信息,请参阅 Amazon Key Management Service 开发人员指南中的删除 KMS 密钥。
修复
要取消预定的 KMS 密钥删除,请参阅 Amazon Key Management Service 开发人员指南中的计划和取消密钥删除(控制台)下的取消密钥删除。
[KMS.4] 应启用 Amazon KMS 密钥轮换
相关要求: CIS Amazon 基金会基准 v5.0.0/3.6、CIS Amazon 基金会基准 v3.0.0/3.6、CIS Amazon 基金会基准 v1.4.0/3.8、CIS Amazon 基金会基准 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
类别:保护 > 数据保护 > 静态数据加密
严重性:中
资源类型:AWS::KMS::Key
Amazon Config 规则: cmk-backing-key-rotation-enabled
计划类型:定期
参数:无
Amazon KMS 使客户能够轮换备用密钥,该备用密钥是存储在 Amazon KMS 中的密钥材料,并与 KMS 密钥的密钥 ID 绑定。备用密钥被用于执行加密操作,例如加密和解密。目前,自动密钥轮换会保留所有之前的备用密钥,以便解密已加密数据的操作可以不被察觉地进行。
CIS 建议您启用 KMS 密钥轮换。轮换加密密钥有助于减少遭盗用密钥的潜在影响,因为使用可能已泄露的先前密钥无法访问使用新密钥加密的数据。
修复
要启用 KMS 密钥轮换,请参阅 Amazon Key Management Service 开发人员指南中的如何启用和禁用自动密钥轮换。
[KMS.5] KMS 密钥不应可公开访问
类别:保护 > 安全网络配置 > 不公开访问的资源
严重性:严重
资源类型:AWS::KMS::Key
Amazon Config 规则: kms-key-policy-no-public-access
计划类型:已触发变更
参数:无
此控件检查 Amazon KMS key密钥是否可公开访问。如果 KMS 密钥可公开访问,则此控件将失败。
实施最低权限访问对于降低安全风险以及错误或恶意意图的影响至关重要。如果 Amazon KMS key的密钥策略允许从外部账户访问,则第三方可能能够使用该密钥加密和解密数据。这可能导致内部或外部威胁从使用该密钥的 Amazon Web Services 服务 泄露数据。
注意
如果您的配置阻止 Amazon Config 将密钥策略记录到 KMS 密钥的配置项 (CI) 中,则此控件还会为 Amazon KMS key返回 FAILED 调查发现。要使 Amazon Config 在 CI 中为 KMS 密钥填充密钥策略,Amazon Config 角色必须有权使用 GetKeyPolicy API 调用读取密钥策略。要解决此类 FAILED 调查发现,请检查哪些策略会阻止 Amazon Config 角色对 KMS 密钥的密钥策略拥有读取权限。例如,请检查以下内容:
-
KMS 密钥的关键策略。
-
适用于您账户的 Amazon Organizations 中的服务控制策略 (SCP) 和资源控制策略 (RCP)。
-
Amazon Config 角色的权限(如果您未使用 Amazon Config 服务相关角色)。
此外,此控件不会评估使用通配符或变量的策略条件。要生成 PASSED 调查发现,密钥策略中的条件只能使用固定值,即不包含通配符或策略变量的值。有关策略变量的信息,请参阅《Amazon Identity and Access Management 用户指南》中的变量和标签。
修复
有关更新 Amazon KMS key的密钥策略的信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Key policies in Amazon KMS。