客户管理的加密密钥

本页面讨论了客户管理的加密密钥。如需了解其他加密选项,请参阅数据加密选项。如需了解使用此功能的示例,请参阅使用客户管理的加密密钥

概览

作为基于 Google 管理的加密密钥的附加层,您可以选择使用由 Cloud Key Management Service 生成的密钥。此类密钥被称为客户管理的加密密钥。如果使用客户管理的加密密钥,加密密钥将存储在 Cloud KMS 中。然后,包含加密密钥的项目可以与包含存储分区的项目相互独立,从而更好地实现职责分离

何时使用密钥?

将客户管理的加密密钥应用于对象时,Cloud Storage 会在加密以下内容时使用该密钥:

  • 对象的数据。
  • 对象的 CRC32C 校验和。
  • 对象的 MD5 哈希值。

Cloud Storage 使用标准服务器端密钥加密对象的其余元数据,包括对象的名称。这可让您读取和更新常规元数据以及列出和删除对象,无需使用客户管理的加密密钥。但是,要执行以上任一操作,您必须具有足够的权限

例如,如果某对象是使用客户管理的加密密钥进行加密的,您必须使用该密钥才能对这一对象执行下载或移动等操作。如果您尝试在不提供密钥的情况下读取对象的元数据,您会收到对象名称和 Content-Type 之类的元数据,但不会收到对象的 CRC32C 校验和或 MD5 哈希值。如果在针对对象元数据的请求中提供了密钥,则除了收到元数据以外,您还将收到对象的 CRC32C 校验和以及 MD5 哈希值。

服务帐号

使用客户管理的加密密钥进行加密和解密是通过服务帐号完成的。在您授权 Cloud Storage 服务帐号访问加密密钥之后,服务帐号将会加密以下对象:

在 Cloud Storage 中添加或重写对象时,如果您既在存储分区上设置了默认密钥,又在请求中包含了特定的密钥,Cloud Storage 会使用该特定密钥加密对象。

当请求者想要读取使用客户管理的加密密钥加密的对象时,他们只需照常访问该对象即可。在执行此类请求的过程中,服务帐号会自动解密请求者请求的对象,前提是满足以下条件:

  • 服务帐号仍有权使用密钥进行解密。
  • 您尚未停用或销毁密钥。

如果未满足其中任何一个条件,则服务帐号不会解密数据,请求将失败。

重要资源

Cloud KMS 密钥资源采用以下格式:

projects/[PROJECT_STORING_KEYS]/locations/[LOCATION]/keyRings/[KEY_RING_NAME]/cryptoKeys/[KEY_NAME]

其中:

  • [PROJECT_STORING_KEYS] 是与该密钥关联的项目的 ID。 例如,my-pet-project
  • [LOCATION] 是密钥位置。例如,us-east1
  • [KEY_RING_NAME] 是密钥环的名称。例如,my-key-ring
  • [KEY_NAME] 是密钥的名称。例如,my-key

限制

使用客户管理的加密密钥时,存在以下限制:

  • Cloud SQL 导出到 Cloud Storage,并且 Cloud Dataflow 当前不支持使用客户管理的加密密钥加密的对象。

  • 如果源对象是使用客户管理的加密密钥进行加密的,或者将使用客户管理的加密密钥对目标对象进行加密,则您不能使用 JSON API Copy Object 方法。请改用 Rewrite Object 方法

  • 在使用客户管理的加密密钥加密一个或多个源对象时,不能使用 JSON API Compose Object 方法

  • 您无法通过更新对象的元数据来使用客户管理的加密密钥来加密对象。作为替代,在对象的重写过程中将该密钥包含在内。

  • 您必须在要加密的数据所在的位置创建 Cloud KMS 密钥。例如,如果您的存储分区位于 us-east1,用于加密其中对象的任何 Cloud KMS 密钥也必须在 us-east1 中创建。如需了解可用的 Cloud KMS 位置,请参阅 Cloud KMS 位置

  • 您不能将客户管理的加密密钥指定为 Storage Transfer Service 转移的一部分,并且源对象上的任何此类密钥都不会应用于转移的对象。 在执行转移之前,请在存储分区上设置默认的客户管理的密钥

与客户提供的加密密钥之间的关系

除了客户管理的加密,Cloud Storage 还提供客户提供的加密密钥作为控制数据加密的手段。您可以使用不同的加密方法加密单个存储分区中的不同对象,但请注意以下事项:

  • 一次只能通过其中一种方法加密单个对象。

  • 如果为您的存储分区设置了默认的客户管理的密钥,而您在请求中指定了客户提供的密钥,则 Cloud Storage 会使用客户提供的密钥来加密对象。

  • 您可以在存储分区上设置默认的客户管理的密钥,但不能在存储分区上设置默认的客户提供的密钥。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage
需要帮助?请访问我们的支持页面