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

本頁說明客戶自行管理的加密金鑰 (CMEK) 如何搭配資料庫移轉服務移轉作業使用。

根據預設,資料庫移轉服務 (適用於從 Oracle 遷移至 PostgreSQL 適用的 Cloud SQL) 會加密待用客戶內容。資料庫移轉服務 (適用於從 Oracle 遷移至 PostgreSQL 適用的 Cloud SQL) 會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密」

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

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

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

CMEK 適用於所有資料庫移轉服務位置

使用 Cloud KMS Autokey 的 CMEK

您可以手動建立 CMEK,保護資料庫移轉服務 (從 Oracle 遷移至 PostgreSQL 適用的 Cloud SQL) 資源,也可以使用 Cloud KMS Autokey。使用 Autokey 時,系統會在您透過資料庫移轉服務建立或更新資源時,視需要產生金鑰環和金鑰 (適用於從 Oracle 遷移至 PostgreSQL 適用的 Cloud SQL)。如果服務代理尚未建立,系統會建立服務代理,並授予必要的 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 版本。 您無法刪除金鑰環或金鑰,但可以刪除金鑰的金鑰版本。

限制

使用 CMEK 時,請注意下列限制:

  • 您無法在執行中的遷移工作更新 CMEK。

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

使用 CMEK

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

事前準備

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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

    前往「IAM」頁面

  8. Enable the Cloud Key Management Service API.

    Enable the API

  9. 啟用 Database Migration Service API。

    啟用 API

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

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

    2. 建立金鑰環和金鑰,並為每個金鑰設定位置。位置為 Google Cloud 區域。

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

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

    5. 前往專案, 在資料庫移轉服務中建立移轉工作,並在「進階加密選項」部分使用 CMEK。

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

    建立服務帳戶

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

    如要讓使用者管理服務帳戶,請先為使用者授予以下其中一種角色:

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

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

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

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

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

    建立金鑰

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

    如何建立 Cloud KMS 金鑰:

    控制台

    1. 前往 Google Cloud 控制台的「遷移作業」頁面。

      前往「加密編譯金鑰」

    2. 按一下 [Create key ring] (建立金鑰環)
    3. 新增「Key ring name」(金鑰環名稱)。請記下這個名稱,因為您需要這個名稱,才能授予金鑰服務帳戶存取權。
    4. 新增金鑰環位置
    5. 按一下「建立」,「建立金鑰」頁面隨即開啟。
    6. 新增金鑰名稱
    7. 選取「Purpose」(用途) (對稱或非對稱)。
    8. 選取「輪替週期」和「開始日期」
    9. 點選「建立」
    10. 在「金鑰」表格中,按一下最後一欄的三點圖示,然後選取「複製資源 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 管理資料加密。

    停用及重新啟用金鑰版本

    請參閱下列主題: