Questo documento mostra come importare ed esportare le chiavi del Key Management System (KMS). Queste operazioni utilizzano l'interfaccia a riga di comando (CLI) kubectl e interagiscono con le seguenti risorse Kubernetes:
Per visualizzare ulteriori dettagli su queste risorse, consulta la panoramica dell'API KMS.
Consulta la sezione Chiavi supportate nel documento del sistema di gestione delle chiavi per visualizzare l'elenco completo e i dettagli delle chiavi supportate da KMS.
Questo documento è destinato ai gruppi di operatori di applicazioni quando eseguono operazioni di gestione delle chiavi all'interno di Google Distributed Cloud (GDC) air-gap. Per maggiori informazioni, consulta Segmenti di pubblico per la documentazione di GDC con air gap.
Prima di iniziare
Prima di importare o esportare le chiavi, devi disporre delle autorizzazioni necessarie e preparare l'ambiente.
Richiedere ruoli IAM
Contatta l'amministratore IAM dell'organizzazione per richiedere i seguenti ruoli nel tuo progetto:
- Amministratore importazione chiavi KMS (
kms-keyimport-admin): crea, aggiorna ed elimina risorseKeyImport. - Amministratore esportazione chiavi KMS (
kms-keyexport-admin): crea, aggiorna ed elimina risorseKeyExport.
prepara l'ambiente
Installa la CLI
kubectl, come descritto in Installare i componenti.Genera un file kubeconfig per configurare l'accesso a
kubectl.
Importare una chiave esportata
Per importare una chiave esportata:
Crea un file YAML e aggiungi la risorsa
KeyImportcome valore dell'oggettokind:apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISMSostituisci le seguenti variabili:
- KEY_IMPORT_NAME: il nome della risorsa
KeyImport ad esempio:key-import-test. - PROJECT: il nome dello spazio dei nomi del progetto, ad esempio
kms-test1. - MECHANISM: il meccanismo di condivisione della chiave ad esempio: `EDCH_P521_AES256` .
- KEY_IMPORT_NAME: il nome della risorsa
Applica i contenuti del file YAML a KMS e crea la risorsa
KeyImport:kubectl apply -f FILENAME.yamlSostituisci FILENAME con il nome del file YAML.
Con la chiave pubblica di una coppia di chiavi generata internamente, KMS aggiorna lo stato della risorsa
KeyImportaAwaitingKeyToImport. Per continuare, devi visualizzare lo stato della risorsa e ottenere la chiave pubblica generata da KMS.Per visualizzare lo stato della risorsa
KeyImporte ottenere la chiave pubblica generata da KMS, esegui questo comando:kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECTSostituisci le seguenti variabili:
- KEY_IMPORT_NAME: il nome della risorsa
KeyImport, ad esempiokey-import-test. - PROJECT: il nome dello spazio dei nomi del progetto, ad esempio
kms-test1.
Dopo aver eseguito il comando, visualizzi un output simile al seguente:
... 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>Il valore PUBLIC_KEY rappresenta la chiave pubblica generata da KMS. Copia la chiave pubblica e aggiungila alla risorsa
KeyExportnel passaggio successivo.- KEY_IMPORT_NAME: il nome della risorsa
Crea un altro file YAML, aggiungi la risorsa
KeyExportcome valore dell'oggettokinde i seguenti contenuti: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_NAMESostituisci le seguenti variabili:
- KEY_EXPORT_NAME: il nome della risorsa
KeyExport ad esempio:key-export-test. PROJECT: il nome dello spazio dei nomi del progetto, ad esempio
kms-test1.MECHANISM: il meccanismo di condivisione della chiave ad esempio: `EDCH_P521_AES256` .
PUBLIC_KEY: la chiave pubblica di
keyImport.Status.PeerContext.PublicKey.KEY_PRIMITIVE: il CRD della chiave, ad esempio aeadkey e signingkey.
KEY_NAME: il nome della chiave, ad esempio
key-1.
- KEY_EXPORT_NAME: il nome della risorsa
Applica i contenuti del file YAML a KMS e crea la risorsa
KeyExport:kubectl apply -f FILENAME.yamlSostituisci FILENAME con il nome del file YAML.
Dopo aver eseguito il comando, KMS aggiorna lo stato della risorsa
KeyExporte genera una chiave esportata. Per ottenere la chiave esportata, visualizza lo stato della risorsa.Per visualizzare lo stato della risorsa, esegui questo comando:
kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECTSostituisci le seguenti variabili:
- KEY_EXPORT_NAME: il nome della risorsa
KeyExport, ad esempiokey-export-test. - PROJECT: il nome dello spazio dei nomi del progetto, ad esempio
kms-test1.
Dopo aver eseguito il comando, visualizzi un output simile al seguente:
... 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 rappresenta i metadati della chiave esportata. Copia i contenuti in EXPORTED_KEY per continuare con il passaggio successivo.
- KEY_EXPORT_NAME: il nome della risorsa
Modifica il file YAML che contiene la risorsa
KeyImporte aggiungi i contenuti copiati dall'output inkeyexport.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_KEYDopo aver modificato il file YAML, applica i contenuti a KMS:
kubectl apply -f FILENAME.yamlDopo aver eseguito il comando, KMS importa la chiave esportata che hai fornito.
Per visualizzare i dettagli della chiave importata, esegui questo comando:
kubectl get keyimport KEY_IMPORT_NAMEVedrai un output simile al seguente:
NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVEKEY_PRIMITIVE rappresenta il tipo di chiave che hai importato, tra le chiavi AEAD e di firma.