使用加密金鑰保護資料

如要使用您控管的金鑰,保護 AlloyDB for PostgreSQL 叢集和備份中的靜態資料,可以在 Cloud Key Management Service (Cloud KMS) 建立、授權、套用及管理客戶自行管理的加密金鑰 (CMEK)。

如要進一步瞭解 CMEK,請參閱「關於 CMEK」。

建立及授權 AlloyDB 的 CMEK 金鑰

  1. 在 Cloud KMS 中建立金鑰。AlloyDB 支援下列金鑰類型:

    金鑰必須與 AlloyDB 叢集位於相同位置。舉例來說,位於 us-west1 的 AlloyDB 叢集只能使用 us-west1 中的金鑰。

    如果正確位置已有 Cloud KMS 金鑰,可以略過這個步驟。

  2. 授予 AlloyDB 金鑰存取權。

    1. 使用 Google Cloud CLI 建立及顯示服務代理,或在帳戶已存在時顯示:

      gcloud beta services identity create --service=alloydb.googleapis.com \
          --project=PROJECT

      gcloud beta services identity create 指令會建立或取得服務代理,AlloyDB 可使用該代理,代表您存取 Cloud KMS 金鑰。

      服務代理 ID 類似電子郵件地址:

      Service identity created: service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
      
    2. 將 Cloud KMS CryptoKey 加密者/解密者角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予服務代理:

      gcloud kms keys add-iam-policy-binding KEY \
          --location=REGION \
          --keyring=KEYRING \
          --project=PROJECT \
          --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com \
          --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

      更改下列內容:

      • KEY:金鑰的 Cloud KMS ID。

      • REGION:金鑰的區域,例如 us-central1。

      • KEYRING:金鑰的 Cloud KMS 金鑰環 ID。

      • PROJECT:金鑰專案的 ID。

      • PROJECT_NUMBER:AlloyDB 叢集專案的專案編號。

      這個角色會授予服務代理權限,允許使用 Cloud KMS 金鑰加密及解密。如要進一步瞭解 Cloud KMS 角色和權限,請參閱「Cloud KMS 權限和角色」。

建立 CMEK 加密叢集

建立新叢集時,您可以選擇使用預設的 Google 代管加密金鑰,或改用 CMEK 金鑰加密叢集。詳情請參閱「建立叢集及其主要執行個體」。

查看叢集的加密方法和 CMEK 金鑰

控制台

「Clusters」(叢集) 頁面的「Encryption」(加密) 欄會顯示專案中的各個叢集是否使用 Google 代管的加密金鑰或 CMEK。

前往「Clusters」(叢集) 頁面

如要查看使用 CMEK 的叢集金鑰詳細資料,請按一下「Resource name」(資源名稱) 欄中的名稱。在產生的詳細資料頁面中,「Encryption key」(加密金鑰) 欄位會包含金鑰說明,以及該金鑰專屬 Cloud KMS 詳細資料頁面的連結。

gcloud

呼叫 gcloud alloydb clusters describe 指令:

gcloud alloydb clusters describe CLUSTER \
    --project=PROJECT \
    --region=REGION

更改下列內容:

  • CLUSTER:要說明的叢集 ID。

  • PROJECT:叢集專案的 ID。

  • REGION:叢集所在的區域,例如 us-central1。

輸出內容包含 encryptionInfo 欄位,其中有叢集加密摘要。

將 CMEK 套用至備份

建立新的備份時,您可以選擇使用預設的 Google 代管加密金鑰或 CMEK 金鑰加密。詳情請參閱「建立隨選備份」或「設定備份方案」。

您也可以選擇將 CMEK 金鑰套用至從備份還原時建立的叢集,無論該備份的加密方法為何。詳情請參閱「還原叢集」。

使用 CMEK 加密功能輪替金鑰

請務必瞭解,在 Cloud KMS 中輪替客戶自行管理的加密金鑰 (CMEK),並與 AlloyDB 叢集搭配使用時,會有哪些影響。

輪替 CMEK 金鑰後,現有的 AlloyDB 資料會發生下列情況:

  • 立即存取權會繼續:只要 Cloud KMS 中仍有舊版金鑰,且未停用或刪除,資料就會繼續以原始資料加密金鑰 (DEK) 版本加密。

  • 完整資料重新加密作業必須手動執行:如要將所有 AlloyDB 資料更新至最新主鍵版本,您必須重新加密資料。

如要使用新的 CMEK 金鑰版本重新加密現有叢集,您必須執行備份和還原作業:

  1. 建立現有叢集的備份。

  2. 將備份還原至新叢集,並在還原過程中指定新的 CMEK 主鍵版本。

詳情請參閱「還原叢集」。

頻繁輪替 AlloyDB 的 CMEK 金鑰會產生大量作業負擔。由於現有資料不會自動重新加密,且手動重新加密涉及完整備份和還原至新叢集,因此頻繁輪替可能會造成不便,並影響可用性或管理複雜度。

確認所有相關 AlloyDB 資料都已手動重新加密,且資料使用較新的金鑰版本後,您才能在 Cloud KMS 中安全刪除舊的 CMEK 金鑰版本。

查看備份的加密方法和 CMEK 金鑰

控制台

「Backups」(備份) 頁面的「Encryption」(加密) 欄會顯示專案中的各個備份是使用 Google 代管的加密機制,還是 Cloud KMS (CMEK)。

前往「備份」頁面

如要查看使用 CMEK 的備份金鑰詳細資料,請按一下「Restore」(還原)。後續詳細資料面板的「Encryption key」(加密金鑰) 欄位包含金鑰說明,以及金鑰專屬 Cloud KMS 詳細資料頁面的連結。

gcloud

呼叫 gcloud alloydb backups describe 指令:

gcloud alloydb backups describe BACKUP_ID \
    --project=PROJECT \
    --region=REGION

更改下列內容:

  • BACKUP_ID:要說明的備份 ID。

  • PROJECT:備份專案的 ID。

  • REGION:備份所在的區域,例如 us-central1。

輸出內容包含 encryptionInfo 欄位,其中有備份加密摘要。

停用金鑰

停用叢集的 CMEK 金鑰後,您必須重新啟用金鑰,才能存取該叢集的資料。

不過,停用金鑰後,最多可能需要三小時,才會套用至 AlloyDB 叢集。如要停用金鑰,同時防止他人存取您的資料,而不必等待金鑰傳播,請按照下列步驟操作:

  1. 刪除叢集的主要執行個體。 刪除主要執行個體不會影響叢集資料。重新啟用金鑰後,您可以建立新的主要執行個體,詳情請參閱下一節。

  2. 使用 Cloud KMS 停用金鑰。

啟用金鑰

如要啟用金鑰,請按照下列步驟操作:

  1. 使用 Cloud KMS 啟用金鑰。

  2. 如果您在停用金鑰前刪除了叢集的主要執行個體,請建立新的主要執行個體。

啟用金鑰後,最多可能需要三小時才會套用至叢集。傳播完成後,即可存取叢集資料。

查看 Cloud KMS 金鑰的稽核記錄

如要查看與特定 CMEK 金鑰相關聯的稽核記錄,請按照下列步驟操作:

  1. 確認專案中的 Cloud KMS API 已啟用記錄功能 。

  2. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往「Logs Explorer」

  3. 在查詢建立工具中加入下列程式碼,將記錄項目限制為 Cloud KMS 金鑰:

    resource.type="cloudkms_cryptokey"
    resource.labels.location="REGION"
    resource.labels.key_ring_id="KEYRING"
    resource.labels.crypto_key_id="KEY"
    

    更改下列內容:

    • REGION:金鑰的區域,例如 us-central1。

    • KEYRING:金鑰的 Cloud KMS 金鑰環 ID。

    • KEY:金鑰的 Cloud KMS ID。

  4. 在正常作業下,系統會以 INFO 嚴重性記錄加密和解密作業。AlloyDB 叢集中的執行個體驗證 Cloud KMS 金鑰時,系統會記錄這些項目,大約每五分鐘一次。

  5. 如果 AlloyDB 無法存取金鑰,作業會記錄為 ERROR。

查看 Cloud EKM 金鑰的存取依據

如果您使用 Cloud EKM 金鑰,則可透過金鑰存取依據,查看每項 Cloud EKM 要求的原因。此外,您也可以根據提供的理由,自動核准或拒絕要求。詳情請參閱「查看及處理理由」。