Autokey 概览

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

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

使用 Autokey 时,请求新密钥所需的权限极少,并且包含在授予资源创建权限的默认角色中。这意味着,您的开发者和基础设施即代码 (IaC) 流水线不需要提权。Autokey 简化了使用 Terraform 进行密钥管理的过程,并支持最小权限原则。

您可以将 Autokey 与专用项目密钥存储(以前称为集中式密钥管理)或同项目密钥存储(以前称为委托密钥管理)搭配使用。如需将 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 的工作原理。以下用户角色会参与此流程:

管理员
管理员是负责在文件夹或组织级层管理安全性的用户。具有更高权限的 IaC 流水线可以充当管理员。
开发者
应用开发者是负责使用 Cloud KMS Autokey 创建资源的用户。IaC 流水线可以充当开发者。
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. 专用项目密钥存储:在文件夹上启用专用项目密钥存储。您需要指定一个专用密钥项目,用于存放保护文件夹内其他项目中创建的资源的密钥。
  2. 同项目密钥存储:在单个项目或文件夹中的所有项目上启用同项目密钥存储,以便在受保护资源所属的项目中创建密钥。

启用专用项目密钥存储

您必须先让管理员完成以下一次性设置任务,然后才能在文件夹中使用 Autokey 搭配专用项目密钥存储:

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

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

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

启用 Autokey 并使用同项目密钥存储

您必须先让管理员完成以下一次性设置任务,然后才能将 Autokey 与同项目密钥存储搭配使用:

  1. 在项目或文件夹中启用 Autokey,并使用同项目密钥存储。
  2. 在该项目或文件夹中的项目上启用 Cloud KMS API。

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

Autokey 开发者使用 Cloud KMS Autokey

为项目成功启用 Autokey 后,开发者和 IaC 流水线可以创建使用按需为其创建的密钥保护的资源。这既适用于启用了 Autokey(采用专用项目密钥存储)的文件夹中的项目,也适用于启用了 Autokey(采用同项目密钥存储)的项目。资源创建过程的详细信息取决于您要创建的资源,但该过程遵循以下流程:

  1. 开发者开始在兼容的 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。
  • 轮替周期:1 年。

    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-RESOURCE_TYPE_DESCRIPTOR_NAME-RANDOM_HEX
  • 密钥导出:与所有 Cloud KMS 密钥一样,Autokey 创建的密钥无法导出。
  • 密钥跟踪:与在与密钥跟踪兼容的 CMEK 集成服务中使用的所有 Cloud KMS 密钥一样,Autokey 创建的密钥会在 Cloud KMS 信息中心内进行跟踪。

控制 Autokey 的使用

您可以使用以下控制措施来控制 Autokey 在组织中的使用方式:

  • Autokey 配置:您可以在要使用 Autokey 的文件夹或项目中启用 Autokey。Autokey 配置由子资源继承,但可以被较低级别设置的配置覆盖,例如,在项目上设置的 Autokey 配置优先于父级文件夹的配置。这样,您就可以自下而上地控制 Autokey。如需详细了解如何启用和停用 Autokey,请参阅启用 Cloud KMS Autokey。
  • IAM:您可以使用 IAM 角色授予和拒绝政策来控制谁可以创建和更新 Autokey 配置,以及谁可以创建使用 Autokey 保护的资源。这些 IAM 控制措施可以在组织、文件夹或项目级层设置。IAM 角色授权允许主账号执行其角色允许的操作。IAM 拒绝政策会阻止个别权限,即使这些权限包含在授予主账号的角色中也是如此。在父级资源上设置的 IAM 拒绝政策无法被在较低级别设置的更宽松政策覆盖;这样,您就可以自上而下地控制谁可以启用和使用 Autokey。如需详细了解如何使用 IAM 拒绝政策控制组织中的 Autokey 使用,请参阅使用 IAM 拒绝政策控制 Autokey。
  • 组织政策:您可以使用自定义组织政策限制条件来控制 Autokey 的配置位置和方式。您可以在组织、文件夹或项目级层强制执行组织政策限制条件。组织政策会被子资源继承,但可以被在较低级层强制执行的政策覆盖。如需详细了解如何使用自定义组织政策限制条件来控制组织中的 Autokey 使用,请参阅使用自定义组织政策限制条件控制 Autokey。

兼容的服务

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

服务 受保护资源 密钥粒度
AlloyDB for PostgreSQL
  • alloydb.googleapis.com/Cluster
  • alloydb.googleapis.com/Backup

AlloyDB for PostgreSQL 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
Apigee
  • apigee.googleapis.com/Organization
  • apigee.googleapis.com/Instance

Apigee 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
Apigee API Hub
  • apihub.googleapis.com/ApiHubInstance

Apigee API Hub 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
Artifact Registry
  • artifactregistry.googleapis.com/Repository

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

每项资源一个密钥
Backup and DR Service
  • backupdr.googleapis.com/BackupVault
每项资源一个密钥
Backup for GKE
  • gkebackup.googleapis.com/BackupPlan

Backup for GKE 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

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

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

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

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

Autokey 会为集群创建密钥。

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

Bigtable 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 Google Cloud SDK 创建的资源。

每个集群一个密钥
Cloud Run
  • run.googleapis.com/Service
  • run.googleapis.com/Job
项目中每个位置一个密钥
Cloud SQL
  • sqladmin.googleapis.com/Instance

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

Cloud SQL 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
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 资源创建密钥。

每项资源一个密钥
Google Kubernetes Engine
  • container.googleapis.com/Cluster

Google Kubernetes Engine 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每个集群一个密钥
Dataflow
  • dataflow.googleapis.com/Job
每项资源一个密钥
Datastream
  • datastream.googleapis.com/Stream

Datastream 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
Document AI
  • documentai.googleapis.com/Processor

保护处理器的密钥必须与处理器位于同一位置,但多区域除外:us-central1 对应 us 多区域,europe-west4 对应 eu 多区域。对于多区域处理器,请在相应区域中创建密钥句柄。

每项资源一个密钥
Managed Service for Apache Airflow
  • composer.googleapis.com/Environment
每项资源一个密钥
Managed Service for Apache Spark
  • dataproc.googleapis.com/Cluster
  • dataproc.googleapis.com/SessionTemplate
  • dataproc.googleapis.com/WorkflowTemplate
  • dataproc.googleapis.com/Batch
  • dataproc.googleapis.com/Session

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

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

Memorystore for Redis
  • redis.googleapis.com/Instance
  • redis.googleapis.com/Cluster

Memorystore for Redis 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
Memorystore for Valkey
  • memorystore.googleapis.com/Instance

Memorystore for Valkey 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
Migrate to Virtual Machines
  • vmmigration.googleapis.com/MigratingVm
  • vmmigration.googleapis.com/Source

Migrate to Virtual Machines 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

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

Secret Manager 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

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

Spanner 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥
Filestore
  • file.googleapis.com/Instance
  • file.googleapis.com/Backup
每项资源一个密钥
Workflows
  • workflows.googleapis.com/Workflow

Workflows 与 Cloud KMS Autokey 之间的集成仅适用于使用 Terraform 或 REST API 创建的资源。

每项资源一个密钥

后续步骤