默认情况下,Cloud Data Fusion 会对以静态方式存储的客户内容进行加密。Cloud Data Fusion 会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Cloud Data Fusion)结合使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 跟踪密钥使用情况、查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护您数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问 Cloud Data Fusion 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)。
Cloud Data Fusion 支持对 Instance
资源进行 Cloud KMS 密钥使用情况跟踪。
借助 CMEK,您可以控制写入到租户项目中的 Google 内部资源的数据以及由 Cloud Data Fusion 流水线写入的数据,包括:
- 流水线日志和元数据
- Dataproc 集群元数据
- 各种 Cloud Storage、BigQuery、Pub/Sub 和 Spanner 数据接收器、操作和来源
Cloud Data Fusion 资源
如需查看支持 CMEK 的 Cloud Data Fusion 插件列表,请参阅支持的插件。
Cloud Data Fusion 支持将 CMEK 用于 Dataproc 集群。Cloud Data Fusion 会创建临时 Dataproc 集群以供在流水线中使用,然后在流水线完成时删除集群。CMEK 会保护写入以下位置的集群元数据:
- 连接到集群虚拟机的永久性磁盘 (PD)。
- 写入自动创建或用户创建的 Dataproc 暂存存储桶的作业驱动程序输出和其他元数据。
设置 CMEK
创建 Cloud KMS 密钥
在包含 Cloud Data Fusion 实例的 Google Cloud 项目中或在单独的用户项目中创建 Cloud KMS 密钥。Cloud KMS 密钥环的位置必须与您创建实例的区域相匹配。不允许在实例级别使用多区域密钥或全球区域密钥,因为 Cloud Data Fusion 始终与特定区域相关联。
获取密钥的资源名称
REST API
使用以下命令获取您创建的密钥的资源名称:
projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
替换以下内容:
- PROJECT_ID:托管 Cloud Data Fusion 实例的客户项目
- REGION:靠近您位置的 Google Cloud 区域,例如
us-east1
- KEY_RING_NAME:将加密密钥分组到一起的密钥环的名称
- KEY_NAME:Cloud KMS 密钥名称
控制台
前往密钥管理页面。
点击密钥旁边的更多
。选择复制资源名称,将资源名称复制到剪贴板。
更新项目的服务账号以使用密钥
设置项目的服务账号以使用您的密钥:
必需:将 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) 授予 Cloud Data Fusion 服务代理(请参阅将角色授予特定资源的服务账号)。此账号采用以下格式:service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com
通过向 Cloud Data Fusion 服务代理授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色,Cloud Data Fusion 能够使用 CMEK 加密存储在租户项目中的任何客户数据。
必需:向 Compute Engine 服务代理授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色(请参阅将 Cloud KMS 密钥分配给 Cloud Storage 服务账号)。此账号默认情况下会被授予 Compute Engine Service Agent 角色,其格式如下:
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
通过将 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Compute Engine 服务代理,可让 Cloud Data Fusion 使用 CMEK 来加密 Dataproc 写入的永久性磁盘 (PD) 元数据流水线。
必需:向 Cloud Storage 服务代理授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色(请参阅将 Cloud KMS 密钥分配给 Cloud Storage Service Agent)。此服务代理的格式如下:
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
如果向 Cloud Storage 服务代理授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色,则 Cloud Data Fusion 可以使用 CMEK 对写入 Dataproc 集群暂存存储分区以及流水线使用的任何其他 Cloud Storage 资源的数据进行加密。
必需:向 Google Cloud Dataproc 服务代理授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色。此服务代理的格式如下:
service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com
可选:如果您的流水线使用 BigQuery 资源,请将 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 BigQuery 服务账号(请参阅授予加密和解密权限)。该账号的格式如下:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
可选:如果您的流水线使用 Pub/Sub 资源,请将 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Pub/Sub 服务账号(请参阅使用客户管理的加密密钥)。该账号的格式如下:
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
可选:如果您的流水线使用 Spanner 资源,请向 Spanner 服务账号授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色。该账号的格式如下:
service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com
使用 CMEK 创建 Cloud Data Fusion 实例
Cloud Data Fusion 6.5.0 版及更高版本的所有版本均支持 CMEK。
REST API
如需创建具有客户管理的加密密钥的实例,请设置以下环境变量:
export PROJECT=PROJECT_ID export LOCATION=REGION export INSTANCE=INSTANCE_ID export DATA_FUSION_API_NAME=datafusion.googleapis.com export KEY=KEY_NAME
替换以下内容:
- PROJECT_ID:托管 Cloud Data Fusion 实例的客户项目
- REGION:靠近您位置的 Google Cloud 区域,例如
us-east1
- INSTANCE_ID:Cloud Data Fusion 实例的名称
- KEY_NAME:CMEK 密钥的完整资源名称
运行以下命令创建 Cloud Data Fusion 实例:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1/projects/$PROJECT/locations/$LOCATION/instances?instance_id=INSTANCE -X POST -d '{"description": "CMEK-enabled CDF instance created through REST.", "type": "BASIC", "cryptoKeyConfig": {"key_reference": "$KEY"} }'
控制台
检查实例是否已启用 CMEK
控制台
查看实例详情:
在 Google Cloud 控制台中,前往 Cloud Data Fusion 页面。
点击实例,然后点击实例名称以前往实例详情页面。
如果已启用 CMEK,加密密钥字段会显示为可用。
如果 CMEK 处于停用状态,加密密钥字段会显示为不可用。
搭配使用 CMEK 与支持的插件
设置加密密钥名称时,请使用以下格式:
projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
下表介绍了支持 CMEK 的 Cloud Data Fusion 插件中的密钥的行为。
支持的插件 | 密钥的行为 |
---|---|
Cloud Data Fusion 接收器 | |
Cloud Storage | 加密写入由插件创建的任何存储桶的数据。如果该存储桶已存在,则系统会忽略此值。 |
Cloud Storage multi-file | 加密写入由插件创建的任何存储分区的数据。 |
BigQuery | 加密写入由插件创建的任何存储分区、数据集或表的数据。 |
BigQuery multi-table | 加密写入由插件创建的任何存储分区、数据集或表的数据。 |
Pub/Sub | 加密写入由插件创建的任何主题的数据。如果主题已存在,则系统会忽略此值。 |
Spanner | 加密写入由插件创建的任何数据库的数据。如果数据库已存在,则系统会忽略此值。 |
Cloud Data Fusion 操作 | |
Cloud Storage 创建 Cloud Storage 复制 Cloud Storage 移动 Cloud Storage 完成文件标记 |
加密写入由插件创建的任何存储桶的数据。如果该存储桶已存在,则系统会忽略此值。 |
BigQuery Execute | 加密写入到插件创建的数据集或表中的数据,以存储查询结果。只有在您将查询结果存储在 BigQuery 表中时,此参数才适用。 |
Cloud Data Fusion 来源 | |
BigQuery 来源 | 加密写入由插件创建的任何存储桶的数据。如果该存储桶已存在,则系统会忽略此值。 |
Cloud Data Fusion SQL 引擎 | |
BigQuery 下推式引擎 | 加密写入由插件创建的任何存储分区、数据集或表的数据。 |
搭配使用 CMEK 与 Dataproc 集群元数据
预先创建的计算配置文件使用在实例创建期间提供的 CMEK 密钥来加密 Persistent Disk (PD) 和由流水线中运行的 Dataproc 集群写入的暂存存储桶元数据。您可以通过执行以下操作之一进行修改以使用其他密钥:
- 建议:创建新的 Dataproc 计算配置文件(仅限企业版)。
- 修改现有 Dataproc 计算配置文件(开发者版、基本版或企业版)。
控制台
打开 Cloud Data Fusion 实例:
在 Google Cloud 控制台中,前往 Cloud Data Fusion 页面。
如需在 Cloud Data Fusion Studio 中打开实例,请点击实例,然后点击查看实例。
依次点击系统管理 > 配置。
点击系统计算配置文件下拉列表。
点击创建新的付款资料,然后选择 Dataproc。
输入配置文件标签、配置文件名称和说明。
默认情况下,每当 Cloud Data Fusion 创建临时集群时,Dataproc 都会创建暂存存储分区和临时存储分区。Cloud Data Fusion 支持在计算配置中将 Dataproc 暂存存储分区作为参数传递。如需对暂存桶进行加密,请创建一个支持 CMEK 的存储分区,并将其作为参数传递给计算配置文件中的 Dataproc。
默认情况下,Cloud Data Fusion 会自动创建一个 Cloud Storage 存储分区,以暂存 Dataproc 使用的依赖项。如果您希望使用项目中已有的 Cloud Storage 存储分区,请按照以下步骤操作:
在常规设置部分的 Cloud Storage 存储分区字段中输入现有的 Cloud Storage 存储分区。
获取 Cloud KMS 密钥的资源 ID。在常规设置部分的加密密钥名称字段中,输入您的资源 ID。
点击创建。
如果配置标签页的系统计算配置文件部分中列出了多个配置文件,请将新的 Dataproc 配置文件设置为默认配置文件,方法是将鼠标指针放在配置文件名称字段上,然后点击显示的星形图标。
搭配使用 CMEK 与其他资源
在创建 Cloud Data Fusion 实例期间,提供的 CMEK 密钥被设置为系统偏好设置。它用于加密流水线接收器(例如 Cloud Storage、BigQuery、Pub/Sub 或 Spanner 接收器)写入新创建的资源的数据。
此密钥仅适用于新创建的资源。如果资源在流水线执行之前已存在,您应该手动将 CMEK 密钥应用于这些现有资源。
您可以通过执行以下操作之一更改 CMEK 密钥:
- 使用运行时参数。
- 设置 Cloud Data Fusion 系统偏好设置。
运行时参数
- 在 Cloud Data Fusion 流水线 Studio页面中,点击运行按钮右侧的向下箭头。
- 在名称字段中,输入
gcp.cmek.key.name
。 - 在值字段中,输入密钥的资源 ID。
点击保存。
您在此处设置的运行时参数仅适用于目前运行的流水线。
偏好设置
- 在 Cloud Data Fusion 界面中,点击系统管理员。
- 点击配置标签。
- 点击系统偏好设置下拉列表。
- 点击修改系统偏好设置。
- 在密钥字段中,输入
gcp.cmek.key.name
。 - 在值字段中,输入密钥的资源 ID。
- 点击保存并关闭。