建立及刪除金鑰

金鑰管理系統 (KMS) 支援不同類型的金鑰,用於加密、解密、簽署和驗證等加密編譯作業。如要進一步瞭解可用的金鑰類型和演算法,請參閱「支援的金鑰」。

本頁面適用於應用程式運算子群組中的對象,例如 DevOps 團隊,在 Google Distributed Cloud (GDC) 氣隙環境中執行金鑰管理作業時,詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

事前準備

如要建立及管理金鑰,請要求必要權限並準備環境。

要求 IAM 角色

請與機構的 IAM 管理員聯絡,要求對方在專案命名空間中授予您下列角色:

  • KMS 建立者 (kms-creator):在專案中查看及建立 AEADKeySigningKey 資源。
  • KMS 管理員 (kms-admin):查看、建立及刪除專案中的金鑰。

準備環境

  1. 如果尚未安裝並初始化 gcloud CLI,請先完成這項操作。

  2. 使用 gdcloud CLI 向 GDC 驗證身分。這項程序需要貴機構控制台的憑證授權單位 (CA) 憑證:

    1. 下載 CA 憑證:

      echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATH
      

      更改下列內容:

      • CONSOLE_URL:貴機構的控制台網址 (例如 console.org-1.zone1.google.gdch.test)
      • CA_CERT_PATH:您要儲存 CA 憑證檔案的完整路徑 (例如 /tmp/my-org-ca.crt)
    2. 使用下載的 CA 憑證登入:

      gdcloud auth login --login-config-cert=CA_CERT_PATH
      
  3. 使用 gdcloud CLI 取得 Management API 伺服器的 kubeconfig 檔案

建立金鑰

您可以為不同的加密編譯用途建立金鑰。

建立 AEAD 金鑰

如要使用相關聯的資料執行已驗證的加密作業 (AEAD),請在專案命名空間中建立 AEADKey 資源:

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: AEADKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: AES_256_GCM
EOF

更改下列內容:

  • KUBECONFIG_PATH:Management API 伺服器的 kubeconfig 檔案路徑
  • KEY_NAME:要建立的 AEAD 金鑰名稱,例如:key-1
  • PROJECT:專案名稱,例如:kms-test1

建立簽署金鑰

如要簽署及驗證資料,請在專案命名空間中建立 SigningKey 資源:

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: SigningKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: EC_SIGN_P384_SHA384
EOF

更改下列內容:

  • KUBECONFIG_PATH:Management API 伺服器的 kubeconfig 檔案路徑
  • KEY_NAME:要建立的簽署金鑰名稱,例如:key-1
  • PROJECT:專案名稱,例如:kms-test1

驗證金鑰建立作業

建立金鑰後,請確認作業是否成功,以及金鑰資源是否已準備就緒。

驗證 AEAD 金鑰建立作業

檢查 AEAD 金鑰的狀態:

kubectl --kubeconfig KUBECONFIG_PATH \
  get aeadkey KEY_NAME \
  --namespace=PROJECT -o yaml

更改下列內容:

  • KUBECONFIG_PATH:Management API 伺服器的 kubeconfig 檔案路徑
  • KEY_NAME:要驗證的 AEAD 金鑰名稱,例如:key-1
  • PROJECT:專案名稱,例如:kms-test1

如果金鑰建立成功,請檢查輸出內容中是否有狀態為 TrueReady 條件。

驗證簽署金鑰建立作業

查看簽署金鑰的狀態:

kubectl --kubeconfig KUBECONFIG_PATH \
  get signingkey KEY_NAME \
  --namespace=PROJECT -o yaml

更改下列內容:

  • KUBECONFIG_PATH:Management API 伺服器的 kubeconfig 檔案路徑
  • KEY_NAME:用於驗證的簽署金鑰名稱,例如:key-1
  • PROJECT:專案名稱,例如:kms-test1

如果金鑰建立成功,請檢查輸出內容中是否有狀態為 TrueReady 條件。

刪除金鑰

如要刪除金鑰資源,請指定金鑰類型和名稱。

  1. 刪除專案命名空間中的金鑰:

    kubectl --kubeconfig KUBECONFIG_PATH \
      delete KEY_PRIMITIVE KEY_NAME \
      --namespace=PROJECT
    

    更改下列內容:

    • KUBECONFIG_PATH:Management API 伺服器的 kubeconfig 檔案路徑
    • KEY_PRIMITIVE:要刪除的金鑰資源類型,例如 AEAD 金鑰的 aeadkey 或簽署金鑰的 signingkey
    • KEY_NAME:要刪除的金鑰名稱,例如:key-1
    • PROJECT:專案名稱,例如:kms-test1
  2. 嘗試擷取金鑰,確認金鑰已刪除:

    kubectl --kubeconfig KUBECONFIG_PATH \
      get KEY_PRIMITIVE  KEY_NAME \
      --namespace=PROJECT
    

    如果金鑰已成功刪除,指令不會傳回金鑰物件。