金鑰管理系統 (KMS) 支援不同類型的金鑰,可用於加密、解密、簽署和驗證等加密編譯作業。如要進一步瞭解可用的金鑰類型和演算法,請參閱「支援的金鑰」。
本頁面適用於應用程式操作員群組中的對象 (例如 DevOps 團隊),說明如何在 Google Distributed Cloud (GDC) 實體隔離環境中執行金鑰管理作業。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。
事前準備
如要建立及管理金鑰,請要求必要權限並準備環境。
要求 IAM 角色
請與 IAM 機構組織管理員聯絡,要求對方在專案命名空間中授予您下列角色:
- KMS 建立者 (
kms-creator):查看及建立專案中的AEADKey和SigningKey資源。 - KMS 管理員 (
kms-admin):查看、建立及刪除專案中的金鑰。
準備環境
如果尚未安裝並初始化 gdcloud CLI,請先完成這些步驟。
使用 gdcloud CLI 向 GDC 驗證。這項程序需要貴機構控制台的憑證授權單位 (CA) 憑證:
下載 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)
使用下載的 CA 憑證登入:
gdcloud auth login --login-config-cert=CA_CERT_PATH
使用 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-1PROJECT:專案名稱,例如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-1PROJECT:專案名稱,例如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-1PROJECT:專案名稱,例如:kms-test1
如果金鑰建立成功,請檢查輸出內容,確認是否有狀態為 True 的 Ready 條件。
確認已建立簽署金鑰
查看簽署金鑰的狀態:
kubectl --kubeconfig KUBECONFIG_PATH \
get signingkey KEY_NAME \
--namespace=PROJECT -o yaml
更改下列內容:
KUBECONFIG_PATH:Management API 伺服器的 kubeconfig 檔案路徑KEY_NAME:要驗證的簽署金鑰名稱,例如:key-1PROJECT:專案名稱,例如kms-test1
如果金鑰建立成功,請檢查輸出內容,確認是否有狀態為 True 的 Ready 條件。
刪除金鑰
如要刪除金鑰資源,請指定金鑰類型和名稱。
刪除專案命名空間中的金鑰:
kubectl --kubeconfig KUBECONFIG_PATH \ delete KEY_PRIMITIVE KEY_NAME \ --namespace=PROJECT更改下列內容:
KUBECONFIG_PATH:Management API 伺服器的 kubeconfig 檔案路徑KEY_PRIMITIVE:要刪除的金鑰資源類型,例如 AEAD 金鑰的aeadkey,或簽署金鑰的signingkeyKEY_NAME:要刪除的金鑰名稱,例如key-1。PROJECT:專案名稱,例如kms-test1。
嘗試擷取金鑰,確認金鑰已刪除:
kubectl --kubeconfig KUBECONFIG_PATH \ get KEY_PRIMITIVE KEY_NAME \ --namespace=PROJECT如果金鑰已成功刪除,指令就不會傳回金鑰物件。