本页面介绍了如何将客户管理的加密密钥 (CMEK) 与 Database Migration Service 迁移作业配合使用。
默认情况下,Database Migration Service(Oracle 到 AlloyDB for PostgreSQL)会对以静态方式存储的客户内容进行加密。Database Migration Service(Oracle 到 AlloyDB for PostgreSQL)会为您处理加密,您无需执行任何 其他操作。此选项称为“Google 默认加密”。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Database Migration Service [Oracle 到 AlloyDB for PostgreSQL])结合使用。使用 Cloud KMS 密钥时,您可以控制其保护 级别、位置、轮替时间表、使用和访问权限以及加密边界。 使用 Cloud KMS 还可让您跟踪密钥使用情况、查看审核日志以及控制密钥生命周期。 这样您就可以在 Cloud KMS 中控制和管理用于保护数据的对称 密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问您的 Database Migration Service(Oracle 到 AlloyDB for PostgreSQL)资源的体验与使用 Google 默认加密功能类似。 如需详细了解加密 选项,请参阅客户管理的加密密钥 (CMEK)。
Database Migration Service 支持 CMEK 的区域
CMEK 在所有 Database Migration Service 位置均可用。
将 CMEK 与 Cloud KMS Autokey 结合使用
您可以手动创建 CMEK 以保护 Database Migration Service(Oracle 到 AlloyDB for PostgreSQL) 资源,也可以使用 Cloud KMS Autokey。借助 Autokey,系统会按需生成密钥环和密钥,以 支持在 Database Migration Service(Oracle 到 AlloyDB for PostgreSQL)中创建或更新资源。 系统会创建使用密钥执行加密和解密操作的服务代理(如果它们尚不 存在),并向其授予所需的 Identity and Access Management (IAM) 角色。如需了解详情,请参阅 Autokey 概览。
了解服务账号
如果您的 Database Migration Service 迁移作业启用了 CMEK,您需要使用服务帐号从 Cloud Key Management Service 请求密钥访问权限。
如需在项目上使用 CMEK,您必须拥有服务帐号,并且必须向服务帐号授予密钥访问权限。该服务帐号必须存在于项目内。该服务帐号在所有区域均可见。
了解密钥
在 Cloud Key Management Service 中,您需要创建一个包含 加密密钥的密钥环,并设置位置。在 Database Migration Service 中创建新迁移作业时,您可以选择此密钥来加密该迁移作业。
在创建使用 CMEK 的新迁移作业时,您需要知道密钥 ID 和密钥区域。您必须将目标数据库放在与迁移作业关联的 CMEK 所在的区域中。您可以为密钥和目标数据库创建一个项目,也可以为它们分别创建不同的项目。
CMEK 使用以下格式:
projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]
如何使 CMEK 加密的数据永远无法访问?
您可能遇到这样的情况,即您需要永久销毁使用 CMEK 加密的数据。为此,您可以销毁 CMEK 版本。 您不能销毁密钥环或密钥,但可以销毁密钥的密钥版本。
限制
使用 CMEK 时,存在以下限制:
您无法更新正在运行的迁移作业中的 CMEK。
虽然您可以使用 CMEK 加密源数据库中的数据,但您无法使用这些密钥来加密任何迁移作业元数据,例如迁移作业 ID、源数据库的 IP 地址等。
使用 CMEK
现在您已经了解了 CMEK,接下来就可以为 CMEK 设置服务帐号和密钥了。 此外,您还将了解如何设置迁移作业以使用 CMEK。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud的新用户, 请创建一个账号,以评估我们的产品在 实际应用场景中的表现。新客户还可以获得 300 美元的免费抵用金,用于 运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- 安装并初始化 Cloud SDK。
- 确保您已将 Database Migration Admin 角色分配给 您的用户账号。
启用 Cloud Key Management Service API。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您 创建了项目,则可能已通过 所有者角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。- 启用 Database Migration Service API。
使用 CMEK 在 Database Migration Service 中创建迁移作业的工作流
仅限 gcloud 和 API 用户: 确保每个需要 CMEK 的项目都有一个 服务账号。如需了解详情,请参阅 创建服务账号。
创建密钥环和密钥并为 每个密钥设置位置。该位置是 Google Cloud 区域。
复制或记下密钥 ID (
KMS_KEY_ID) 和密钥的位置,以及密钥环的 ID (KMS_KEYRING_ID)。您在向服务帐号授予密钥访问权限时需要此信息。前往项目, 在 Database Migration Service 中创建迁移作业, 并在 高级加密选项 部分中使用 CMEK。
Database Migration Service 中的迁移作业现已通过 CMEK 启用。
创建服务帐号
您需要为每个需要 CMEK 的项目创建一个服务账号。
要允许用户管理服务账号,请授予以下角色之一:
- Service Account User (
roles/iam.serviceAccountUser):包括列出服务账号、获取服务账号的详细信息以及模拟服务账号的权限。 - Service Account Admin (
roles/iam.serviceAccountAdmin):包括列出服务账号和获取服务账号的详细信息的权限。此外,还包括创建、更新和删除服务账号的权限,以及查看或更改服务帐号的 Database Migration Service(Oracle 到 AlloyDB for PostgreSQL)政策的权限。
目前,您只能使用 gcloud 命令创建 CMEK 所需的服务帐号类型。
如需使用 gcloud 创建服务帐号,请运行以下命令:
gcloud beta services identity create \ --service=datamigration.googleapis.com\ --project=PROJECT_ID
上述命令会返回服务账号名称。在向服务账号授予密钥访问权限的过程中,您将使用此服务账号名称。
创建密钥
您可以在与 Database Migration Service 中的迁移作业相同的 Google Cloud 项目中创建密钥,也可以在单独的用户项目中创建密钥。Cloud KMS 密钥环的位置必须与迁移作业关联的目标数据库的区域相匹配。不支持多区域密钥或全球区域密钥。 如果区域不匹配,则无法创建迁移作业。
如需创建 Cloud KMS 密钥,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,前往 迁移作业 页面。
- 点击创建密钥环 。
- 添加密钥环名称。请记下此名称,因为您在向服务账号授予密钥访问权限时需要用到此名称。
- 添加密钥环位置。
- 点击创建。此时会打开创建密钥页面。
- 添加密钥名称。
- 选择用途(对称或非对称)。
- 选择轮替周期和开始日期。
- 点击创建。
- 在密钥表上,点击最后一列中的三个点,然后选择复制资源 ID 或将其记录下来。这是
KMS_KEY_ID。在向服务账号授予密钥访问权限时,您需要KMS_KEY_ID。
gcloud
- 创建新的密钥环。
记录此名称,因为您在向服务账号授予密钥访问权限时需要用到此名称。gcloud kms keyrings create KMS_KEYRING_ID \ --location=REGION
- 针对该密钥环创建密钥。
记录此名称,因为您在向服务帐号授予密钥访问权限时需要用到此名称。gcloud kms keys create KMS_KEY_ID \ --location=REGION \ --keyring=KMS_KEYRING_ID \ --purpose=encryption
向服务帐号授予密钥访问权限
您只需在使用 gcloud 或 API 时执行此过程。
如需向服务帐号授予访问权限,请使用以下代码:
gcloud kms keys add-iam-policy-binding KMS_KEY_ID \ --location=REGION \ --keyring=KMS_KEYRING_ID \ --member=serviceAccount:service-PROJECT_NUMBER@datamigrationiam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
使用 CMEK 在 Database Migration Service 中创建迁移作业
停用和重新启用密钥版本
请参阅以下主题: