Importare ed esportare chiavi

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 risorse KeyImport.
  • Amministratore esportazione chiavi KMS (kms-keyexport-admin): crea, aggiorna ed elimina risorse KeyExport.

prepara l'ambiente

Importare una chiave esportata

Per importare una chiave esportata:

  1. Crea un file YAML e aggiungi la risorsa KeyImport come valore dell'oggetto kind:

    apiVersion: "kms.gdc.goog/v1"
    kind: KeyImport
    metadata:
      name: KEY_IMPORT_NAME
      namespace: PROJECT
    spec:
      context:
        mechanism: MECHANISM
    

    Sostituisci 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` .
  2. Applica i contenuti del file YAML a KMS e crea la risorsa KeyImport:

    kubectl apply -f FILENAME.yaml
    

    Sostituisci FILENAME con il nome del file YAML.

    Con la chiave pubblica di una coppia di chiavi generata internamente, KMS aggiorna lo stato della risorsa KeyImport a AwaitingKeyToImport. Per continuare, devi visualizzare lo stato della risorsa e ottenere la chiave pubblica generata da KMS.

  3. Per visualizzare lo stato della risorsa KeyImport e ottenere la chiave pubblica generata da KMS, esegui questo comando:

    kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT
    

    Sostituisci 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.

    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 KeyExport nel passaggio successivo.

  4. Crea un altro file YAML, aggiungi la risorsa KeyExport come valore dell'oggetto kind e 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_NAME
    

    Sostituisci 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.

  5. Applica i contenuti del file YAML a KMS e crea la risorsa KeyExport:

    kubectl apply -f FILENAME.yaml
    

    Sostituisci FILENAME con il nome del file YAML.

    Dopo aver eseguito il comando, KMS aggiorna lo stato della risorsa KeyExport e genera una chiave esportata. Per ottenere la chiave esportata, visualizza lo stato della risorsa.

  6. Per visualizzare lo stato della risorsa, esegui questo comando:

    kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT
    

    Sostituisci 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.

    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_KEY
    

    EXPORTED_KEY rappresenta i metadati della chiave esportata. Copia i contenuti in EXPORTED_KEY per continuare con il passaggio successivo.

  7. Modifica il file YAML che contiene la risorsa KeyImport e aggiungi i contenuti copiati dall'output in 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
    
  8. Dopo aver modificato il file YAML, applica i contenuti a KMS:

    kubectl apply -f FILENAME.yaml
    

    Dopo aver eseguito il comando, KMS importa la chiave esportata che hai fornito.

  9. Per visualizzare i dettagli della chiave importata, esegui questo comando:

    kubectl get keyimport KEY_IMPORT_NAME
    

    Vedrai un output simile al seguente:

    NAMESPACE   NAME             AGE    READY   REASON              KEY KIND
    kms-test1  KEY_IMPORT_NAME   60s    True    KeyImportCompleted  KEY_PRIMITIVE
    

    KEY_PRIMITIVE rappresenta il tipo di chiave che hai importato, tra le chiavi AEAD e di firma.