使用客戶管理的加密金鑰 (CMEK) 進行持續遷移

本頁面說明客戶自行管理的加密金鑰 (CMEK) 如何與資料庫遷移服務遷移工作搭配運作。

根據預設,資料庫遷移服務 (從 Oracle 遷移至 AlloyDB for PostgreSQL) 會加密靜態客戶內容。資料庫遷移服務 (用於將 Oracle 遷移至 AlloyDB for PostgreSQL) 會為您處理加密作業,您不必採取其他動作。這個選項稱為「Google 預設加密機制」。

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配整合 CMEK 的服務,包括資料庫遷移服務 (適用於從 Oracle 遷移至 AlloyDB for PostgreSQL)。使用 Cloud KMS 金鑰,即可控管保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。 使用 Cloud KMS 還能追蹤金鑰用量、查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控管及管理用於保護資料的對稱金鑰加密金鑰 (KEK),而非由 Google 擁有及管理。

使用 CMEK 設定資源後,存取資料庫遷移服務 (從 Oracle 遷移至 AlloyDB for PostgreSQL) 資源的體驗,與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。

資料庫遷移服務支援 CMEK 的區域

所有資料庫遷移服務位置均可使用 CMEK。

使用 Cloud KMS Autokey 的 CMEK

您可以手動建立 CMEK,保護資料庫遷移服務 (從 Oracle 遷移至 AlloyDB for PostgreSQL) 資源,或使用 Cloud KMS Autokey。Autokey 會視需要產生金鑰環和金鑰,支援在資料庫遷移服務 (從 Oracle 遷移至 AlloyDB for PostgreSQL) 中建立或更新資源。如果使用金鑰執行加密和解密作業的服務代理不存在,系統會建立這類服務代理,並授予必要的 Identity and Access Management (IAM) 角色。詳情請參閱「Autokey 總覽」。

瞭解服務帳戶

如果資料庫遷移服務遷移工作已啟用 CMEK,您必須使用服務帳戶,向 Cloud Key Management Service 要求金鑰存取權。

如要在專案中使用 CMEK,您必須擁有服務帳戶,並將金鑰存取權授予服務帳戶。服務帳戶必須位於專案中。服務帳戶會顯示在所有區域。

瞭解金鑰

在 Cloud Key Management Service 中,您需要建立含有加密編譯金鑰的金鑰環,並設定位置。在資料庫遷移服務中建立新的遷移工作時,請選取這組金鑰來加密遷移工作。

建立使用 CMEK 的新遷移工作時,您必須知道金鑰 ID 和金鑰區域。目的地資料庫必須與遷移工作的 CMEK 位於相同區域。您可以為金鑰和目的地資料庫建立一個專案,也可以為兩者分別建立專案。

CMEK 採用下列格式:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

如何永久禁止存取 CMEK 加密資料?

在某些情況下,您可能需要永久刪除以 CMEK 加密的資料。做法是刪除 CMEK 版本。您無法刪除金鑰環或金鑰,但可以刪除金鑰版本。

輪替及變更金鑰

輪替金鑰版本

在 Cloud Key Management Service 輪替金鑰來建立新的主鍵版本時,資料庫遷移服務會自動使用新的主鍵版本,加密遷移期間寫入的新暫存資料。輪替金鑰時,您不需要更新或重新建立遷移工作。

現有的臨時遷移資料會在八天內自動到期。 如果進行中的遷移工作仍會讀取以舊版金鑰加密的資料,請勿刪除或停用舊版金鑰。

如要輪替保護目的地 AlloyDB for PostgreSQL 叢集的金鑰,請參閱「 搭配使用 CMEK 與 AlloyDB for PostgreSQL」。

改用其他金鑰

遷移工作儲存為草稿時,您可以變更與遷移工作相關聯的 CMEK。詳情請參閱「 更新遷移工作草稿」。

遷移工作開始後,就無法變更 CMEK。如要為已開始的遷移工作使用其他 CMEK,請 建立新的遷移工作,並使用新金鑰設定。

限制

使用 CMEK 時,須遵守下列限制:

  • 遷移工作開始後,就無法更新 CMEK。只有在遷移工作儲存為草稿時,才能變更 CMEK。

  • 雖然您可以使用 CMEK 加密來源資料庫中的資料,但無法使用這些金鑰加密任何遷移工作中繼資料,例如遷移工作 ID、來源資料庫的 IP 位址等。

使用 CMEK

瞭解 CMEK 後,即可設定 CMEK 的服務帳戶和金鑰。此外,您也會瞭解如何設定遷移工作,以便使用 CMEK。

事前準備

  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 安裝並初始化 Cloud SDK。
  7. 確認您的使用者帳戶已獲派資料庫移轉管理員角色。

    前往「IAM」頁面

  8. 啟用 Cloud Key Management Service API (如果尚未啟用)。

    啟用 API 所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  9. 啟用資料庫遷移服務 API。

    啟用 API

在資料庫遷移服務中,使用 CMEK 建立遷移工作的工作流程

  1. 僅限 gcloud 和 API 使用者:請確認每個需要 CMEK 的專案都有 服務帳戶。詳情請參閱「 建立服務帳戶」。

  2. 建立金鑰環和金鑰,並設定各金鑰的位置。位置是 Google Cloud 區域。

  3. 將金鑰存取權授予服務帳戶。

  4. 複製或記下金鑰 ID (KMS_KEY_ID) 和金鑰位置,以及金鑰環的 ID (KMS_KEYRING_ID)。將金鑰存取權授予服務帳戶時,您需要這項資訊。

  5. 前往專案, 在資料庫遷移服務中建立遷移工作,然後在「Advanced encryption options」(進階加密選項) 區段中使用 CMEK。

資料庫遷移服務中的遷移工作現已啟用 CMEK。

建立服務帳戶

您必須為每個需要 CMEK 的專案建立服務帳戶。

如要允許使用者管理服務帳戶,請授予下列其中一個角色:

  • 服務帳戶使用者 (roles/iam.serviceAccountUser):包含列出服務帳戶、取得服務帳戶詳細資料,以及模擬服務帳戶的權限。
  • 服務帳戶管理員 (roles/iam.serviceAccountAdmin):包含列出服務帳戶和取得服務帳戶詳細資料的權限。此外,也包含建立、更新及刪除服務帳戶,以及查看或變更服務帳戶的資料庫遷移服務 (從 Oracle 遷移至 AlloyDB for PostgreSQL) 政策。

目前,您只能使用 gcloud 指令,建立 CMEK 所需的服務帳戶類型。

如要使用 gcloud 建立服務帳戶,請執行下列指令:

gcloud beta services identity create \
--service=datamigration.googleapis.com\
--project=PROJECT_ID

前一個指令會傳回服務帳戶名稱。在「將金鑰存取權授予服務帳戶」程序中,您會用到這個服務帳戶名稱。

建立金鑰

您可以在資料庫遷移服務中,於遷移工作所在的 Google Cloud 專案建立金鑰,或在獨立的使用者專案中建立。Cloud KMS 金鑰環位置必須與遷移工作相關聯的目的地資料庫區域相符。系統不支援多區域或全域金鑰。如果區域不相符,就無法建立遷移工作。

如要建立 Cloud KMS 金鑰,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Migration jobs」(遷移工作) 頁面。

    前往「Cryptographic keys」(加密編譯金鑰) 頁面

  2. 按一下 [Create key ring] (建立金鑰環)。
  3. 新增「Key ring name」(金鑰環名稱)。請記下這個名稱,因為在授予服務帳戶金鑰存取權時,您需要用到這個名稱。
  4. 新增金鑰環位置。
  5. 點選「建立」。「Create key」(建立金鑰) 頁面隨即開啟。
  6. 新增金鑰名稱。
  7. 選取「用途」 (對稱或非對稱)。
  8. 選取「輪替週期」和「開始日期」。
  9. 點選「建立」。
  10. 在「Keys」(金鑰) 表格中,按一下最後一欄的三點圖示,然後選取「Copy Resource ID」(複製資源 ID) 或記下 ID。也就是 KMS_KEY_ID。將金鑰存取權授予服務帳戶時,您需要 KMS_KEY_ID。

gcloud

  1. 建立新的金鑰環。
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=REGION
      
    請記下這個名稱,因為您需要這個名稱,才能將金鑰存取權授予服務帳戶。
  2. 在金鑰環上建立金鑰。
    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 的遷移工作

建立遷移工作時,您可以使用 CMEK 管理資料加密。

停用並重新啟用金鑰版本

請參閱下列主題: