默认情况下,Cloud Workstations 会对以静态方式存储的客户内容进行加密。Cloud Workstations 会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Cloud Workstations)结合使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 跟踪密钥使用情况、查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护您数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问 Cloud Workstations 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)。
默认情况下,Cloud 工作站会在静态数据时使用 Google-owned and Google-managed encryption key 加密虚拟机和永久性磁盘等工作站资源。如果您对保护数据的密钥有特定的合规性或监管要求,则可以使用 Cloud Key Management Service (Cloud KMS) 中的客户管理的加密密钥 (CMEK)。
如需大致了解 CMEK(包括其启用时间和原因),请参阅 Cloud KMS 文档。
准备工作
创建项目
在 Google Cloud 控制台的“项目选择器”页面上,选择或创建以下 Google Cloud项目:
密钥项目包含您的 Cloud KMS 资源,包括密钥环和对称加密密钥。
工作站项目包含使用 CMEK 密钥加密的工作站。
您可以为密钥项目和工作站项目使用同一项目,但最佳实践是使用两个项目来分离职责。
确保您的 Cloud 项目已启用结算功能。如需了解详情,请参阅验证项目的结算状态。
在每个项目中启用所需的 API。
在密钥项目中,确保您已启用 Cloud KMS API。
在工作站项目中,确保您已启用 Cloud KMS 和 Cloud Workstations API。
安装并初始化
gcloud
CLI:如需安装
gcloud
CLI,请参阅安装gcloud
CLI,然后按照适用于您的操作系统的说明操作。如需初始化
gcloud
CLI,请参阅初始化gcloud
CLI,或运行以下命令:gcloud init
所需的角色
虽然您可以向同一用户授予 Cloud KMS 管理员角色和 Cloud Workstations 管理员角色,但我们建议您在分配角色时遵循最小权限原则。最佳实践是将这些角色授予两个不同的用户,并让他们协调工作,而不是让 Cloud KMS 管理员同时担任 Cloud Workstations 管理员。如需了解详情,请参阅安全最佳实践和安全使用 IAM。
如需获得设置 CMEK 所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
如果您是 Cloud KMS Admin,请让管理员为您授予以下角色,以便您创建和管理 Cloud KMS 资源:密钥项目的 Cloud KMS Admin (
roles/cloudkms.admin
)。 -
如果您是 Cloud Workstations Admin,请让您的管理员为您授予以下角色,以便您创建和更新工作站:workstations 项目的 Cloud Workstations Admin (
roles/workstations.admin
)。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建密钥环和加密密钥
在密钥项目中,创建一个密钥并保存该密钥的资源 ID:
创建或选择密钥环。
密钥环必须与工作站集群位于同一区域。Cloud Workstations 不支持多区域或全球 Cloud KMS 位置。
您可以在服务之间共享密钥环,但最佳实践是,我们建议您为每个受保护资源使用不同的密钥。请参阅职责分离
创建对称加密密钥。
获取密钥的资源 ID,并将其保存以备后续步骤使用。
授予对加密密钥的访问权限
Cloud Workstations 使用以下服务账号来管理资源加密:
Cloud Workstations 服务代理:Cloud Workstations 使用此账号检测您的密钥何时轮替。
Cloud KMS 密钥服务账号:您需要提供一个服务账号,Cloud Workstations 可以使用该账号访问您的密钥以加密和解密资源。
向 Cloud Workstations 服务代理授予 Cloud KMS 查看器角色
借助 Cloud Workstations Service Agent,Cloud Workstations 可以执行项目的服务职责。当您在工作站项目中启用 Cloud 工作站服务时,系统会自动创建此服务代理。为了让 CMEK 正常运行,您需要为 workstations 项目的 Cloud Workstations 服务代理授予 Cloud KMS 密钥的
Cloud KMS 查看器角色 (roles/cloudkms.viewer
),以便 Cloud Workstations 能够检测密钥轮替。
如需检索工作站项目的 Cloud Workstations 服务代理,请使用以下命令:
gcloud beta services identity create \ --service=workstations.googleapis.com \ --project=WORKSTATIONS_PROJECT_ID
将
WORKSTATIONS_PROJECT_ID
替换为您的工作站项目的 ID。Cloud Workstations Service Agent 采用以下格式:
service-$WORKSTATIONS_PROJECT_NUMBER@gcp-sa-workstations.iam.gserviceaccount.com
。向 Cloud Workstations 服务代理授予 CMEK 密钥的 Cloud KMS 查看器角色 (
roles/cloudkms.viewer
)。这样,Cloud 工作站便可根据需要在您的项目中检测密钥轮替并重新加密资源。gcloud kms keys add-iam-policy-binding \ KEY_NAME \ --keyring=KEY_RING \ --location=LOCATION \ --project=KMS_PROJECT_ID \ --role=roles/cloudkms.viewer \ --member=CLOUD_WORKSTATIONS_SERVICE_AGENT
替换以下内容:
KEY_NAME
:密钥的名称。KEY_RING
:密钥环的名称。LOCATION
:包含密钥环的位置。KMS_PROJECT_ID
:包含您的密钥的项目的 ID。CLOUD_WORKSTATIONS_SERVICE_AGENT
:从上一步中获取的 Cloud Workstations 服务代理。
如需了解所有标志和可能值,请使用
--help
标志运行命令。
设置 Cloud KMS 密钥服务账号
Cloud Workstations 使用您选择的服务账号使用客户管理的密钥执行加密和解密。我们将此账号称为 Cloud KMS 密钥服务账号。您可以选择创建新的服务账号,也可以使用现有服务账号。此账号的要求如下:
- Cloud Workstations 管理员必须对此服务账号拥有
iam.serviceAccounts.actAs
权限。 - 您选择的服务账号必须对您的 Cloud KMS 密钥具有 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)。
如果您想创建新的服务账号,请使用以下命令:
gcloud iam service-accounts create \ KMS_KEY_SERVICE_ACCOUNT_NAME \ --display-name="Service account for Cloud Workstations CMEK" \ --project=WORKSTATIONS_PROJECT_ID
替换以下内容:
- 将
KMS_KEY_SERVICE_ACCOUNT_NAME
替换为服务账号的名称。 WORKSTATIONS_PROJECT_ID
:您的工作站项目的 ID。
您创建的服务账号的电子邮件地址采用以下格式:
KMS_KEY_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
。保存该服务账号的电子邮件地址,以备后续步骤使用。
- 将
如需向 Cloud KMS 密钥服务账号授予 Cloud Workstations Admin IAM Service Account User 角色 (
roles/iam.serviceAccountUser
),请运行以下命令:gcloud iam service-accounts add-iam-policy-binding \ KMS_KEY_SERVICE_ACCOUNT_EMAIL \ --member="user:CLOUD_WORKSTATIONS_ADMIN_EMAIL" \ --project=WORKSTATIONS_PROJECT_ID \ --role=roles/iam.serviceAccountUser
替换以下内容:
KMS_KEY_SERVICE_ACCOUNT_EMAIL
:Cloud KMS 密钥服务账号的电子邮件地址。CLOUD_WORKSTATIONS_ADMIN_EMAIL
:Cloud Workstations 管理员的电子邮件地址。WORKSTATIONS_PROJECT_ID
:您的工作站项目的 ID。
如需向 Cloud KMS 密钥服务账号授予 Cloud KMS 密钥的 CryptoKey Encrypter/Decrypter 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter
),请运行以下命令:gcloud kms keys add-iam-policy-binding \ KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --project KMS_PROJECT_ID \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --member serviceAccount:KMS_KEY_SERVICE_ACCOUNT_EMAIL\
替换以下内容:
KEY_NAME
:密钥的名称。KEY_RING
:密钥环的名称。LOCATION
:包含密钥环的位置。KMS_PROJECT_ID
:包含您的密钥的项目的 ID。KMS_KEY_SERVICE_ACCOUNT_EMAIL
:Cloud KMS 密钥服务账号的电子邮件地址。
如需了解所有标志和可能值,请使用
--help
标志运行命令。
检查工作站集群
如果 Google Cloud 控制台中没有可用的工作站集群,请让 Cloud Workstations 管理员为您在与 Cloud KMS 密钥串相同的区域中创建工作站集群,或者确保您在项目中拥有 Cloud Workstations 管理员 IAM 角色,以便自行创建这些资源。
使用客户管理的加密密钥
如果您尚未创建工作站集群,请使用 clusters create
gcloud
CLI 命令创建一个。gcloud workstations clusters create \ WORKSTATIONS_CLUSTER_NAME --region=LOCATION \ --project=WORKSTATIONS_PROJECT_ID
替换以下内容:
WORKSTATIONS_CLUSTER_NAME
:工作站集群的名称。LOCATION
:工作站集群的区域名称。WORKSTATIONS_PROJECT_ID
:您的工作站项目的 ID。
使用
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="KMS_KEY_SERVICE_ACCOUNT_EMAIL" \ --project=WORKSTATIONS_PROJECT_ID
替换以下内容:
WORKSTATIONS_CONFIG_NAME
:工作站配置的名称。WORKSTATIONS_CLUSTER_NAME
:您的工作站集群的名称。LOCATION
:集群所在的区域名称。KMS_PROJECT_ID
:项目 ID,一个唯一的字符串,用于区分您的项目与 Google Cloud中的所有其他项目。KEY_RING
:密钥环的名称。KEY_NAME
:密钥的名称。KMS_KEY_SERVICE_ACCOUNT_EMAIL
:Cloud KMS 密钥服务账号的电子邮件地址。WORKSTATIONS_PROJECT_ID
:您的工作站项目的 ID。
创建工作站配置后,Cloud KMS 会使用指定的 Cloud KMS 密钥加密项目中的永久性磁盘。
轮替客户管理的加密密钥
当您向 Cloud Workstations 服务代理授予 CMEK 密钥的 Cloud KMS 查看器角色 (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。