在應用程式層加密 Secret


本教學課程說明如何使用您在 Cloud Key Management Service (Cloud KMS) 中管理的金鑰,在應用程式層加密 Kubernetes Secret。加密 Secret 的程序可為機密工作負載提供額外一層安全防護。

本頁適用於想要加密密鑰的安全專家。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱常見的 GKE Enterprise 使用者角色和工作

閱讀本頁面之前,請先熟悉下列概念:


如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導)

逐步引導


總覽

根據預設,Google Kubernetes Engine (GKE) 會加密靜態儲存的客戶內容,包括 Secret 在內。GKE 會處理及管理這項預設的加密作業,您不需要另行操作。「應用程式層密鑰加密」針對機密資料 (例如密鑰) 提供多一層的安全防護。您可以使用 Cloud KMS 管理的金鑰,在應用程式層加密靜態資料。

叢集中的 Kubernetes API 物件 (例如 Secret) 狀態會儲存在資料庫中。這個叢集狀態資料庫使用下列其中一種技術:

  • etcd:etcd 資料庫執行個體會在每個控制平面 VM 上執行。應用程式層 Secret 加密功能可防範成功破解離線版 etcd 的攻擊者。
  • Spanner:GKE 會在 Google 基礎架構上執行 Spanner 資料庫。資料庫與叢集的控制層 VM 分開,無法下載為離線副本。

如要使用應用程式層密鑰加密功能,您必須先建立 Cloud KMS 金鑰,並將這個金鑰的存取權授予 GKE 服務帳戶。您可以使用 Cloud KMS 支援的任何保護層級金鑰。

請務必將金鑰放在與叢集相同的位置,以縮短延遲時間,並避免發生資源依賴的服務分散在多個故障網域的情形。建立金鑰後,您可以指定要使用的金鑰,並在新叢集或現有叢集上啟用這項功能。啟用這項功能後,GKE 會使用加密金鑰加密所有新舊密鑰。

信封式加密

Kubernetes 透過 KMS 提供者為 Secret 進行信封式加密,也就是使用通常稱為「資料加密金鑰 (DEK)」的本機金鑰進行 Secret 加密。DEK 本身使用另一個稱為「金鑰加密金鑰 (KEK)」的金鑰進行加密。Kubernetes 不會儲存 KEK。

信封式加密有以下優點:

  • 與公開金鑰加密相比,效能更佳: GKE 只會使用 Cloud KMS API,透過 KEK 加密新的 DEK,或在本地快取為空時解密 DEK。
  • 更有效率地大規模管理金鑰:單一 KEK 可加密多個 DEK。您需要儲存在 Cloud KMS 服務中的金鑰數量,遠少於加密資料的金鑰數量。
  • 可使用中央信任根:儲存在 Kubernetes 中的密鑰可以採用外部的信任根。也就是說,您的所有密鑰皆可使用中央信任根 (例如硬體安全模組)。離線存取容器的攻擊者將無法取得您的 Secret。

在 GKE 中,應用程式層 Secret 加密功能會使用本機 DEK 和 AES-CBC 提供者,將您的 Secret 加密。GKE 會使用您在 Cloud KMS 中管理的 KEK 加密 DEK。

若要進一步瞭解信封式加密,請參閱信封式加密

建立密鑰時會發生什麼情況

建立新密鑰時會發生的情形如下:

  1. Kubernetes API 伺服器會使用隨機號碼產生器,為密鑰產生一個不重複的 DEK。

  2. Kubernetes API 伺服器會在本機使用這個 DEK 加密 Secret。

  3. KMS 外掛程式會將 DEK 傳送至 Cloud KMS 進行加密。KMS 外掛程式使用您的專案的 GKE 服務帳戶進行 Cloud KMS 驗證。

  4. Cloud KMS 會使用 KEK 將 DEK 加密,再將其傳回 KMS 外掛程式。

  5. Kubernetes API 伺服器會儲存加密過的 Secret 和加密過的 DEK。純文字 DEK 不會儲存在磁碟中,只會儲存在 API 伺服器記憶體中。

  6. Kubernetes API 伺服器會建立快取項目,將加密的 DEK 對應至記憶體中的純文字 DEK。這樣一來,API 伺服器就能解密 Secret,而不必使用 Cloud KMS。

用戶端向 Kubernetes API 伺服器要求 Secret 時,會發生以下情況:

  1. Kubernetes API 伺服器會擷取加密過的 Secret 和加密過的 DEK。

  2. Kubernetes API 伺服器會檢查快取中是否有現有的對應項目,並解密 Secret,而不使用 Cloud KMS。

  3. 如果找不到快取項目,KMS 外掛程式會將 DEK 傳送至 Cloud KMS,以使用 KEK 進行解密。然後使用解密的 DEK 解密密鑰。

  4. Kubernetes API 伺服器會將解密後的 Secret 傳回給用戶端。

銷毀金鑰時會發生什麼情況

如果打算在金鑰輪替後銷毀舊版 KEK,請先使用新版 KEK 重新加密 Secret。您可以選擇保留先前的 KEK 版本,避免重新加密 Secret,但您仍須為 Cloud KMS 中的所有有效 KEK 付費。如需定價詳細資料,請參閱 Cloud KMS 定價

除非使用 Service Account Token Volume Projection,否則 GKE 工作負載使用的服務帳戶也會使用 Secret,如果金鑰遭到破壞就無法再使用。無法存取這些金鑰代表工作負載將會失敗。

都有下列例外情況:

  • 如果 Pod 已透過掛接磁碟區或環境變數存取密鑰,則仍可繼續存取。

  • 銷毀 KEK 後,Kubernetes API 伺服器仍可使用快取的 DEK 對應項目解密 Secret。這樣一來,重新啟動或重新排定的 Pod 就能存取 Secret,除非發生下列其中一種情況:

    • 叢集控制層會重新啟動。
    • Kubernetes API 伺服器 Pod 會重新啟動。
    • Secret 的 DEK 對應項目不在 Kubernetes API 伺服器快取中。

銷毀 KEK 之前,請確認您的叢集是否在使用這個金鑰。您也可以針對 Cloud KMS 中的金鑰銷毀作業建立快訊政策。請務必確認叢集中沒有任何資料使用舊版 KEK 加密,再銷毀舊版 KEK。銷毀 KEK 前,請先確認金鑰是否正在使用中。詳情請參閱刪除及還原金鑰版本

您可以在可設定的期間過後,安排銷毀金鑰版本。在這段時間內,如果您改變心意,可以還原金鑰版本,避免遭到刪除。不過,一旦排定的銷毀時間到來,且金鑰版本遭到銷毀,這項操作就無法復原。以這個金鑰版本加密的任何資料都會永久無法解密。

事前準備

  • 如要進行本主題的練習,您需要兩個 Google Cloud 專案:

    • 金鑰專案:這是您建立 KEK 的專案。

    • 叢集專案:這是您建立可用應用程式層密鑰加密作業的叢集。

    金鑰專案和叢集專案可以合併為同一個專案。不過,建議做法是使用不同的專案

  • 在金鑰專案中,請務必啟用 Cloud KMS API。

    啟用 Cloud KMS API

  • 在金鑰專案中,建立金鑰環和金鑰的使用者需具備下列 IAM 權限:

    • cloudkms.keyRings.getIamPolicy
    • cloudkms.keyRings.setIamPolicy

    這些權限 (以及更多權限) 會授予預先定義的 roles/cloudkms.admin Identity and Access Management 角色。詳情請參閱 Cloud KMS 說明文件中的授予管理金鑰的權限一節。

  • 在叢集專案中,請務必啟用 Google Kubernetes Engine API。

    啟用 Google Kubernetes Engine API

  • 確認您已安裝 Google Cloud CLI

  • gcloud 更新到最新版本:

    gcloud components update

建立 Cloud KMS 金鑰

如要建立 Cloud KMS 金鑰,請先建立金鑰環。金鑰和金鑰環是區域性資源。建立金鑰環時,請指定與 GKE 叢集位置一致的位置:

  • 區域叢集應使用來自超集合地區的金鑰環,舉例來說,us-central1-a 區域中的叢集只能使用 us-central1 地區中的金鑰。

  • 地區叢集應使用來自同一個位置的金鑰環。舉例來說,asia-northeast1 地區的叢集應使用 asia-northeast1 地區的金鑰環加以保護。

Cloud KMS global 地區不支援使用 GKE。

您可以使用 gcloud CLI 或 Google Cloud 控制台。

控制台

在您的金鑰專案中建立一個金鑰環:

  1. 前往 Google Cloud 控制台的「Key Management」頁面。

    前往「金鑰管理」

  2. 按一下 [Create key ring] (建立金鑰環)

  3. 在「Key ring name」(金鑰環名稱) 欄位中輸入金鑰環的名稱。

  4. 從「Location」(位置) 清單中,選取 Kubernetes 叢集的位置。

  5. 點選「建立」

接著,建立金鑰:

  1. 前往 Google Cloud 控制台的「Key Management」頁面。

    前往「金鑰管理」

  2. 找出您要在哪個金鑰環中建立金鑰,然後按一下該金鑰環名稱。

  3. 按一下 [Create key] (建立金鑰)

  4. 在「Key name」(金鑰名稱) 欄位中,輸入金鑰的名稱。

  5. 接受「Rotation period」(輪替週期) 和「Starting on」(開始日期) 的預設值,或者如果您要使用其他值,請設定金鑰輪替週期與開始時間

  6. [選用] 如果您要為金鑰新增標籤,請按一下「Labels」(標籤) 欄位中的 [Add label] (新增標籤)

  7. 點選「建立」

gcloud

在您的金鑰專案中建立一個金鑰環:

gcloud kms keyrings create RING_NAME \
    --location=LOCATION \
    --project=KEY_PROJECT_ID

更改下列內容:

  • RING_NAME:新金鑰環的名稱。
  • LOCATION:要在其中建立金鑰環的位置。
  • KEY_PROJECT_ID:您的金鑰專案 ID。

建立金鑰:

gcloud kms keys create KEY_NAME \
    --location=LOCATION \
    --keyring=RING_NAME \
    --purpose=encryption \
    --project=KEY_PROJECT_ID

更改下列內容:

  • KEY_NAME:新金鑰的名稱。
  • LOCATION:您建立金鑰環的 Cloud KMS 位置。
  • RING_NAME:金鑰環的名稱。
  • KEY_PROJECT_ID:您的金鑰專案 ID。

授予金鑰使用權限

叢集中的 GKE 服務帳戶名稱如下:

service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com

CLUSTER_PROJECT_NUMBER 替換為叢集專案編號。如要使用 gcloud CLI 找出專案編號,請執行下列指令:

gcloud projects describe CLUSTER_PROJECT_ID \
    --format="value(projectNumber)"

如要授予服務帳戶存取權限,您可以使用 Google Cloud 控制台或 gcloud CLI。

控制台

將 Cloud KMS 的 CryptoKey 加密者/解密者角色授予您的 GKE 服務帳戶:

  1. 前往 Google Cloud 控制台的「金鑰管理」頁面。

    前往「金鑰管理」

  2. 按一下包含要使用金鑰的金鑰環名稱。

  3. 選取要使用金鑰的核取方塊。

    右邊窗格的「Permissions」(權限) 分頁隨即顯示。

  4. 在「Add members」(新增成員) 對話方塊中,指定您授予存取權的 GKE 服務帳戶的電子郵件地址。

  5. 在「Select a role」(選取角色) 下拉式清單中,選取 [Cloud KMS CryptoKey Encrypter/Decrypter] (Cloud KMS CryptoKey 加密者/解密者)

  6. 按一下 [Save] (儲存)

gcloud

將 Cloud KMS 的 CryptoKey 加密者/解密者角色授予您的 GKE 服務帳戶:

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --location=LOCATION \
    --keyring=RING_NAME \
    --member=serviceAccount:SERVICE_ACCOUNT_NAME \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project=KEY_PROJECT_ID

更改下列內容:

  • KEY_NAME:金鑰的名稱。
  • LOCATION:您建立金鑰環的 Cloud KMS 位置。
  • RING_NAME:金鑰環的名稱。
  • SERVICE_ACCOUNT_NAME:GKE 服務帳戶的名稱。
  • KEY_PROJECT_ID:您的金鑰專案 ID。

如果是 Cloud HSM 金鑰,請確認金鑰有足夠的配額

如果您使用 Cloud HSM 金鑰,包含該金鑰的 Google Cloud 專案會受到金鑰配額限制。請確認您有足夠的配額,可將 Cloud HSM 金鑰用於應用程式層密鑰加密。如果配額用盡,節點可能會無法連線至叢集控制層。

啟用應用程式層 Secret 加密功能

您可以使用 gcloud CLI 或 Google Cloud 控制台,在新或現有的 GKE Standard 和 GKE Autopilot 叢集上啟用應用程式層 Secret 加密功能。

最佳做法

啟用應用程式層 Secret 加密功能後,請執行金鑰輪替。您可以在 Cloud KMS 中設定自動金鑰輪替

在新叢集上啟用

您可以使用Google Cloud 主控台或 gcloud CLI,建立啟用應用程式層密鑰加密的新叢集。

控制台 - Autopilot

如要建立啟用應用程式層密鑰加密的 Autopilot 叢集,請執行下列步驟:

  1. 在 Google Cloud 控制台中,前往「Create an Autopilot cluster」(建立 Autopilot 叢集) 頁面。

    前往「Create an Autopilot cluster」(建立 Autopilot 叢集) 頁面

  2. 視需求設定叢集。

  3. 在導覽窗格中,按一下「進階設定」並展開「安全性」部分。

  4. 選取「Encrypt secrets at the application layer」(在應用程式層加密 Secret) 核取方塊,然後選擇您在「建立 Cloud KMS 金鑰」中建立的金鑰。

  5. 點選「建立」

控制台 - 標準

如要建立啟用應用程式層 Secret 加密的標準叢集,請執行下列步驟:

  1. 在 Google Cloud 控制台中,前往「建立 Kubernetes 叢集」頁面。

    前往「建立 Kubernetes 叢集」

  2. 視需求設定叢集。

  3. 在導覽窗格的「Cluster」(叢集) 底下,按一下「Security」(安全性)

  4. 選取「Encrypt secrets at the application layer」(在應用程式層加密 Secret) 核取方塊,然後選擇您在「建立 Cloud KMS 金鑰」中建立的金鑰。

  5. 點選「建立」

gcloud

如要建立支援應用程式層 Secret 加密的叢集,請在建立指令中指定 --database-encryption-key 參數的值。

gcloud container clusters create-auto CLUSTER_NAME \
    --cluster-version=latest \
    --location=CONTROL_PLANE_LOCATION \
    --database-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
    --project=CLUSTER_PROJECT_ID

更改下列內容:

  • CLUSTER_NAME:您為新叢集選擇的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域
  • KEY_PROJECT_ID:您的金鑰專案 ID。
  • LOCATION:您建立金鑰環的 Cloud KMS 位置。
  • RING_NAME:金鑰環的名稱。
  • KEY_NAME:金鑰的名稱。
  • CLUSTER_PROJECT_ID:叢集的專案 ID

您可以使用 gcloud container clusters create 指令和相同的標記,在新版叢集上啟用應用程式層 Secret 加密功能。

在現有叢集上啟用

您可以使用 gcloud CLI 或 Google Cloud 控制台,將現有叢集更新為使用應用程式層 Secret 加密。GKE 會使用您指定的加密金鑰,加密所有現有和新的 Secret。

更新現有叢集以使用應用程式層 Secret 加密時,叢集控制層會重新啟動。如果是可用區叢集,控制層會無法使用。

控制台

如何更新叢集以支援應用程式層 Secret 加密:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下您要修改的叢集名稱。

  3. 在「安全性」下方的「應用程式層 Secret 加密」欄位中,按一下 「編輯應用程式層 Secret 加密」

  4. 勾選「Enable Application-layer secrets encryption」(啟用應用程式層 Secret 加密) 核取方塊,然後選擇您在「建立 Cloud KMS 金鑰」中建立的金鑰。

  5. 按一下 [儲存變更]。

gcloud

如要在現有叢集上啟用應用程式層 Secret 加密功能,請執行下列指令:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --database-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
    --project=CLUSTER_PROJECT_ID

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
  • KEY_PROJECT_ID:您的金鑰專案 ID。
  • LOCATION:您建立金鑰環的 Cloud KMS 位置。
  • RING_NAME:金鑰環的名稱。
  • KEY_NAME:金鑰的名稱。
  • CLUSTER_PROJECT_ID:叢集的專案 ID

更新 Cloud KMS 金鑰

您可以使用 gcloud CLI 或 Google Cloud 控制台,更新現有叢集以使用新的 Cloud KMS 金鑰。

更新現有叢集以使用新的 Cloud KMS 金鑰時,叢集控制層會重新啟動。如果是區域叢集,控制層會無法使用。

控制台

如要更新叢集以使用新的 Cloud KMS 金鑰,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下您要修改的叢集名稱。

  3. 在「安全性」下方的「應用程式層 Secret 加密」欄位中,按一下 「編輯應用程式層 Secret 加密」

  4. 選取要使用的新加密金鑰。

  5. 按一下 [儲存變更]。

gcloud

更新現有叢集,改用新的 Cloud KMS 金鑰:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --database-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
    --project=CLUSTER_PROJECT_ID

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
  • KEY_PROJECT_ID:您的金鑰專案 ID。
  • LOCATION:您建立金鑰環的 Cloud KMS 位置。
  • RING_NAME:金鑰環的名稱。
  • KEY_NAME:金鑰的名稱。
  • CLUSTER_PROJECT_ID:叢集的專案 ID

停用應用程式層 Secret 加密功能

如要停用應用程式層 Secret 加密,可以使用 gcloud CLI 或Google Cloud 控制台。

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下您要修改的叢集名稱。

  3. 在「安全性」下方的「應用程式層 Secret 加密」欄位中,按一下 「編輯應用程式層 Secret 加密」

  4. 取消勾選「啟用應用程式層 Secret 加密」核取方塊。

  5. 按一下 [儲存變更]。

gcloud

如要停用應用程式層 Secret 加密功能,請執行下列指令:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --disable-database-encryption \
    --project=CLUSTER_PROJECT_ID

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
  • CLUSTER_PROJECT_ID:叢集的專案 ID

確認是否已啟用應用程式層 Secret 加密功能

您可以使用Google Cloud 控制台或 gcloud CLI,查看叢集是否使用應用程式層 Secret 加密。

控制台

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下您要修改的叢集名稱。

  3. 在「安全性」下方,確認「應用程式層 Secret 加密」欄位顯示 Enabled,並列出正確的金鑰。

gcloud

查看叢集是否使用應用程式層 Secret 加密:

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='value(databaseEncryption)' \
    --project=CLUSTER_PROJECT_ID

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
  • CLUSTER_PROJECT_ID:叢集的專案 ID

如果叢集使用應用程式層密鑰加密,輸出內容會類似於下列範例:

keyName=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME;state=ENCRYPTED

輪替金鑰

最佳做法

定期輪替金鑰,包括啟用應用程式層 Secret 加密功能後。如需設定自動金鑰輪替或手動輪替金鑰的操作說明,請參閱「輪替金鑰」。

執行金鑰輪替時,現有密鑰仍會使用先前的金鑰加密金鑰 (KEK) 版本加密。為確保是以較新的 KEK 版本包裝 Secret,請在金鑰輪替後重新加密 Secret

舉例來說,您可以建立和儲存 Secret Secret1,它會使用 DEK1 加密,其本身會使用 KEKv1 包裝。

KEK 輪替後,您會重新加密 Secret1,使其由 DEK2 包裝,而 DEK2 則由 KEKv2 (輪替的 KEK) 包裝。

金鑰版本輪替是最終一致性作業,新的金鑰版本可能需要一段時間才會生效。詳情請參閱「金鑰版本的一致性」一文。

重新加密 Secret

執行金鑰輪替後,您應重新加密 Secret,並以新版 KEK 包裝。您可以透過下列任一方式重新加密 Secret:

  • 手動在終端機中執行 kubectl 指令。
  • 自動執行:使用週期性工作負載 (例如 CronJob),定期執行 kubectl 指令。

金鑰輪替後,請至少等待三小時,新版本才會保持一致。接著,執行類似下列的指令,觸發重新加密作業:

kubectl get secrets --namespace=NAMESPACE -o json \
    | kubectl annotate --overwrite -f - encryption-key-rotation-time="TIME"

更改下列內容:

  • NAMESPACE:要更新 Secret 的命名空間。在標準叢集中,您也可以選擇使用 --all-namespaces 旗標,透過相同指令更新叢集中的每個 Secret。在 Autopilot 叢集中,您只能更新自己擁有的命名空間。
  • TIME:指出輪替發生時間的字串 (例如 20200909-090909)。

輪替金鑰後,舊版金鑰仍會存在,且可能會產生費用。金鑰版本一經刪除就無法復原,因此請務必先確認不再使用舊金鑰版本,再將其刪除。詳情請參閱「查看金鑰用量」。

限制

  • GKE 每個叢集最多支援 30,000 個 Secret,用於應用程式層 Secret 加密。如果儲存超過 30,000 個密鑰,叢集在升級時可能會變得不穩定,導致工作負載可能發生中斷。
  • 請確認每個命名空間中,密碼中繼資料的平均大小低於 5 KiB。如果中繼資料的平均大小超過 5 KiB,叢集可能會進入不良狀態,導致部分密鑰在啟用或停用這項功能後加密,其他密鑰則會解密。
  • 您選取的金鑰必須和叢集位於同一個地區。舉例來說,us-central1-a 中的區域叢集只能使用 us-central1 地區中的金鑰。如果是地區叢集,金鑰必須位於同一個位置,以縮短延遲時間,並避免資源依賴的服務分散在多個故障網域的情形。

    金鑰和叢集可以不屬於同一個專案。如要進一步瞭解 Cloud KMS 支援的位置,請參閱Google Cloud 位置

  • GKE 僅支援 Cloud KMS 金鑰。您無法使用其他 Kubernetes KMS 提供者或其他加密提供者

疑難排解

如要瞭解如何排解應用程式層 Secret 加密問題,包括解決 Secret 加密更新失敗的問題,請參閱「排解應用程式層 Secret 加密問題」。

Cloud KMS 金鑰已停用

GKE 的預設服務帳戶無法使用已停用的 Cloud KMS 金鑰,進行應用程式層密鑰加密

如要重新啟用已停用的金鑰,請參閱「啟用已停用的金鑰版本」。

Cloud KMS 金鑰版本已銷毀

如果叢集狀態包含以下訊息: KEY_VERSION_URI is not enabled, current state is: DESTROYED, 表示用於應用程式層 Secret 加密的金鑰版本已刪除

KEY_VERSION_URI 替換為金鑰版本的 URI。

後續步驟