Google Workspace Cloud HSM 最佳实践

本文档概述了配置 Cloud HSM for Google Workspace 的最佳实践,以帮助保护您的密钥材料免遭意外或未经授权的销毁和删除,帮助确保关键加密密钥的高可用性和持久性,并帮助满足法规和合规性要求。

本文档面向负责 Google Workspace 客户端加密 (CSE) 中使用的加密密钥的安全性和 运营恢复能力的云架构师、安全团队和 Google Workspace 管理员。本文档 假定您已熟悉 Cloud HSM for Google Workspace 并已完成 入门流程

降低密钥材料丢失的风险

如果主账号拥有授予其完成破坏性操作的权限的角色(尤其是超出主账号通常工作范围的操作),则可能会出现安全风险。例如,如果用户拥有权限过大的 Project Owner (roles/owner) 角色,则可能会销毁用于 Google Workspace CSE 的密钥材料,导致加密数据永久无法访问。

以下部分介绍了相关实践,这些实践通过移除销毁或删除 Google Workspace 客户端加密功能 (CSE) 使用的 Cloud KMS 密钥材料的权限并限制密钥销毁,有助于降低意外和恶意密钥销毁和删除的风险。

强制执行文件夹级 IAM 拒绝政策

借助 IAM 拒绝政策,您可以拒绝向主账号授予权限,即使主账号拥有的角色授予了该权限也是如此。例如,即使用户拥有 Project Owner (roles/owner) 角色,文件夹级 IAM 拒绝政策也可以阻止他们销毁或删除密钥。通过将 Cloud HSM 项目放在文件夹中并在文件夹级应用拒绝政策,您可以在政策强制执行期间创建防护措施,以防止密钥销毁和删除。如果没有文件夹上的 Deny Admin (roles/iam.denyAdmin) 等角色,则无法取消强制执行的拒绝政策。

确保仅向在 Cloud HSM 密钥所在的项目中没有 Cloud KMS Admin (roles/cloudkms.admin) 角色的主账号授予文件夹管理角色,例如 Folder Admin (roles/resourcemanager.folderAdmin) 和 Deny Admin (roles/iam.denyAdmin)。这种职责分离可确保没有单个主账号可以同时管理和销毁密钥。

根据以下示例 配置设置拒绝政策

displayName: Deny KMS key destruction and deletion
rules:
- description: "Denies destroy and delete permissions on Cloud KMS keys for all principals."
  denyRule:
    deniedPrincipals:
    - "principalSet://goog/public:all"
    deniedPermissions:
    - "cloudkms.googleapis.com/cryptoKeyVersions.destroy"
    - "cloudkms.googleapis.com/cryptoKeys.delete"

如需详细了解 IAM 拒绝政策,请参阅 IAM 拒绝政策概览

强制执行密钥销毁的组织政策限制条件

除了 IAM 之外,您还可以使用组织政策限制条件在组织或文件夹级强制执行安全防护措施。这些限制条件充当硬性要求,用于限制可以创建哪些类型的资源以及如何配置这些资源。即使主账号拥有完成禁止操作所需的权限,也无法绕过强制执行的组织政策限制条件。如果没有组织上的 Organization Policy Administrator (roles/orgpolicy.policyAdmin) 等角色,则无法取消强制执行的组织政策限制条件。

  • 最短销毁时长 (constraints/cloudkms.minimumDestroyScheduledDuration):强制要求在启用政策的组织或资源中的所有密钥上设置最短的“已安排销毁”时长(例如 90 天或 120 天)。 此限制条件可防止任何用户将恢复窗口缩短到低于配置的最小值。
  • 先停用再销毁 (constraints/cloudkms.disableBeforeDestroy):要求密钥版本处于 DISABLED 状态,然后才能安排销毁。此限制条件会在销毁工作流中添加一个强制性步骤,从而提高审核日志中操作的可见性。

如需了解详情,请参阅 控制密钥版本销毁

最大限度地延长密钥销毁窗口

当密钥版本被安排销毁时,它会进入“软删除”期。在密钥版本处于“已安排销毁”状态时,您可以恢复密钥以取消密钥销毁。 将此可配置的时长设置为最长 120 天有助于确保您有足够的时间来恢复意外或恶意安排销毁的密钥版本。您只能在创建密钥时设置此值。

当您恢复已安排销毁的密钥版本时,密钥版本状态将设置为 DISABLED。然后,您必须重新启用密钥版本,才能恢复对加密的 Google Workspace 数据的访问。

以下 gcloud CLI 命令会创建一个由 HSM 支持的密钥,其安排销毁时长为 120 天:

gcloud kms keys create KEY_NAME \
    --location LOCATION \
    --keyring KEY_RING \
    --purpose encryption \
    --protection-level hsm \
    --destroy-scheduled-duration 120d

替换以下内容:

  • KEY_NAME:密钥的名称。
  • LOCATION:密钥环的 Cloud KMS 位置。
  • KEY_RING:包含密钥的密钥环的名称。

如需在组织中的所有密钥上强制执行此时长,而不是 在每个密钥上设置此时长,您可以定义并强制执行自定义 组织政策限制条件。以下示例限制条件仅允许用户在安排销毁时长介于 90 天和 120 天之间时创建密钥:

name: organizations/ORGANIZATION_ID/customConstraints/custom.limitScheduledDestruction
resourceTypes:
- cloudkms.googleapis.com/CryptoKey
methodTypes:
- CREATE
condition: "resource.destroyScheduledDuration >= duration('7776000s') && resource.destroyScheduledDuration <= duration('10368000s')"
actionType: ALLOW
displayName: Require scheduled destruction duration between 90 and 120 days
description: Allows key creation only if the destroyScheduledDuration is between 90 and 120 days.

ORGANIZATION_ID 替换为您的组织的数字 ID。

如需详细了解如何配置安排销毁 时长,请参阅销毁和恢复密钥版本。如需详细了解如何将自定义组织政策限制条件与 Cloud KMS 搭配使用,请参阅为 Cloud KMS 创建自定义组织政策限制条件

保护您的基础架构和项目

本文档前面讨论的防护措施侧重于防止密钥销毁和删除。不过,您还需要防护措施来防止密钥项目被删除。请使用以下防护措施来保护托管 Google Workspace 密钥的项目环境。

强制执行项目安全锁

项目安全锁可防止项目被删除。即使拥有 Project Owner (roles/owner) 角色的用户也无法在安全锁处于活动状态时关闭项目。这是防止 Google Workspace 密钥所在的项目被意外或未经授权删除的最有效方法。

如需详细了解项目安全锁,请参阅 使用安全锁保护项目

了解项目恢复窗口

如果项目成功删除(例如,在移除项目安全锁 (预览版)后),则会进入 30 天的恢复窗口。 在此期间,拥有 Project Owner (roles/owner) 或 Organization Admin (roles/resourcemanager.organizationAdmin) 角色的用户可以恢复项目。30 天后,项目及其中的所有密钥将被永久清除。

我们建议您保留项目安全锁,仅在万不得已的情况下才依赖恢复窗口。

如需详细了解项目恢复,请参阅 恢复已删除的项目

使用 VPC Service Controls

借助 VPC Service Controls,您可以定义 Cloud HSM 项目的安全 边界。这有助于确保只能从受信任的网络或特定身份访问 Cloud KMS API,从而降低企业环境外部未经授权的管理操作的风险。

使用导入的密钥 (BYOK) 确保密钥材料主权

对于大多数组织,我们建议您让 Cloud HSM 为您生成和管理密钥材料。

不过,如果您需要“自带密钥 (BYOK)”功能,则可以 在本地生成密钥材料并将其导入到 Cloud HSM 中。借助这种 BYOK 方法,您可以满足一些要求,例如维护密钥材料的独立本地副本,以满足数据主权要求或从密钥材料的灾难性丢失中恢复。这种方法为您提供密钥材料的独立副本,如果 Cloud KMS 中的密钥版本被销毁,您可以重新导入该副本。

重新导入到同一版本

借助 Cloud KMS,您可以将相同的密钥材料重新导入到已销毁的密钥版本中,以便资源标识符和 URI 与原始导入的密钥版本相同。这样,您就可以继续使用相同的 Google Workspace 配置。当您重新导入 Google Workspace 配置中使用的密钥版本时,数据访问权限会在密钥版本完成导入后立即恢复。

如需详细了解如何重新导入已销毁的密钥版本, 请参阅重新导入已销毁的密钥版本

使用单租户 Cloud HSM 提供高级保护

对于需要最高隔离级别的客户,单租户 Cloud HSM 提供专用 HSM 分区。您的单租户 Cloud HSM 实例是使用仲裁身份验证创建和管理的,这需要先获得配置的最低数量的仲裁成员的批准,然后才能执行关键操作,例如删除单租户 Cloud HSM 实例。这有助于防止单个遭入侵的帐号销毁您的单租户 Cloud HSM 实例。使用单租户 Cloud HSM 时,请遵循以下实践。如需了解详情,请参阅 基于仲裁的身份验证

跨项目分离基础架构和密钥

在不同的项目中创建单租户 Cloud HSM 实例和 Google Workspace 密钥。分离资源项目有助于确保在密钥项目上拥有管理角色的用户无权访问底层单租户 Cloud HSM 实例。这种基础架构管理和密钥管理之间的职责分离降低了未经授权的基础架构级操作的风险。

如需详细了解单租户 Cloud HSM,请参阅 单租户 Cloud HSM 概览

最佳实践摘要

下表总结了本文档中建议的最佳做法。

主题 任务
IAM 拒绝政策 强制执行文件夹级拒绝政策,以阻止密钥销毁和删除,即使对于拥有很高权限的用户也是如此。
组织政策限制条件 强制执行限制条件,以强制要求最短恢复期,并要求先停用密钥,然后才能销毁密钥。
安排销毁期
  • 创建密钥时,将“已安排销毁”值设置为最长 120 天。 或者,您可以选择较短的时长,但请确保时长足够长,以确保密钥在安排销毁后可以恢复。
  • 您可以使用自定义组织政策限制条件来确保所有密钥都是根据您的需求创建的,并具有适当的时长。
项目安全锁 强制执行项目安全锁,以防止托管加密密钥的项目被删除。
VPC Service Controls 边界 定义 VPC Service Controls 边界,以将 Cloud KMS API 访问权限限制为受信任的网络和身份。
BYOK 重新导入 在本地生成密钥材料,并使用重新导入来恢复已销毁的密钥版本,而无需更改资源名称。
跨项目架构 如果您使用单租户 Cloud HSM,请将单租户 Cloud HSM 实例和密钥分离到不同的项目中,以强制执行职责分离。

后续步骤