默认情况下,Cloud Workstations 使用 Google 拥有和 Google 管理的密钥 加密工作站资源(例如虚拟机和永久性磁盘) 静态数据 如果您对密钥具有特定的合规性或监管要求 保护您数据的方法,您可以使用 客户管理的加密密钥 (CMEK) Cloud Key Management Service (Cloud KMS)。
如需大致了解 CMEK(包括其启用时间和原因),请参阅 Cloud KMS 文档。
准备工作
创建项目
在 Google Cloud 控制台的“项目选择器”页面上,选择或创建两个 Google Cloud 项目:
密钥项目包含您的 Cloud KMS 资源,包括密钥环和对称加密密钥。
工作站项目包含使用 CMEK 密钥加密的工作站。
您可以为密钥项目和工作站项目使用同一项目,但按照最佳实践,我们建议您使用两个项目来分离职责。
确保您的 Cloud 项目已启用结算功能。了解如何 检查是否已在 Chrome 设备上 项目。
在每个项目中启用所需的 API。
在密钥项目中,确保您已启用 Cloud KMS API。
在工作站项目中,确保您已启用 Cloud KMS 和 Cloud Workstations API。
确保您已安装并初始化
gcloud
CLI。接收者 初始化gcloud
CLI, 运行以下命令:gcloud init
所需的角色
虽然您可以向同一人授予 Cloud KMS 管理员角色和 Cloud Workstations 管理员角色,但我们建议您在分配角色时遵循最小权限原则。最佳实践是将这些角色授予两个不同的用户,并让他们协调工作,而不是让 Cloud KMS 用户同时也是 Cloud Workstations 管理员。如需了解详情,请参阅安全最佳实践和安全使用 IAM。
如需获得设置 CMEK 所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
如果您是 Cloud KMS 管理员,请让管理员授予您以下角色,以便您可以创建和管理 Cloud KMS 资源:
Cloud KMS 管理员 (
roles/cloudkms.admin
) 在您的密钥项目上。 -
如果您是 Cloud Workstations Admin,请让您的管理员为您授予以下角色,以便您创建和更新工作站:workstations 项目的 Cloud Workstations Admin (
roles/workstations.admin
)。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建密钥环和加密密钥
在密钥项目中,创建密钥并保存该密钥的资源 ID:
创建或选择 密钥环。
您可以在服务之间共享钥匙串,但最佳实践是,我们建议您为每个受保护资源使用不同的密钥。请参阅职责分离。
创建 对称加密密钥。
请务必在 同一区域
获取密钥的资源 ID,并将其保存以备后续步骤使用。
检查工作站配置
如果您在 Google Cloud 控制台中 Google Cloud 控制台、 让您的 Cloud Workstations 管理员创建一个 工作站配置,或确保您拥有 Cloud Workstations 管理员 针对项目的 IAM 角色,您可以自行创建这些资源。
使用客户管理的加密密钥
如需在工作站配置中使用 CMEK,请通过 Google Cloud 控制台或 gcloud
CLI 开启 CMEK。
控制台
为您的 Compute Engine 服务账号和 Compute Engine 服务代理授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色 和 Cloud KMS Viewer 角色:
在 Google Cloud 控制台中,进入密钥管理页面。
点击包含密钥的密钥环的名称。
选中要使用的密钥对应的复选框。
权限标签页以窗格形式显示。
在添加成员对话框中,指定您要授予其访问权限的 Compute Engine 服务账号和 Compute Engine 服务代理的电子邮件地址。
在选择角色下拉列表中,选择 Cloud KMS CryptoKey Encrypter/Decrypter。
点击添加其他角色。
在选择角色下拉列表中,选择 Cloud KMS Viewer。
点击保存。
如需通过 Google Cloud 控制台启用 CMEK,请执行以下操作:
gcloud
以下示例会授予提供访问权限的 IAM 角色 添加到 Cloud KMS 密钥,然后通过在 Google Cloud 控制台中指定该密钥来启用 CMEK 工作站配置:
为工作站项目的 KMS 服务账号和 Compute Engine 服务代理授予 CMEK 密钥的 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)。这样一来,Compute Engine 服务便可以使用指定的 CMEK 密钥在您的项目中创建加密资源。gcloud kms keys add-iam-policy-binding KEY_NAME \ --location LOCATION \ --keyring KEY_RING \ --member serviceAccount:WORKSTATIONS_PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KMS_PROJECT_ID gcloud kms keys add-iam-policy-binding KEY_NAME \ --location LOCATION \ --keyring KEY_RING \ --member serviceAccount:service-WORKSTATIONS_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KMS_PROJECT_ID
替换以下内容:
KEY_NAME
:密钥的名称。LOCATION
:您创建密钥的区域名称 响铃。KEY_RING
:密钥环的名称。WORKSTATIONS_PROJECT_NUMBER
:自动生成的唯一数字标识符,作为工作站项目的 Compute Engine 默认服务账号的第一部分包含在内。KMS_PROJECT_ID
:项目 ID,一个唯一的字符串,用于区分您的 Cloud KMS 项目与 Google Cloud 中的所有其他项目。
如需了解所有标志和可能的值,请使用
--help
标志。如需检索工作站项目的工作站管理服务账号,请使用以下命令:
gcloud beta services identity create --service=workstations.googleapis.com \ --project=WORKSTATIONS_PROJECT_ID
将
WORKSTATIONS_PROJECT_ID
替换为您的工作站 项目 ID。为您的项目的工作站管理服务账号授予 Cloud KMS Viewer 角色 (
roles/cloudkms.viewer
) 对 CMEK 密钥的访问权限。这样,工作站服务便可根据需要在您的项目中检测密钥轮替并重新加密资源。gcloud kms keys add-iam-policy-binding KEY_NAME \ --location LOCATION \ --keyring KEY_RING \ --member WORKSTATIONS_MANAGEMENT_SERVICE_ACCOUNT \ --role roles/cloudkms.viewer \ --project KMS_PROJECT_ID
替换以下内容:
KEY_NAME
:密钥的名称。LOCATION
:您创建密钥的区域名称 响铃。KEY_RING
:密钥环的名称。WORKSTATIONS_MANAGEMENT_SERVICE_ACCOUNT
: 从上述步骤获得的工作站管理服务账号。KMS_PROJECT_ID
:项目 ID,一个唯一的字符串,用于区分您的 Cloud KMS 密钥项目与 Google Cloud 中的所有其他项目。
如需了解所有标志和可能的值,请使用
--help
标志。可选:如果您尚未创建工作站集群,请使用 clusters create
gcloud
CLI 命令创建一个。gcloud workstations clusters create \ WORKSTATIONS_CLUSTER_NAME --region=LOCATION \ --project=WORKSTATIONS_PROJECT_NUMBER
替换以下内容:
WORKSTATIONS_CLUSTER_NAME
:工作站集群的名称。LOCATION
:工作站集群的区域名称。WORKSTATIONS_PROJECT_NUMBER
:自动生成的唯一数字标识符,作为工作站项目的 Compute Engine 默认服务账号的第一个部分包含在内
假设您已经创建了一个集群, 创建工作站配置 使用
encryption_key
设置。如需创建机器类型为
e2-standard-2
、空闲超时为3600s
且使用 CMEK 加密工作站资源的工作站配置,请运行以下gcloud
CLI 命令:gcloud workstations configs create WORKSTATIONS_CONFIG_NAME \ --cluster=WORKSTATIONS_CLUSTER_NAME \ --region=LOCATION \ --machine-type="e2-standard-2" \ --idle-timeout=3600 \ --kms-key="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" \ --kms-key-service-account="WORKSTATIONS_PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --project=WORKSTATIONS_PROJECT_NUMBER
替换以下内容:
WORKSTATIONS_CONFIG_NAME
:工作站配置的名称。WORKSTATIONS_CLUSTER_NAME
:您的工作站集群的名称。LOCATION
:集群的区域名称。KMS_PROJECT_ID
:项目 ID,一个唯一的字符串,用于区分您的项目与 Google Cloud 中的所有其他项目。KEY_RING
:密钥环的名称。KEY_NAME
:密钥的名称。WORKSTATIONS_PROJECT_NUMBER
:自动生成的唯一数字标识符,作为工作站项目的 Compute Engine 默认服务账号的第一个部分包含在内
创建工作站配置后,Cloud KMS 会对 项目中具有指定 Cloud KMS 的永久性磁盘 键。
轮替客户管理的加密密钥
向工作站管理服务账号授予 Cloud KMS Viewer 角色时
(roles/cloudkms.viewer
)
,则工作站服务能够检测密钥轮替,并使用新的主密钥版本重新加密主磁盘。
停止工作站后需要重新加密。每次停止加密的工作站时,工作站服务会检查 密钥已轮替。如果密钥已轮替,工作站服务会为工作站的主磁盘创建快照并删除该磁盘。当您下次启动工作站时,工作站服务会使用新的主密钥版本根据快照创建新的磁盘。
Cloud KMS 配额和 Cloud Workstations
在 Cloud Workstations 中使用 CMEK 时, 您的项目可以使用 Cloud KMS 加密请求 配额。例如,由 CMEK 加密的制品库可为每次上传或下载消耗这些配额。仅当您使用硬件 (Cloud HSM) 或外部 (Cloud EKM) 密钥时,使用 CMEK 密钥执行的加密和解密操作才会影响 Cloud KMS 配额。如需了解详情,请参阅 Cloud KMS 配额。
外部密钥
您可以通过 Cloud External Key Manager (Cloud EKM) 使用您管理的外部密钥加密 Google Cloud 中的数据。
当您使用 Cloud EKM 密钥时,Google 无法控制外部管理的密钥的可用性。如果密钥不可用, 您的工作站将无法启动。
如需了解使用外部密钥的更多注意事项,请参阅 Cloud External Key Manager。
后续步骤
- 了解由客户管理的加密 密钥。
- 了解什么是加密?