使用加密金鑰保護資料

本頁面說明如何為 AlloyDB for PostgreSQL 建立、設定及套用客戶自行管理的加密金鑰 (CMEK)。

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

為 AlloyDB 建立及授權 CMEK 金鑰

  1. 在 Cloud Key Management Service (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 services identity 指令會建立或取得 服務代理,AlloyDB 可使用該代理代表您存取 Cloud KMS 金鑰。

    服務帳戶 ID 類似於電子郵件地址:

        Service identity created: service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com
    
    1. cloudkms.cryptoKeyEncrypterDecrypter 角色指派給服務帳戶:
        gcloud kms keys add-iam-policy-binding KEY \
            --location REGION \
            --keyring KEYRING \
            --project=PROJECT \
            --member serviceAccount:service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com \
            --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    更改下列內容:

    • KEY:金鑰的 Cloud KMS ID
    • REGION:金鑰的區域,例如 us-central1
    • PROJECT:金鑰專案的 ID
    • KEYRING:金鑰的 Cloud KMS 金鑰環 ID

    這項角色會授予服務帳戶使用 Cloud KMS 金鑰加密及解密的權限。詳情請參閱 Cloud KMS 權限和角色

建立 CMEK 加密叢集

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

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

控制台

「叢集」頁面的「加密」欄會顯示專案中的每個叢集,是使用 Google 代管的加密金鑰還是 CMEK。

前往「Clusters」(叢集) 頁面

如要查看使用 CMEK 的叢集金鑰詳細資料,請按一下「資源名稱」欄中的叢集名稱。產生的詳細資料頁面中,「加密金鑰」欄位會包含金鑰說明,包括其專屬 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 加密輪替金鑰

使用 AlloyDB 叢集時,請務必瞭解在 Cloud Key Management Service (Cloud KMS) 中輪替客戶自行管理的加密金鑰 (CMEK) 的影響。

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

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

  • 完整資料重新加密作業是手動進行:如要使用最新的主要金鑰版本加密所有 AlloyDB 資料,您必須重新加密資料。

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

  1. 備份現有叢集。

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

詳情請參閱叢集還原

使用 AlloyDB 頻繁輪替 CMEK 金鑰需要大量作業負擔。由於現有資料不會自動重新加密,且手動重新加密需要完整備份並還原至新叢集,因此頻繁輪替可能會很麻煩,且可能影響可用性或管理複雜度。

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

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

控制台

「備份」頁面的「加密」欄會顯示專案中的每個叢集是使用 Google 管理的加密金鑰,還是客戶管理的加密金鑰 (CMEK)。

前往「備份」頁面

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

gcloud

呼叫 gcloud alloydb backups describe 指令:

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

更改下列內容:

  • CLUSTER:要說明的備份 ID
  • PROJECT:備份專案的 ID
  • REGION:備份的區域,例如 us-central1

輸出內容會包含 encryptionInfo 欄位,其中顯示備份加密的摘要。

停用金鑰

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

不過,停用金鑰最多可能需要 3 小時才能傳播至 AlloyDB 集群。如要停用金鑰並立即禁止存取資料,請按照下列步驟操作:

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

  2. 使用 Cloud KMS 停用金鑰。

啟用金鑰

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

  1. 使用 Cloud KMS 啟用金鑰

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

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

查看 Cloud KMS 金鑰的稽核記錄

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

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

  2. 前往 Google Cloud 控制台的「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 要求的原因。此外,您也可以根據提供的理由,自動核准或拒絕要求。詳情請參閱「查看並處理正當理由」。