概览
本页介绍了如何将客户管理的加密密钥 (CMEK) 与 Database Migration Service 迁移作业搭配使用。
CMEK 是否适合您?
CMEK 适用于拥有敏感或受监管数据且需要管理其加密密钥的组织。
Google 管理的加密与客户管理的加密
借助 CMEK 功能,您可以为数据库迁移服务传输的数据使用自己的加密密钥。添加 CMEK 后,无论何时进行 API 调用,Database Migration Service 都可以使用您的密钥来访问数据。
CMEK(包括软件、硬件和外部密钥)均通过 Cloud Key Management Service (KMS) API 进行管理。
哪些位置支持启用了 CMEK 的 Database Migration Service 迁移作业?
CMEK 在所有 Database Migration Service 位置均可用。
了解服务账号
如果您的 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。如需详细了解 CMEK,请参阅概览。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
- 安装并初始化 Cloud SDK。
- 确保您已将 Database Migration Admin 角色分配给您的用户账号。
-
Enable the Cloud Key Management Service API.
- 启用 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 for Oracle to 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@gcp-sa-datamigration.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
在 Database Migration Service 中使用 CMEK 创建迁移作业
在在 Database Migration Service 中创建迁移作业的过程中,您可以使用 CMEK 管理数据的加密。
停用和重新启用密钥版本
请参阅以下主题: