本頁面提供應用程式運算子 (AO) 的操作說明,瞭解如何從匯出的金鑰管理系統 (KMS) 金鑰執行金鑰匯入作業。AO 會使用下列資源的 kubectl 指令列介面 (CLI) 執行匯入和匯出作業:
如要進一步瞭解這些資源,請參閱 KMS API 總覽。
如要查看 KMS 支援的金鑰完整清單和詳細資料,請參閱「金鑰管理系統 (KMS)」頁面的「支援的金鑰」一節。
事前準備
執行 KMS 作業前,請先設定 kubectl,以便存取 Management API 伺服器並取得必要權限。
設定 Management API 伺服器存取權
設定 kubectl 以存取 Management API 伺服器:
- 如果還沒這麼做,請使用 gdcloud CLI 介面,為 Management API 伺服器取得 kubeconfig 檔案。
設定
MANAGEMENT_API_SERVER環境變數:export MANAGEMENT_API_SERVER=PATH_TO_KUBECONFIG將
PATH_TO_KUBECONFIG替換為產生的 kubeconfig 檔案路徑。
所需權限
如要取得所需權限,請要求組織 IAM 管理員授予您 KMS 金鑰匯入管理員 (kms-keyimport-admin) 和 KMS 金鑰匯出管理員 (kms-keyexport-admin) 角色。
匯入匯出的金鑰
如要匯入匯出的金鑰,請完成下列步驟:
建立 YAML 檔案,並將
KeyImport資源新增為kind物件的值:apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM請替換下列變數:
- KEY_IMPORT_NAME:
KeyImport資源的名稱,例如:key-import-test。 - PROJECT:專案命名空間的名稱,例如:
kms-test1。 - MECHANISM:金鑰的分享機制,例如:`EDCH_P521_AES256`。
- KEY_IMPORT_NAME:
將 YAML 檔案的內容套用至 KMS,並建立
KeyImport資源:kubectl apply -f FILENAME.yaml將 FILENAME 替換成 YAML 檔案的名稱。
KMS 會使用內部產生的金鑰組公開金鑰,將
KeyImport資源的狀態更新為AwaitingKeyToImport。如要繼續,您必須查看資源狀態,並取得 KMS 產生的公開金鑰。如要查看
KeyImport資源的狀態,並取得 KMS 產生的公開金鑰,請執行下列指令:kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT請替換下列變數:
- KEY_IMPORT_NAME:
KeyImport資源名稱,例如key-import-test。 - PROJECT:專案命名空間的名稱,例如:
kms-test1。
執行指令後,您會看到類似下方的輸出內容:
... Status: Conditions: Last Transition Time: 2022-12-14T20:43:50Z Message: waiting for user to provide KeyToImport Observed Generation: 1 Reason: AwaitingKeyToImport Status: False Type: Ready Imported Key Ref: Kind: KeyImport Name: key-import-test Peer Context: Private Key: Public Key: PUBLIC_KEY Events: <none>值 PUBLIC_KEY 代表 KMS 產生的公開金鑰。複製公開金鑰,並在下一個步驟中新增至
KeyExport資源。- KEY_IMPORT_NAME:
建立另一個 YAML 檔案,在
kind物件的值中加入KeyExport資源,以及下列內容:apiVersion: "kms.gdc.goog/v1" kind: KeyExport metadata: name: KEY_EXPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM publicKey: PUBLIC_KEY keyToExport: kind: KEY_PRIMITIVE name: KEY_NAME請替換下列變數:
- KEY_EXPORT_NAME:
KeyExport資源的名稱,例如:key-export-test。 PROJECT:專案命名空間的名稱,例如:
kms-test1。MECHANISM:金鑰的分享機制,例如:`EDCH_P521_AES256`。
PUBLIC_KEY:
keyImport.Status.PeerContext.PublicKey中的公開金鑰。KEY_PRIMITIVE:金鑰的 CRD,例如 aeadkey 和 signingkey。
KEY_NAME:金鑰名稱,例如
key-1。
- KEY_EXPORT_NAME:
將 YAML 檔案的內容套用至 KMS,並建立
KeyExport資源:kubectl apply -f FILENAME.yaml將 FILENAME 替換成 YAML 檔案的名稱。
執行指令後,KMS 會更新
KeyExport資源的狀態,並產生匯出的金鑰。如要取得匯出的金鑰,請查看資源的狀態。如要查看資源狀態,請執行下列指令:
kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT請替換下列變數:
- KEY_EXPORT_NAME:
KeyExport資源的名稱,例如key-export-test。 - PROJECT:專案命名空間的名稱,例如:
kms-test1。
執行指令後,您會看到類似以下的輸出內容:
... Status: Conditions: Last Transition Time: 2022-12-14T20:45:57Z Message: key successfully exported Observed Generation: 1 Reason: KeyExportCompleted Status: True Type: Ready Exported Key: EXPORTED_KEYEXPORTED_KEY 代表匯出金鑰的中繼資料。複製 EXPORTED_KEY 中的內容,繼續執行下一個步驟。
- KEY_EXPORT_NAME:
編輯包含
KeyImport資源的 YAML 檔案,並加入從keyexport.status.exportedkey輸出內容複製的內容。apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: key-import-test namespace: kms-test1 spec: context: mechanism: EDCH_P521_AES256 keyToImport: EXPORTED_KEY編輯 YAML 檔案後,請將內容套用至 KMS:
kubectl apply -f FILENAME.yaml執行指令後,KMS 會匯入您提供的匯出金鑰。
如要查看匯入金鑰的詳細資料,請執行下列指令:
kubectl get keyimport KEY_IMPORT_NAME畫面會顯示類似以下內容的輸出:
NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVEKEY_PRIMITIVE 代表您匯入的金鑰類型,介於 AEAD 和簽署金鑰之間。