Autokey 概览

Cloud KMS Autokey 通过自动执行预配和分配来简化客户管理的加密密钥 (CMEK) 的创建和使用。借助 Autokey,系统会按需生成密钥环和密钥。系统会创建使用密钥加密和解密资源的服务账号,并在需要时向其授予 Identity and Access Management (IAM) 角色。Cloud KMS 管理员可以完全控制和查看 Autokey 创建的密钥,而无需预先规划和创建每个资源。

使用 Autokey 生成的密钥有助于您始终遵循数据安全方面的业界标准和建议的做法,包括多租户 Cloud HSM 保护级别、职责分离、密钥轮替、位置和密钥专属性。Autokey 会创建遵循以下准则的密钥:一般准则以及针对与 Cloud KMS Autokey 集成的Google Cloud 服务的特定于资源类型的准则。使用 Autokey 请求的密钥在创建后,其功能与具有相同设置的其他 Cloud HSM 密钥完全相同。

Autokey 还可以简化 Terraform 在密钥管理方面的使用,无需使用受提升的密钥创建权限运行基础架构即代码。

您可以将 Autokey 与集中式密钥管理模型(正式版)或委托式密钥管理模型(预览版)搭配使用。如需使用集中式密钥管理模型,您必须拥有包含文件夹资源的组织资源。在集中式模型中,Autokey 针对文件夹中的项目启用,并且由 Autokey 创建的密钥会在该文件夹的专用密钥项目中创建。借助委托密钥管理模型,密钥管理会委托给项目管理员,他们可以在文件夹或项目上启用 Autokey,让 Autokey 在与受保护资源相同的项目中创建密钥。

如需详细了解组织和文件夹资源,请参阅资源层次结构

Cloud KMS Autokey 可在所有可使用 Cloud HSM 的 Google Cloud 位置使用。如需详细了解 Cloud KMS 位置,请参阅 Cloud KMS 位置。使用 Cloud KMS Autokey 不会产生额外费用。使用 Autokey 创建的密钥与任何其他 Cloud HSM 密钥的价格相同。如需详细了解价格,请参阅 Cloud Key Management Service 价格

Autokey 的运作方式

本部分介绍 Cloud KMS Autokey 的工作原理。以下用户角色参与此流程:

管理员
管理员是指负责在文件夹或组织级层管理安全性的用户。
Autokey 开发者
Autokey 开发者是指负责使用 Cloud KMS Autokey 创建资源的用户。
Cloud KMS 管理员
Cloud KMS 管理员是负责管理 Cloud KMS 资源的用户。与使用手动创建的密钥相比,使用 Autokey 时,此角色的职责较少。

以下服务代理也会参与此流程:

Cloud KMS 服务代理
指定密钥项目中的 Cloud KMS 服务代理。Autokey 依赖于此服务代理,需要此服务代理拥有提升的权限才能创建 Cloud KMS 密钥和密钥环,并为密钥设置 IAM 政策,从而为每个资源服务代理授予加密和解密权限。
资源服务代理
给定资源项目中给定服务的服务代理。此服务代理必须拥有对任何 Cloud KMS 密钥的加密和解密权限,然后才能使用该密钥对资源进行 CMEK 保护。Autokey 会在需要时创建资源服务代理,并授予其使用 Cloud KMS 密钥所需的权限。

管理员启用 Cloud KMS Autokey

启用 Autokey 的流程取决于您选择的密钥管理模型,具体如下:

  1. 集中式密钥管理模型:在文件夹中启用 Autokey。系统会创建一个集中式密钥项目,用于存放保护文件夹中其他项目内创建的资源的密钥。
  2. 委托密钥管理模型(预览版):您可以针对单个项目或文件夹中的所有项目启用 Autokey,以使用同项目 Autokey。

启用集中式密钥管理

在您可以使用 Autokey 在文件夹中集中管理密钥之前,管理员必须完成以下一次性设置任务:

  1. 在文件夹中启用 Cloud KMS Autokey,并确定将包含该文件夹的 Autokey 资源的 Cloud KMS 项目。

  2. 创建 Cloud KMS 服务代理,然后向该服务代理授予密钥创建和分配权限。

完成此配置后,可以在相应文件夹中的任何项目中创建 Autokey 兼容资源的开发者现在可以按需触发多租户 Cloud HSM 密钥创建。如需查看 Cloud KMS Autokey 的完整设置说明,请参阅启用 Cloud KMS Autokey

启用委托密钥管理

在您使用 Autokey 进行委托密钥管理之前,管理员必须完成以下一次性设置任务:

  1. 在项目或文件夹中启用 Cloud KMS Autokey。
  2. 在该项目或文件夹中的项目上启用 Cloud KMS API。

在项目中启用 Cloud KMS Autokey 以进行委托密钥管理后,系统会在需要时为您创建 Cloud KMS 服务代理。您无需手动创建服务代理。有权创建与 Autokey 兼容的任何资源的用户都可以按需请求新密钥。如需查看 Cloud KMS Autokey 的完整设置说明,请参阅启用 Cloud KMS Autokey

Autokey 开发者使用 Cloud KMS Autokey

成功为项目启用 Autokey 后,Autokey 开发者可以创建受保护的资源,这些资源使用根据需求为其创建的密钥进行保护。这适用于以下项目:在文件夹中启用 Autokey 以进行集中式密钥管理的项目,以及启用 Autokey 以进行委托的同项目密钥管理的项目。资源创建流程的详细信息取决于您要创建的资源,但该流程遵循以下流程:

  1. Autokey 开发者开始在兼容的Google Cloud 服务中创建资源。在创建资源期间,开发者会向 Autokey 服务代理请求新密钥。

  2. Autokey 服务代理会收到开发者的请求,并完成以下步骤:

    1. 在项目中的所选位置创建密钥环,除非该密钥环已存在。
    2. 在密钥环中创建具有相应资源类型粒度的密钥,除非此类密钥已存在。
    3. 创建每个项目、每项服务的服务账号,除非该服务账号已存在。
    4. 向每个项目、每项服务的服务账号授予该密钥的加密和解密权限。
    5. 向开发者提供关键详细信息,以便他们完成资源创建。
  3. 在 Autokey 服务代理成功返回密钥详细信息后,开发者可以立即完成受保护资源的创建。

Cloud KMS Autokey 创建的密钥具有下一部分中描述的属性。此密钥创建流程可确保职责分离。Cloud KMS 管理员仍然可以全面了解和控制 Autokey 创建的密钥。

如需在启用 Autokey 后开始使用它,请参阅使用 Cloud KMS Autokey 创建受保护的资源

Autokey 创建的密钥简介

由 Cloud KMS Autokey 创建的密钥具有以下属性:

  • 保护级别:HSM。
  • 算法:AES-256 GCM。
  • 轮替周期:一年。

    Autokey 创建密钥后,Cloud KMS 管理员可以修改轮替周期,使其不再采用默认值。

  • 职责分离
    • 系统会自动为该服务的服务账号授予密钥的加密和解密权限。
    • Cloud KMS 管理员权限会像往常一样应用于 Autokey 创建的密钥。Cloud KMS 管理员可以查看、更新、启用或停用以及销毁由 Autokey 创建的密钥。Cloud KMS 管理员未获得加密和解密权限。
    • Autokey 开发者只能请求创建和分配密钥。他们无法查看或管理钥匙。
  • 密钥专属性或精细度:由 Autokey 创建的密钥的精细度因资源类型而异。如需了解有关密钥粒度的服务特定详情,请参阅本页面上的兼容的服务
  • 位置:Autokey 会在要保护的资源所在的同一位置创建密钥。

    如果您需要在 Cloud HSM 不可用的位置创建受 CMEK 保护的资源,则必须手动创建 CMEK。

  • 密钥版本状态:使用 Autokey 请求创建的新密钥会以启用状态创建为主密钥版本。
  • 密钥环命名:Autokey 创建的所有密钥都将在所选位置的 Autokey 项目中名为 autokey 的密钥环中创建。当 Autokey 开发者请求指定位置的第一个密钥时,系统会在 Autokey 项目中创建密钥环。
  • 密钥命名:Autokey 创建的密钥遵循以下命名规范:PROJECT_NUMBER-SERVICE_SHORT_NAME-RANDOM_HEX
  • 密钥导出:与所有 Cloud KMS 密钥一样,Autokey 创建的密钥无法导出。
  • 密钥跟踪:与密钥跟踪兼容的集成 CMEK 的服务中使用的所有 Cloud KMS 密钥一样,由 Autokey 创建的密钥也会在 Cloud KMS 信息中心内进行跟踪。

强制执行 Autokey

如果您想在文件夹或项目中强制使用 Autokey,可以将 IAM 访问权限控制与 CMEK 组织政策相结合来实现此目的。为此,您需要移除 Autokey 服务代理以外的主账号的密钥创建权限,然后要求所有资源都使用 Autokey 密钥项目通过 CMEK 进行保护。如需详细了解如何强制使用 Autokey,请参阅强制使用 Autokey

兼容的服务

下表列出了与 Cloud KMS Autokey 兼容的服务:

服务 受保护资源 密钥粒度
Artifact Registry
  • artifactregistry.googleapis.com/Repository

Autokey 在创建制品库期间创建密钥,用于所有存储的制品。

每项资源一个密钥
BigQuery
  • bigquery.googleapis.com/Dataset

Autokey 会为数据集创建默认密钥。数据集中的表、模型、查询和临时表使用数据集默认密钥。

Autokey 不会为数据集以外的 BigQuery 资源创建密钥。如需保护不属于数据集的资源,您必须在项目或组织级别创建自己的默认密钥。

每项资源一个密钥
Bigtable
  • bigtableadmin.googleapis.com/Cluster

Autokey 会为集群创建密钥。

Autokey 不会为集群以外的 Bigtable 资源创建密钥。

只有在使用 Terraform 或 Google Cloud SDK 创建资源时,Bigtable 才与 Cloud KMS Autokey 兼容。

每个集群一个密钥
AlloyDB for PostgreSQL
  • alloydb.googleapis.com/Cluster
  • alloydb.googleapis.com/Backup

只有在使用 Terraform 或 REST API 创建资源时,AlloyDB for PostgreSQL 才与 Cloud KMS Autokey 兼容。

每项资源一个密钥
Cloud Run
  • run.googleapis.com/Service
  • run.googleapis.com/Job
一个项目中的每个位置对应一个密钥
Cloud SQL
  • sqladmin.googleapis.com/Instance

Autokey 不会为 Cloud SQL BackupRun 资源创建密钥。创建 Cloud SQL 实例的备份时,系统会使用主实例的客户管理密钥加密备份。

只有在使用 Terraform 或 REST API 创建资源时,Cloud SQL 才与 Cloud KMS Autokey 兼容。

每项资源一个密钥
Cloud Storage
  • storage.googleapis.com/Bucket

存储桶中的对象使用存储桶默认密钥。Autokey 不会为 storage.object 资源创建密钥。

每个分桶一个键
Compute Engine
  • compute.googleapis.com/Disk
  • compute.googleapis.com/Image
  • compute.googleapis.com/Instance
  • compute.googleapis.com/MachineImage

快照使用您要创建快照的磁盘的密钥。 Autokey 不会为 compute.snapshot 资源创建密钥。

每项资源一个密钥
Pub/Sub
  • pubsub.googleapis.com/Topic
每项资源一个密钥
Secret Manager
  • secretmanager.googleapis.com/Secret

只有在使用 Terraform 或 REST API 创建资源时,Secret Manager 才与 Cloud KMS Autokey 兼容。

一个项目中的每个位置对应一个密钥
Secure Source Manager
  • securesourcemanager.googleapis.com/Instance
每项资源一个密钥
Spanner
  • spanner.googleapis.com/Database

只有在使用 Terraform 或 REST API 创建资源时,Spanner 才与 Cloud KMS Autokey 兼容。

每项资源一个密钥
Dataflow
  • dataflow.googleapis.com/Job
每项资源一个密钥
Dataproc
  • dataproc.googleapis.com/Cluster
  • dataproc.googleapis.com/SessionTemplate
  • dataproc.googleapis.com/WorkflowTemplate
  • dataproc.googleapis.com/Batch
  • dataproc.googleapis.com/Session

对于 Cluster、SessionTemplate 和 WorkflowTemplate 资源:每个资源一个键

对于批处理资源和会话资源: 每个项目中的每个位置一个密钥

限制

后续步骤