Importare ed esportare chiavi

Questa pagina contiene le istruzioni per l'operatore dell'applicazione (AO) per eseguire operazioni di importazione delle chiavi dai sistemi di gestione delle chiavi (KMS) esportati. L'AO esegue le operazioni di importazione ed esportazione utilizzando l'interfaccia a riga di comando (CLI) kubectl dalle seguenti risorse:

Per visualizzare ulteriori dettagli su queste risorse, consulta la panoramica dell'API KMS.

Consulta la sezione Chiavi supportate nella pagina Sistemi di gestione delle chiavi (KMS) per visualizzare l'elenco completo e i dettagli delle chiavi KMS supportate.

Prima di iniziare

Prima di continuare, assicurati di avere quanto segue:

  • Il comando kubectl configurato per accedere al server dell'API Management. Per farlo, segui le sezioni Ottieni un file kubeconfig e Interfaccia a riga di comando (CLI) gcloud.

  • I ruoli Amministratore importazione chiavi KMS e Amministratore esportazione chiavi KMS. Per ottenere le autorizzazioni necessarie per importare una chiave esportata, chiedi all'amministratore della piattaforma di concederti i ruoli Amministratore importazione chiavi KMS (kms-keyimport-admin) e Amministratore esportazione chiavi KMS (kms-keyexport-admin).

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 che hai copiato 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
    

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