Autokey 概览

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

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

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

您可以将 Autokey 与专用项目密钥存储(以前 称为 集中式密钥管理)或同项目密钥存储 (以前称为 委托密钥管理)搭配使用。如需将 Autokey 与专用项目密钥存储搭配使用,您必须拥有包含文件夹资源的组织资源。使用专用项目密钥存储时,您可以为文件夹中的项目启用 Autokey,Autokey 创建的密钥将在该文件夹的指定密钥项目中创建。使用同项目密钥存储时,您可以在文件夹或项目上启用 Autokey,以便 Autokey 在受保护资源所属的项目中创建密钥。

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

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

Autokey 的工作原理

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

管理员
管理员是负责在文件夹或组织级层管理安全性的用户。nk
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. 专用项目密钥存储:在文件夹中启用专用项目密钥存储。您可以指定一个专用密钥项目来保存用于保护在该文件夹中的其他项目中创建的资源的密钥。
  2. 同项目密钥存储:在单个项目或文件夹中的所有项目中启用同项目密钥存储,以便在受保护资源所属的项目中创建密钥。

启用专用项目密钥存储

如需在文件夹中使用 Autokey 和专用项目密钥存储,管理员必须完成以下一次性设置任务:

  1. 在文件夹中启用 Autokey 和专用项目密钥存储,并确定将包含该文件夹的 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 后,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 的方式:

  • 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 在创建代码库期间创建密钥,用于所有 存储的制品。

每项资源一个密钥
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
每项资源一个密钥
Managed Service for Apache Airflow
  • composer.googleapis.com/Environment

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

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

对于 Batch 和 Session 资源: 每个项目中的每个位置一个密钥

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

Memorystore for Redis 与 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
每项资源一个密钥

限制

后续步骤