为啥 Google 建议将 CloudKMS 应用层加密与 Cloud Storage 结合使用?

Posted

技术标签:

【中文标题】为啥 Google 建议将 CloudKMS 应用层加密与 Cloud Storage 结合使用?【英文标题】:Why does Google recommend using CloudKMS application-layer encryption with Cloud Storage?为什么 Google 建议将 CloudKMS 应用层加密与 Cloud Storage 结合使用? 【发布时间】:2020-02-01 02:18:19 【问题描述】:

在this page关于cloud.google.com上的秘密管理,有一段这样写:

使用 Cloud KMS 中的密钥使用应用层加密。有了这个 选项,您对 Cloud 中的对象或存储桶实施加密 存储在现有 Google 加密之上,使用存储在 云 KMS。这是推荐的选项。

在其正下方,下一段指出 Google Cloud Storage 默认加密静态数据:

使用内置在 Cloud Storage 存储分区中的默认加密。 GCP 使用一种或多种加密方式对静态存储的客户内容进行加密 机制。顾名思义,此加密可通过 默认值,无需您执行任何其他操作。

对于外行,为什么这里推荐应用层加密?如果存储您的对象的 GCS 存储桶受 IAM 保护,并且 GCS 已经加密了该数据,那么可以获得什么好处?

【问题讨论】:

【参考方案1】:

这是关于控制密钥,何时数据被加密,在哪里数据被加密,以及 em> 加密数据。

仅使用 GCS,您的数据会使用 Google 存储和管理的密钥进行静态加密。您无法在此处撤消 Google 的密钥。此外,数据仅在静态和传输中通过 TLS 受到保护(但任何能够终止 TLS 的人或应用程序都会以明文形式看到秘密)。

使用 GCS + KMS(通常称为“客户管理的加密密钥”CMEK),数据在写入 GCS 之前会被加密。 GCS 仅存储加密数据(然后使用 Google 管理的密钥再次加密)。作为客户,您可以完全控制这些加密密钥的轮换和撤销。您还可以将 HSM 支持的密钥与 Cloud HSM 结合使用。此外,在遵循最佳实践时,数据在传输过程中受到保护。即使有人终止了 TLS,秘密仍然保持加密状态,直到具有 IAM 权限来解密该值的东西这样做。

如果您正在寻找一种在 GCP 上存储机密的固执方式,请查看berglas。

【讨论】:

以上是关于为啥 Google 建议将 CloudKMS 应用层加密与 Cloud Storage 结合使用?的主要内容,如果未能解决你的问题,请参考以下文章

这些 google KMS 客户端软件包有啥区别? (CloudKMS 与 KeyManagementServiceClient)

Google Cloud SQL 列级加密

资源...密钥的权限“cloudkms.cryptoKeyVersions.useToDecrypt”被拒绝

为啥我的应用在 Google Play 中被“隐藏”了?

Google Play 开发者应用营销策略-为啥图标更换后应用下载量下降?

为啥我在 Google 地图上的当前位置在 Android 应用中不正确? [复制]