本頁說明客戶管理的加密金鑰 (CMEK) 如何與 Datastream 搭配運作。
CMEK 是否適合您?
CMEK 適用於擁有機密或管制資料,且必須管理加密金鑰的機構。
Google 管理的加密金鑰與客戶管理的加密金鑰
CMEK 功能可讓您將自有的加密編譯金鑰用於 Datastream 中的靜態資料。新增 CMEK 後,每當進行 API 呼叫時,Datastream 就會使用您的金鑰存取資料。
Datastream 會使用 Google 代管的資料加密金鑰 (DEK) 和金鑰加密金鑰 (KEK) 加密。加密等級分為兩種:
- DEK 會加密資料。
- KEK 會加密 DEK。
Datastream 會將加密的 DEK 與加密資料一併儲存,而 Google 則會管理 Google KEK。使用 CMEK 時,您會建立金鑰來包裝 Google KEK。您可以使用 CMEK 建立、撤銷及刪除 KEK。
包括軟體、硬體和外部金鑰在內的 CMEK,全都是透過 Cloud Key Management Service (KMS) API 管理。
哪些位置支援啟用 CMEK 的 Datastream 串流?
CMEK 適用於所有 Datastream 位置。
瞭解服務帳戶
如果 Datastream 串流已啟用 CMEK,您必須使用服務帳戶,向 Cloud Key Management Service 要求金鑰存取權。
如要在專案中使用 CMEK,您必須具備服務帳戶,並將金鑰存取權授予該服務帳戶。服務帳戶必須位於專案內。服務帳戶會顯示在所有區域中。
如果您使用控制台建立串流,首次選擇「客戶管理的金鑰」選項時,Datastream 會自動建立服務帳戶 (如果服務帳戶尚不存在)。Datastream 自動建立服務帳戶時,您不需要在使用者帳戶中具備特殊權限。
瞭解金鑰
在 Cloud Key Management Service 中,您需要建立含有加密金鑰的金鑰環,並設定位置。在 Datastream 中建立新串流時,請選取這個金鑰來加密串流。
建立使用 CMEK 的新串流時,您需要知道金鑰 ID 和金鑰區域。新串流必須與串流相關聯的 CMEK 位於相同區域。您可以為金鑰和串流建立一個專案,也可以分別建立專案。
CMEK 採用下列格式:
projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]
如果 Datastream 無法存取金鑰 (例如您停用金鑰版本),Datastream 會將串流的狀態變更為 FAILED
,並顯示相關聯的錯誤訊息。解決與錯誤訊息相關聯的問題,讓金鑰再次可存取後,Datastream 就會自動恢復串流。
外部金鑰管理員
您可以將儲存在外部金鑰管理工具 (例如 Fortanix、Ionic 或 Thales) 中的金鑰做為 CMEK。如要瞭解如何搭配使用外部金鑰和 Cloud Key Management Service,請參閱 Cloud External Key Manager。
如何永久禁止存取以 CMEK 加密的資料?
您可能需要永久銷毀以 CMEK 加密的資料。如要這麼做,請銷毀 CMEK 版本。您無法刪除金鑰環或金鑰,但可以刪除金鑰的金鑰版本。
限制
使用 CMEK 時,請注意下列限制:
您無法更新執行中串流的 CMEK。
雖然您可以使用 CMEK 加密來源資料庫中的資料列,但無法使用這些金鑰加密串流中繼資料,例如串流 ID、來源資料庫的 IP 位址、來源資料庫表格的名稱等。
使用 CMEK
瞭解 CMEK 後,您就可以設定 CMEK 的服務帳戶和金鑰。此外,您也會瞭解如何設定 Datastream 以使用 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.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
- 安裝並初始化 Cloud SDK。
- 確認您的使用者帳戶已獲派 Datastream 管理員角色。
-
Enable the Cloud Key Management Service API.
- 啟用 Datastream API。
- gcloud 和 API 使用者專用:請務必為每個需要 CMEK 的專案建立服務帳戶。如果沒有,請參閱這篇文章,瞭解如何建立服務帳戶。
- 建立金鑰環和金鑰,並為每個金鑰設定位置。位置為 Google Cloud 區域。
- 僅限 gcloud 和 API 使用者: 授予服務帳戶金鑰存取權。
- 複製或記下金鑰的 ID (
KMS_KEY_ID
) 和位置,以及金鑰環的 ID (KMS_KEYRING_ID
)。將金鑰存取權授予服務帳戶時,您需要這項資訊。 - 前往專案並在 Datastream 中建立串流,然後選取下列選項:
- 與 CMEK 相同的地點
- CMEK 設定
- CMEK ID
- 服務帳戶使用者 (
roles/iam.serviceAccountUser
):包含列出服務帳戶、取得服務帳戶詳細資料,以及模擬服務帳戶的權限。 - 服務帳戶管理員 (
roles/iam.serviceAccountAdmin
):包括列出服務帳戶及取得服務帳戶詳細資料的權限。此外,還包括建立、更新及刪除服務帳戶的權限,以及檢視或變更服務帳戶 Datastream 政策的權限。 - 建立新的金鑰環。
請記下這個名稱,因為您需要這個名稱,才能授予金鑰服務帳戶的存取權。gcloud kms keyrings create KMS_KEYRING_ID \ --location=GCP_REGION
- 在金鑰環上建立金鑰。
請記下這個名稱,因為您需要這個名稱,才能授予金鑰服務帳戶的存取權。gcloud kms keys create KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --purpose=encryption
- 如要瞭解如何停用金鑰版本,請參閱「停用已啟用的金鑰版本」。
- 如要瞭解如何重新啟用金鑰版本,請參閱「啟用已停用的金鑰版本」。
使用 CMEK 在 Datastream 中建立串流的工作流程
Datastream 中的串流現在已啟用 CMEK。
建立服務帳戶
您需要為每個需要 CMEK 的專案建立服務帳戶。
如要讓使用者管理服務帳戶,請先為使用者授予以下其中一種角色:
目前您只能使用 gcloud
指令,為 CMEK 建立所需的服務帳戶類型。如果您使用控制台,Datastream 會自動為您建立這個服務帳戶。
如要使用 gcloud
建立服務帳戶,請執行下列指令:
gcloud beta services identity create \ --service=datastream.googleapis.com \ --project=PROJECT_ID
上一個指令會傳回服務帳戶名稱。您會在「授予金鑰服務帳戶存取權」程序中使用這個服務帳戶名稱。
建立金鑰
您可以在與 Datastream 中的串流相同的 Google Cloud 專案中建立金鑰,也可以在其他使用者專案中建立金鑰。Cloud KMS 金鑰環位置必須與您要建立串流的區域相符。多區域或全域金鑰不適用。如果區域不相符,就無法建立串流。
如何建立 Cloud KMS 金鑰:
控制台
gcloud
授予金鑰服務帳戶存取權
如果您使用 gcloud
或 API,才需要執行這項程序。
如要授予服務帳戶存取權,請使用下列程式碼:
gcloud kms keys add-iam-policy-binding KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
在 Datastream 中建立使用 CMEK 的串流
在 Datastream 中建立串流時,您可以使用 CMEK 管理資料加密。