Questo documento mostra come importare ed esportare le chiavi del sistema di gestione delle chiavi (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 che eseguono operazioni di gestione delle chiavi in Google Distributed Cloud (GDC) air-gapped. Per saperne di più, consulta la documentazione relativa ai gruppi di destinatari per GDC con air gap.
Prima di iniziare
Prima di importare o esportare le chiavi, devi disporre delle autorizzazioni necessarie e preparare l'ambiente.
Richiedere i 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 le risorseKeyImport. - Amministratore esportazione chiavi KMS (
kms-keyexport-admin): crea, aggiorna ed elimina le risorseKeyExport.
Prepara l'ambiente
Scarica e installa la CLI gdcloud, se non l'hai ancora fatto.
Genera un file kubeconfig per configurare l'accesso
kubectl.
Importare una chiave esportata
Per importare una chiave esportata, segui questi passaggi:
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 esempiokey-import-test. - PROJECT: il nome dello spazio dei nomi del progetto, ad esempio
kms-test1. - MECHANISM: il meccanismo di condivisione delle chiavi 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 il comando seguente:kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECTSostituisci le seguenti variabili:
- KEY_IMPORT_NAME: il nome della ris101orsa
KeyImport, ad esempiokey-import-test. - PROJECT: il nome dello spazio dei nomi del progetto, ad esempio
kms-test1.
Dopo aver eseguito il comando, vedrai 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 ris101orsa
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 esempiokey-export-test. PROJECT: il nome dello spazio dei nomi del progetto, ad esempio
kms-test1.MECHANISM: il meccanismo di condivisione delle chiavi della chiave ad esempio `EDCH_P521_AES256` .
PUBLIC_KEY: la chiave pubblica da
keyImport.Status.PeerContext.PublicKey.KEY_PRIMITIVE: la 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 il comando seguente:
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, vedrai 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 al 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 il comando seguente:
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.