默认情况下,Compute Engine 会对静态客户内容进行加密。Compute Engine 会为您处理加密工作,您无需执行任何额外操作。此选项称为 Google 默认加密。
不过,您可以通过提供密钥加密密钥 (KEK) 来自定义 Compute Engine 对资源使用的加密方式。密钥加密密钥不直接加密数据,而是对 Compute Engine 用来加密数据的 Google 生成的密钥进行加密。
您可以通过两种方式提供密钥加密密钥:
推荐。在 Cloud KMS 中使用 Compute Engine 的客户管理加密密钥 (CMEK)。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 跟踪密钥使用情况、查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护您数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
您可以手动创建 CMEK,也可以使用 Cloud KMS Autokey 让系统自动代表您创建 CMEK。
在大多数情况下,创建 CMEK 加密的磁盘后,您无需在使用磁盘时指定密钥。
您可以在 Compute Engine 之外管理自己的密钥加密密钥,并在创建或管理磁盘时提供密钥。此选项称为客户提供的加密密钥 (CSEK)。管理 CSEK 加密资源时,必须始终指定加密资源时使用的密钥。
如需了解详情,请参阅客户管理的加密密钥和客户提供的加密密钥。
支持的磁盘类型
本部分列出了 Compute Engine 提供的磁盘和其他存储选项支持的加密类型。
永久性磁盘卷支持 Google 默认加密、CMEK 和 CSEK。
Google Cloud Hyperdisk 支持 CMEK 和 Google 默认加密。您无法使用 CSEK 来加密 Hyperdisk。
本地 SSD 磁盘仅支持 Google 默认加密。您无法使用 CSEK 或 CMEK 来加密本地 SSD 磁盘。
将 CMEK 与 Cloud KMS Autokey 结合使用
如果您选择使用 Cloud KMS 密钥来保护 Compute Engine 资源,可以手动创建 CMEK,也可以使用 Cloud KMS Autokey 来创建密钥。借助 Autokey,在 Compute Engine 中创建资源时,系统会按需生成密钥环和密钥。系统会创建使用密钥执行加密和解密操作的服务代理(如果它们尚不存在),并授予所需的 Identity and Access Management (IAM) 角色。如需了解详情,请参阅 Autokey 概览。
如需了解如何使用 Cloud KMS Autokey 创建的 CMEK 来保护 Compute Engine 资源,请参阅将 Autokey 与 Compute Engine 资源结合使用。
快照
使用 Autokey 创建密钥以保护 Compute Engine 资源时,Autokey 不会为快照创建新密钥。您必须使用加密来源磁盘时所用的同一密钥来加密快照。如果您使用 Google Cloud 控制台创建快照,则磁盘使用的加密密钥会自动应用于快照。如果您使用 gcloud CLI、Terraform 或 Compute Engine API 创建快照,则必须获取用于加密磁盘的密钥的资源标识符,然后使用该密钥对快照进行加密。
使用客户管理的加密密钥来加密磁盘
如需详细了解如何使用手动创建的客户管理的加密密钥 (CMEK) 来加密磁盘和其他 Compute Engine 资源,请参阅使用 Cloud KMS 密钥保护资源。
使用客户提供的加密密钥来加密磁盘
如需了解如何使用客户提供的加密密钥 (CSEK) 来加密磁盘和其他 Compute Engine 资源,请参阅使用客户提供的加密密钥来加密磁盘。
查看有关磁盘加密的信息
Compute Engine 中的磁盘使用 Google 管理的加密密钥、客户管理的加密密钥或客户提供的加密密钥进行加密。Google 管理的加密是默认选项。
如需查看磁盘的加密类型,您可以使用 gcloud CLI、Google Cloud 控制台或 Compute Engine API。
控制台
在 Google Cloud 控制台中,转到磁盘页面。
在名称列中,点击磁盘的名称。
在属性表中,标记为加密的行表示加密的类型:由 Google 管理、由客户管理或由客户提供。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
使用
gcloud compute disks describe
命令:gcloud compute disks describe DISK_NAME \ --zone=ZONE \ --format="json(diskEncryptionKey)"
替换以下内容:
PROJECT_ID
:您的项目 ID。ZONE
:您的磁盘所在的区域。DISK_NAME
:磁盘的名称。命令输出
如果输出为
null
,则表示磁盘使用默认的 Google 管理的加密。否则,输出为 JSON 对象。
如果 JSON 对象包含名为
diskEncryptionKey
的字段,则磁盘会进行加密。diskEncryptionKey
对象包含有关磁盘是使用 CMEK 加密还是 CSEK 加密的信息:- 如果存在
diskEncryptionKey.kmsKeyName
属性,则表示磁盘采用 CMEK 加密。kmsKeyName
属性指示用于加密磁盘的特定密钥的名称:{ "diskEncryptionKey": { "kmsKeyName": "projects/my-proj/.." } }
- 如果存在
diskEncryptionKey.sha256
属性,则表示磁盘采用 CSEK 加密。sha256
属性是用于保护磁盘的客户提供的加密密钥的 SHA-256 哈希。{ "diskEncryptionKey": { "sha256": "abcdefghijk134560459345dssfd" } }
- 如果存在
API
向 compute.disks.get
方法发出 POST
请求。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
替换以下内容:
PROJECT_ID
:您的项目 ID。ZONE
:您的磁盘所在的区域。DISK_NAME
:磁盘的名称
请求响应
如果响应为 null
,则表示磁盘使用默认的 Google 管理的加密。
否则,响应为 JSON 对象。
如果 JSON 对象包含名为 diskEncryptionKey
的字段,则磁盘会进行加密。diskEncryptionKey
对象包含有关磁盘是使用 CMEK 加密还是 CSEK 加密的信息:
- 如果存在
diskEncryptionKey.kmsKeyName
属性,则表示磁盘采用 CMEK 加密。kmsKeyName
属性指示用于加密磁盘的特定密钥的名称:{ "diskEncryptionKey": { "kmsKeyName": "projects/my-proj/.." } }
- 如果存在
diskEncryptionKey.sha256
属性,则表示磁盘采用 CSEK 加密。sha256
属性是用于保护磁盘的客户提供的加密密钥的 SHA-256 哈希。{ "diskEncryptionKey": { "sha256": "abcdefghijk134560459345dssfd" } }
如果磁盘使用 CMEK 加密,您可以按照按项目查看密钥中的步骤找到有关密钥、其密钥环和位置的详细信息。
如果磁盘使用 CSEK 加密,请与组织管理员联系,以详细了解该密钥。 您还可以使用 CMEK,通过密钥使用情况跟踪来查看密钥所保护的资源。如需了解详情,请参阅查看密钥使用情况。
后续步骤
- 如需了解如何自动创建 CMEK,请参阅 Cloud KMS with Autokey(预览版)。
- 如需了解如何创建 CMEK,请参阅使用 Cloud KMS 创建加密密钥。
- 使用客户管理的加密密钥 (CMEK) 加密磁盘。
- 详细了解 CSEK 的格式和规范。