本文說明如何使用客戶自行管理的加密金鑰 (CMEK),加密 Knowledge Catalog (舊稱 Dataplex Universal Catalog) 資料。
總覽
根據預設,Knowledge Catalog 會加密靜態儲存的客戶內容。Knowledge Catalog 會為您處理加密作業,您不必採取其他動作。這個選項稱為「Google 預設加密機制」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配整合 CMEK 的服務,包括 Knowledge Catalog。使用 Cloud KMS 金鑰,即可控管金鑰的保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。 使用 Cloud KMS 還可追蹤金鑰使用情形、查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控管及管理用於保護資料的對稱金鑰加密金鑰 (KEK),而非由 Google 擁有及管理。
使用 CMEK 設定資源後,存取 Knowledge Catalog 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。
Knowledge Catalog 會為每個位置的所有 Knowledge Catalog 資源使用一個 CMEK。
您可以在 Knowledge Catalog 的組織層級設定 CMEK 金鑰。
如要進一步瞭解 CMEK 的一般資訊,包括啟用時機和原因,請參閱「客戶自行管理的加密金鑰 (CMEK)」。
CMEK 的優點
CMEK 可讓您執行下列操作:
- 管理金鑰生命週期作業和存取權限。
- 您可以使用 Cloud KMS 的 Key Inventory API 和金鑰用量資訊主頁追蹤金鑰用量,查看哪些金鑰保護哪些資源等資訊。Cloud Logging 會顯示金鑰的存取時間和存取者。
- 管理加密金鑰,滿足特定法規要求。
CMEK 如何與 Knowledge Catalog 搭配運作
Google Cloud 專案中的 Knowledge Catalog 加密管理員可以提供 Cloud KMS 金鑰,為 Knowledge Catalog 設定 CMEK。接著,Knowledge Catalog 會使用指定的 Cloud KMS 金鑰加密所有資料,包括現有資料和在 Knowledge Catalog 中建立的新資源。
支援功能
Knowledge Catalog 支援下列功能的 CMEK 加密:
Data Lineage 不會儲存客戶核心內容或機密資料,因此不需要 CMEK 加密。
Assured Workloads 客戶無法使用其他 Knowledge Catalog 功能,因為這些功能不支援 CMEK 加密。
未使用 Assured Workloads 的客戶可以使用其他功能,但資料會以 Google 預設加密機制加密。
注意事項
- 根據預設,每個組織都會使用 Google 預設加密機制佈建。
- 組織管理員可以在 Knowledge Catalog 中,將任何位置切換為 CMEK。
- Knowledge Catalog 支援 Cloud KMS 金鑰、Cloud HSM 金鑰和 Cloud External Key Manager 金鑰。
- 系統支援金鑰輪替,並會在金鑰輪替後,自動使用新的金鑰版本加密資料。現有資料也會使用這個新版本加密。
- Knowledge Catalog 最多會保留 15 天的資料備份。啟用 CMEK 後建立的所有備份,都會使用指定的 KMS 金鑰加密。啟用 CMEK 前備份的資料,會繼續以 Google 的預設加密方式加密,最長 15 天。
限制
- 切換至 CMEK 是無法復原的程序。選擇 CMEK 後,就無法改回 Google 預設加密機制。
- 為 Knowledge Catalog 設定 Cloud KMS 金鑰後,即無法更新或變更。
- Knowledge Catalog 僅支援組織層級加密。因此,加密設定是在組織層級針對特定位置設定,並用於加密該組織和位置內所有專案的 Knowledge Catalog 資料。組織或資料夾下的特定專案不支援 CMEK 加密。設定 CMEK 相關組織政策時,請務必謹慎考量。
- Knowledge Catalog 不支援在全域區域使用 CMEK。
為 Knowledge Catalog 啟用 CMEK 後,下列功能將無法運作:
- 跨組織中繼資料搜尋
在 Knowledge Catalog 啟用 CMEK 後,請勿將專案移入或移出 CMEK 組織。修改專案的組織位置,會導致 Knowledge Catalog 永久遺失該專案的中繼資料。
升級現有的 CMEK 設定
如果您在 2025 年 11 月 7 日前,已在 Knowledge Catalog 啟用 CMEK,請執行下列指令,將 CMEK 涵蓋範圍擴大至 Knowledge Catalog 和 Knowledge Catalog 搜尋:
gcloud dataplex encryption-config update organizations/ORG_ID/locations/LOCATION/encryptionConfigs/default --enable-metastore-encryption
- 將 ORG_ID 替換為金鑰所在組織的 ID。
- 將 LOCATION 替換為金鑰所在組織的位置。
資料加密後,您可能會遇到Knowledge Catalog 可用性問題。
如果您在 2025 年 11 月 7 日後首次啟用 CMEK,Knowledge Catalog Metastore 和 Search 預設會納入 CMEK 涵蓋範圍。
保護加密金鑰
為確保能持續存取 CMEK 加密的資料,請遵循下列最佳做法:
- 請確保 CMEK 金鑰保持啟用且可存取。如果金鑰遭到停用或刪除,就無法存取 Knowledge Catalog 資料。如果金鑰無法使用超過 30 天,以該金鑰加密的資料會自動刪除,且無法復原。
- 如果 Cloud KMS 金鑰遭到刪除且無法復原,所有相關聯的 Knowledge Catalog 資料都會永久遺失。
- 如果 Cloud KMS 暫時無法使用,Knowledge Catalog 會盡可能繼續支援完整作業,最長可達一小時。之後,系統會暫時禁止存取資料,做為保護措施。
- 使用 Cloud EKM 時,請注意 Google 無法控管外部代管金鑰的可用性。如果金鑰短暫無法使用,資料會暫時無法存取。如果金鑰持續無法使用 30 天,資料將永久遺失。
Knowledge Catalog 適用情形
以下各節將說明為 Knowledge Catalog 組織啟用 CMEK 的程序,以及預期的作業影響。
初始基礎架構佈建
儲存加密設定後,Knowledge Catalog 會設定必要的基礎架構。這項程序通常需要 6 到 8 小時。在佈建階段,您仍可完整存取所有 Knowledge Catalog 功能,且資料會透過 Google 代管的加密機制保持加密狀態。如果設定了組織政策 constraints/gcp.restrictNonCmekServices,資源建立要求會失敗,直到佈建階段完成為止。
資料加密和 API 可用性
佈建基礎架構後,Knowledge Catalog 會開始加密組織內儲存的現有資料。為確保資料完整性,並防止加密過程中可能出現不一致的情況,Dataplex API 方法會暫時停用。這項限制會禁止資料更新作業。初次為 Knowledge Catalog 啟用 CMEK 時,所有現有資料都會加密。這項一次性作業預計最多需要兩小時。
加密後作業
成功完成現有資料加密後,即可完整使用 Dataplex API 方法。在 Knowledge Catalog 中建立或修改資料時,系統會自動使用設定的 CMEK 加密,不會中斷作業或限制 API。
建立金鑰並啟用 CMEK
以下說明如何建立金鑰,並為 Knowledge Catalog 啟用 CMEK。您可以使用直接在 Cloud KMS 中建立的金鑰,或透過 Cloud EKM 提供的外部代管金鑰。
在要管理金鑰的 Google Cloud 專案中,執行下列操作:
在要使用金鑰環的位置建立 Cloud KMS 金鑰環。
使用下列任一選項建立金鑰:
如果您使用外部金鑰管理工具 (Cloud EKM),必須在外部金鑰管理合作夥伴系統中,授予 Cloud KMS 服務帳戶金鑰存取權。如果您透過虛擬私有雲連線至外部金鑰管理工具,也必須在虛擬私有雲專案中,將 Service Directory 檢視者 (
roles/servicedirectory.viewer) 和 Private Service Connect 授權服務 (roles/servicedirectory.pscAuthorizedService) 角色授予 Cloud EKM 服務帳戶 (service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com)。詳情請參閱「建立 EKM 連線」。
建立並顯示 Google 代管的服務帳戶:
gcloud beta services identity create \ --service=dataplex.googleapis.com \ --organization=ORG_ID將 ORG_ID 替換為金鑰所在組織的 ID。
如果系統提示您安裝 Google Cloud CLI Beta 版指令元件,請輸入
Y。gcloud CLI
services identity指令會建立或取得特定的 Google 代管服務帳戶,讓 Knowledge Catalog 用來存取 Cloud KMS 金鑰。服務帳戶 ID 的格式為
service-org-ORG_ID@gcp-sa-dataplex.iam.gserviceaccount.com。系統也會建立 CMEK 專用服務帳戶,格式為service-org-ORG_ID@gcp-sa-dataplex-cmek.iam.gserviceaccount.com。CMEK 專用服務帳戶用於加密及解密儲存在 Knowledge Catalog 的資料。如果您對 Cloud KMS 金鑰使用 VPC Service Controls,則必須透過輸入規則,將存取權授予 CMEK 專屬服務帳戶。將 CryptoKey 加密者/解密者 IAM 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予 Knowledge Catalog 服務帳戶。請為您建立的金鑰授予這項權限。如果您使用外部金鑰管理工具 (Cloud EKM),請確認外部金鑰管理工具系統也向 Cloud KMS 服務帳戶 (
service-KEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com) 授予存取權限。控制台
前往「Key management」(金鑰管理) 頁面。
按一下金鑰環。
在可用金鑰清單中,按一下您建立的金鑰。
按一下「Permissions」(權限) 分頁標籤。
按一下「授予存取權」。
在開啟的「Grant access」(授予存取權) 窗格中,按照下列步驟將存取權授予 Knowledge Catalog 服務帳戶:
- 在「新增主體」中,輸入服務帳戶
service-org-ORG_ID@gcp-sa-dataplex.iam.gserviceaccount.com。 - 在「Assign roles」(指派角色) 中,選取「Cloud KMS CryptoKey Encrypter/Decrypter」角色。
- 按一下 [儲存]。
- 在「新增主體」中,輸入服務帳戶
gcloud
將
cloudkms.cryptoKeyEncrypterDecrypter角色授予服務帳戶:gcloud kms keys add-iam-policy-binding KEY_NAME \ --location=LOCATION \ --keyring KEY_RING \ --project=KEY_PROJECT_ID \ --member serviceAccount:service-org-ORG_ID@gcp-sa-dataplex.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter更改下列內容:
- KEY_NAME:金鑰名稱
- LOCATION:位置
- KEY_RING:金鑰環
- KEY_PROJECT_ID:金鑰專案 ID
將 Dataplex 加密管理員角色指派給自己。
控制台
按照操作說明授予 IAM 角色。
gcloud
gcloud organizations add-iam-policy-binding ORG_ID \ --member='user:USER_EMAIL' \ --role='roles/dataplex.encryptionAdmin'更改下列內容:
- ORG_ID:金鑰所屬組織的 ID。
- USER_EMAIL:使用者的電子郵件地址。
將 Knowledge Catalog 設為使用 CMEK 金鑰。
控制台
前往 Google Cloud 控制台的「Knowledge Catalog」頁面。
按一下「設定」。
在「Select region for CMEK」(選取 CMEK 區域) 中選取區域。所選區域必須與 Cloud KMS 金鑰的位置相符。
在「Select encryption key」(選取加密金鑰) 中,選取您建立的金鑰。
按一下 [儲存]。
資料加密程序需要一段時間才能完成。程序完成後,系統會顯示下列訊息:
Data Encryption is complete. Your selected CMEK key is now protecting your data.
gcloud
在 Knowledge Catalog 設定加密:
gcloud dataplex encryption-config create default \ --location=LOCATION \ --organization=ORG_ID \ --key=KEY_RESOURCE_ID更改下列內容:
- ORG_ID:金鑰所屬組織的 ID。
- KEY_RESOURCE_ID:金鑰資源 ID,例如
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME。將 PROJECT_ID 替換為金鑰專案 ID。
確認加密程序已完成:
gcloud dataplex encryption-config describe default \ --location=LOCATION \ --organization=ORG_ID
資料加密程序需要一段時間才能完成。程序完成後,系統會顯示以下訊息:
encryptionState: COMPLETED。
記錄和監控
為 Cloud KMS API 啟用稽核記錄,稽核 Knowledge Catalog 向 Cloud KMS 提出的要求。
CMEK 組織政策
Google Cloud 提供組織政策限制,強制使用 CMEK,並控管組織內允許的 Cloud KMS 金鑰。這些限制可確保 Knowledge Catalog 中的資料一律受到 CMEK 保護。
constraints/gcp.restrictNonCmekServices會強制要求 Knowledge Catalog 資源使用 CMEK。將
dataplex.googleapis.com新增至 Google Cloud 服務名稱清單,並將限制設為Deny,即可禁止建立未受 CMEK 保護的 Knowledge Catalog 資源。如果未在 CMEK 加密設定中,為要求的位置指定 Cloud KMS 金鑰,在 Knowledge Catalog 建立資源的要求就會失敗。
這項政策會在個別資源專案層級進行驗證。
constraints/gcp.restrictCmekCryptoKeyProjects會限制 CMEK 的 Cloud KMS 金鑰選取範圍,僅限指定的資源階層。設定資源階層指標 (專案、資料夾或組織) 清單,並將限制設為
Allow,Knowledge Catalog 就只能使用指定位置的 CMEK 金鑰。如果提供的 Cloud KMS 金鑰來自不允許的專案,在 Knowledge Catalog 建立 CMEK 保護資源的要求就會失敗。
建立資源時,系統會在資源專案層級驗證這項政策。
設定 CMEK 加密設定時,系統會在組織層級驗證這項政策。
為避免不一致,請確保專案層級設定與組織層級政策一致。
如要進一步瞭解如何設定組織政策,請參閱「CMEK 組織政策」。
Knowledge Catalog DataScans CMEK 權限
如要對 CMEK 加密的 BigQuery 資源建立資料剖析或資料品質掃描,請將 Cloud KMS CryptoKey 加密者/解密者 (roles/cloudkms.cryptoKeyEncrypterDecrypter) 角色授予保護 BigQuery 資料集的 Cloud KMS 金鑰,並將該角色授予 Knowledge Catalog 和 BigQuery 服務代理。
將 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色授予 Knowledge Catalog 服務代理:
gcloud kms keys add-iam-policy-binding KEY_NAME \
--location=LOCATION \
--keyring=KEYRING_NAME \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
--role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
將 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色授予 BigQuery 服務代理:
gcloud kms keys add-iam-policy-binding KEY_NAME \
--location=LOCATION \
--keyring=KEYRING_NAME \
--member="serviceAccount:bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com" \
--role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
更改下列內容:
- KEY_NAME:保護 BigQuery 資料集的 Cloud KMS 金鑰名稱。
- LOCATION:金鑰環的位置。
- KEYRING_NAME:金鑰環的名稱。
- PROJECT_NUMBER:您的 Google Cloud 專案編號。
後續步驟
- 進一步瞭解 CMEK。