Crea e gestisci un'istanza Cloud HSM a tenant singolo

Questa guida mostra come creare, eseguire il provisioning e gestire un'istanza Single-tenant Cloud HSM utilizzando la Google Cloud CLI. Dopo aver creato e provisionato l'istanza, puoi creare e utilizzare le chiavi nell'istanza utilizzando la console Google Cloud , l'API Cloud Key Management Service, gcloud CLI e le librerie client.

La creazione e la gestione dell'istanza richiedono l'autenticazione del quorum. Quando crei l'istanza, definisci il numero di approvazioni dei membri del quorum necessarie per eseguire le operazioni dell'istanza. I membri del quorum devono sempre avere a disposizione almeno questo numero di chiavi di controllo per mantenere il controllo amministrativo della tua istanza.

Prima di iniziare

  1. Esamina e applica le best practice di Cloud HSM single-tenant durante la creazione e la manutenzione dell'istanza.
  2. Decidi con quanti membri del quorum vuoi iniziare. Altri membri del quorum possono essere aggiunti in un secondo momento, se approvati dai membri del quorum esistenti. Il numero minimo di membri del quorum è tre.
  3. Decidi quanti membri del quorum sono necessari per approvare le proposte. Non puoi modificare questo numero dopo la creazione dell'istanza. I membri del quorum devono sempre avere accesso a questo numero di chiavi di controllo per mantenere l'istanza. La dimensione minima del quorum è due. La dimensione del quorum richiesta deve essere inferiore al numero di membri del quorum.
  4. Decidi come assicurarti che l'istanza venga aggiornata in tempo. Devi monitorare disableDate dell'istanza e proporre, approvare ed eseguire un'operazione di aggiornamento dell'istanza prima della scadenza per evitare tempi di inattività indesiderati.
  5. Per ottenere le autorizzazioni necessarie per creare, gestire e utilizzare istanze Single-tenant Cloud HSM, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto o in una risorsa padre:

    • Crea proposte: Cloud KMS single-tenant HSM Proposer (cloudkms.hsmSingleTenantProposer)
    • Approva proposte: Cloud KMS single-tenant HSM Quorum Member (cloudkms.hsmSingleTenantQuorumMember)
    • Esegui proposte: Cloud KMS single-tenant HSM Executor (cloudkms.hsmSingleTenantExecutor)
    • Crea chiavi: Cloud KMS single-tenant HSM Key Creator (roles/cloudkms.hsmSingleTenantKeyCreator)

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  6. Per ogni membro del quorum, genera una coppia di chiavi RSA-2048 per l'autenticazione a due fattori (2FA). Ti consigliamo di utilizzare token fisici per i tasti di controllo. Segui gli standard della tua organizzazione per la creazione di coppie di chiavi RSA-2048 sui token fisici.

    A scopo dimostrativo, questa guida utilizza OpenSSL per creare tre chiavi RSA-2048 supportate da software:

        openssl genrsa -out rsaprivate1.pem
        openssl genrsa -out rsaprivate2.pem
        openssl genrsa -out rsaprivate3.pem
    
        openssl rsa -in rsaprivate1.pem  -out rsapub1.pem --pubout
        openssl rsa -in rsaprivate2.pem  -out rsapub2.pem --pubout
        openssl rsa -in rsaprivate3.pem  -out rsapub3.pem --pubout
        

    Conserva le chiavi private in modo sicuro, in quanto ti servono per approvare le proposte. Tieni a portata di mano le chiavi pubbliche, ti serviranno per creare l'istanza Cloud HSM a tenant singolo.

  7. Scegli una località Cloud KMS che supporti Cloud HSM single-tenant. Per identificare le località compatibili, visualizza l'elenco delle località nella pagina Località Cloud KMS. Per il filtro Supporto HSM, seleziona Supporta HSM a tenant singolo.

Crea e esegui il provisioning di un'istanza

Per creare e eseguire il provisioning di un'istanza Single-tenant Cloud HSM, utilizza gcloud CLI per creare la risorsa istanza, creare una proposta per registrare le chiavi di autenticazione e poi approvare ed eseguire la proposta.

Crea l'istanza

Questo passaggio deve essere completato da un amministratore dell'istanza con il ruolo Cloud KMS single-tenant HSM Proposer.

  1. Imposta il progetto predefinito.

    gcloud config set project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'identificatore del tuo progetto.

  2. Crea l'istanza Cloud HSM single-tenant.

    gcloud kms single-tenant-hsm create --location=LOCATION \
        --total-approver-count=QUORUM_MEMBER_COUNT \
        --single-tenant-hsm-instance-id=INSTANCE_ID
    

    Sostituisci quanto segue:

    • LOCATION: la posizione in cui vuoi creare l'istanza, ad esempio us-central1.
    • QUORUM_MEMBER_COUNT: il numero totale di membri del quorum. Questo è anche il numero di chiavi di controllo che hai creato in precedenza. Il valore minimo è 3. È possibile aggiungere altre chiavi in un secondo momento con l'approvazione del quorum. Per eseguire il recupero dopo la perdita di una chiave di controllo, devi avere almeno un membro del quorum in più rispetto alla dimensione del quorum richiesta.
    • INSTANCE_ID: l'identificatore che vuoi utilizzare per l'istanza, ad esempio example-sthsm-instance. Puoi omettere il flag --single-tenant-hsm-instance-id per fare in modo che Cloud HSM assegni un UUID.
  3. Controlla lo stato dell'istanza.

    gcloud kms single-tenant-hsm describe INSTANCE_ID \
        --location=LOCATION
    

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • LOCATION: la località in cui hai creato l'istanza.

    Se lo stato è PENDING_TWO_FACTOR_AUTH_REGISTRATION, puoi eseguire il provisioning dell'istanza. In genere, sono necessari tra 5 e 30 minuti per raggiungere questo stato.

Esegui il provisioning dell'istanza

  1. Crea una proposta per registrare le tue chiavi di autenticazione a due fattori utilizzando l'operazione register_two_factor_auth_keys. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Proposer. A differenza della maggior parte delle proposte, la proposta register_two_factor_auth_keys richiede sfide firmate da tutti i membri del quorum.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID 
    --single-tenant-hsm-instance-proposal-id PROPOSAL_ID
    --location LOCATION
    --operation-type register_two_factor_auth_keys
    --required-approver-count MEMBERS_REQUIRED_FOR_APPROVAL
    --two-factor-public-key-pems=PUBLIC_KEY_LIST

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore univoco che vuoi utilizzare per questa proposta, ad esempio set-up-2fa.
    • LOCATION: la località in cui hai creato l'istanza.
    • MEMBERS_REQUIRED_FOR_APPROVAL: il numero di membri del quorum che devono approvare una proposta prima che l'operazione possa essere eseguita. Il valore minimo è 2. Questo valore non può essere modificato dopo il provisioning dell'istanza. I membri del quorum devono sempre avere accesso ad almeno questo numero di chiavi di controllo per mantenere il controllo amministrativo dell'istanza.
    • PUBLIC_KEY_LIST: un elenco separato da virgole di percorsi alle parti della chiave pubblica di tutte le tue chiavi di controllo, ad esempio rsapub1.pem,rsapub2.pem,rsapub3.pem. Il numero di chiavi pubbliche in questo elenco deve corrispondere al valore di QUORUM_MEMBER_COUNT che hai utilizzato in precedenza.
  2. Visualizza lo stato della proposta e attendi che diventi PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore della proposta, ad esempio set-up-2fa.
    • LOCATION: la località in cui hai creato l'istanza.

    Quando lo stato è PENDING, puoi firmare le sfide.

  3. Ottieni le sfide dalla proposta. Il provisioning di una nuova istanza Cloud HSM single-tenant richiede sfide firmate da tutti i membri del quorum.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Questo comando restituisce un array di sfide in formato JSON.

  4. Per ogni chiave, decodifica la sfida utilizzando `basenc --base64url -d` e firmala con la chiave privata corrispondente.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Sostituisci quanto segue:

    • N: il numero della sfida, ad esempio 1 per la prima sfida, 2 per la seconda e così via.
    • CHALLENGE_N: i contenuti della sfida numero N dall'output del passaggio precedente.
    • PRIVATE_KEY_N: il percorso del numero della chiave privata N, ad esempio rsaprivate1.pem per la prima sfida.
  5. Approva la proposta caricando le sfide firmate. Puoi caricarli con un unico comando o con più comandi. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Quorum Member.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Sostituisci SIGNED_QUORUM_CHALLENGE_LIST con un array in formato JSON di sfide, in cui ogni elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] per inviare le prime due sfide firmate in un unico comando.

    Dopo aver caricato il numero richiesto di sfide firmate, lo stato della proposta viene aggiornato a APPROVED.

  6. Una volta approvata la proposta, utilizza il comando execute per completare l'operazione register_two_factor_auth_keys. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Executor e deve essere completato entro 24 ore dalla creazione della proposta.

        gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID 
    --single_tenant_hsm_instance INSTANCE_ID --location LOCATION

    Si tratta di un'operazione a lunga esecuzione che esegue il provisioning degli utenti e crea backup. L'istanza diventa ACTIVE dopo 20-30 minuti.

  7. Una volta che l'istanza è ACTIVE, visualizza i dettagli dell'istanza per visualizzare disableDate:

        gcloud kms single-tenant-hsm describe INSTANCE_ID 
    --location=LOCATION

    Prendi nota di disableDate dell'istanza. Devi completare un'operazione refresh_single_tenant_hsm_instance prima di questo orario, altrimenti la tua istanza verrà disattivata.

Visualizza istanze

Gli utenti con uno dei seguenti ruoli possono visualizzare un elenco di istanze Cloud HSM a tenant singolo e i relativi stati:

  • Cloud KMS single-tenant HSM Proposer
  • Cloud KMS single-tenant HSM Quorum Member
  • Cloud KMS single-tenant HSM Executor
  • Visualizzatore Cloud KMS
  • Amministratore Cloud KMS

Assicurati di controllare regolarmente lo stato delle tue istanze. Le istanze devono essere aggiornate regolarmente per rimanere attive.

È possibile utilizzare le istanze nello stato Attivo. Gli sviluppatori che devono creare o importare chiavi nelle istanze Cloud HSM a tenant singolo hanno bisogno dell'identificatore di risorsa dell'istanza. L'identificatore della risorsa utilizza il seguente formato:

projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME

Per visualizzare le istanze nella tua organizzazione e trovare i relativi identificatori di risorse, segui questi passaggi:

Console

  1. Nella console Google Cloud , vai alla pagina Infrastruttura KMS.

    Vai all'infrastruttura KMS

  2. Nella scheda Istanza HSM a tenant singolo, fai clic su Visualizza. La pagina Istanza HSM a tenant singolo mostra un elenco di tutte le istanze Cloud HSM a tenant singolo per le quali disponi delle autorizzazioni di visualizzazione.

  3. Per visualizzare i dettagli di un'istanza, fai clic sul nome dell'istanza. La pagina Dettagli istanza HSM a tenant singolo mostra i dettagli dell'istanza selezionata, incluso l'identificatore di risorsa completo dell'istanza e un elenco di proposte create per l'istanza.

  4. (Facoltativo) Per visualizzare o scaricare le chiavi pubbliche associate alle chiavi di autenticazione a due fattori (2FA) attuali dei membri del quorum, fai clic su Ottieni chiave pubblica. Puoi confrontare le chiavi pubbliche con le tue chiavi 2FA private per verificare quali chiavi di controllo sono attive.

gcloud

Visualizza un elenco di istanze esistenti utilizzando il metodo kms single-tenant-hsm list.

gcloud kms single-tenant-hsm list projects/PROJECT_ID/locations/LOCATION

Sostituisci quanto segue:

  • PROJECT_ID: l'identificatore del progetto in cui vuoi visualizzare le istanze Single-tenant Cloud HSM.
  • LOCATION: la località in cui vuoi visualizzare le istanze Cloud HSM single-tenant.

Visualizza i dettagli di un'istanza esistente utilizzando il metodo kms single-tenant-hsm describe.

gcloud kms single-tenant-hsm describe --location=LOCATION \
    --singletenanthsminstance=INSTANCE_ID

Sostituisci quanto segue:

  • LOCATION: la località in cui vuoi visualizzare le istanze Cloud HSM single-tenant.
  • INSTANCE_ID: l'istanza per la quale vuoi visualizzare i dettagli.

Utilizzare l'istanza

Mentre l'istanza è ACTIVE, puoi creare e utilizzare le chiavi. Puoi creare chiavi Cloud HSM single-tenant su qualsiasi portachiavi che si trova nella stessa località di un'istanza Cloud HSM single-tenant attiva.

La creazione di chiavi Cloud HSM single-tenant richiede il ruolo Cloud KMS single-tenant HSM Key Creator oltre al ruolo Cloud KMS Admin.

Una volta create, l'utilizzo delle chiavi Cloud HSM single-tenant non richiede autorizzazioni speciali.

Crea una chiave

Quando crei una chiave Cloud HSM a tenant singolo, devi specificare l'istanza Cloud HSM a tenant singolo in cui vuoi crearla. In caso contrario, la procedura è simile alla creazione di qualsiasi altra chiave. Per istruzioni dettagliate, vedi Creare una chiave.

Importare una chiave

Quando importi il materiale della chiave in una chiave Cloud HSM single-tenant, devi specificare l'istanza Cloud HSM single-tenant in cui vuoi archiviarlo. In caso contrario, la procedura è simile all'importazione di qualsiasi altra chiave. Per istruzioni dettagliate, vedi Importare una versione della chiave in Cloud Key Management Service.

Utilizzare una chiave

Dopo la creazione della chiave, l'utilizzo di una chiave Cloud HSM single-tenant è identico all'utilizzo di qualsiasi altra chiave Cloud HSM. Non è necessario specificare l'istanza Single-tenant Cloud HSM per utilizzare la chiave.

Gestire un'istanza

Dopo il provisioning dell'istanza, sei responsabile della sua manutenzione. Gestisci l'istanza creando proposte per le operazioni di manutenzione, ottenendo l'approvazione del quorum ed eseguendo l'operazione approvata. Può essere attiva una sola proposta alla volta. Se scegli di non procedere con una proposta, non puoi proporre un'operazione diversa finché non elimini la proposta attiva o non attendi la scadenza della proposta.

Devi aggiornare l'istanza prima del giorno disableDate. Se devi controllare il disableDate di un'istanza, puoi visualizzare i dettagli dell'istanza.

Visualizzare le proposte di istanza

Per visualizzare le proposte per un'istanza:

Console

  1. Nella console Google Cloud , vai alla pagina Infrastruttura KMS.

    Vai all'infrastruttura KMS

  2. Nella scheda Istanza HSM a tenant singolo, fai clic su Visualizza. La pagina Istanza HSM a tenant singolo mostra un elenco di tutte le istanze Cloud HSM a tenant singolo per le quali disponi delle autorizzazioni di visualizzazione.

  3. Individua l'istanza in cui vuoi visualizzare le proposte e fai clic sul nome dell'istanza. La pagina Dettagli istanza HSM a tenant singolo mostra i dettagli dell'istanza, incluso un elenco di proposte create per l'istanza.

  4. (Facoltativo) Per filtrare l'elenco delle proposte, fai clic sulla barra Filtro e inserisci i criteri di filtro. Ad esempio, puoi filtrare l'elenco per visualizzare solo la proposta in attesa di approvazione o solo le proposte che sono state completate correttamente.

gcloud

  • Visualizza un elenco di proposte esistenti utilizzando il metodo kms single-tenant-hsm proposal list.

    gcloud kms single-tenant-hsm proposal list --location=LOCATION \
        --singletenanthsminstance=INSTANCE_ID

    Sostituisci quanto segue:

    • LOCATION: la località in cui vuoi visualizzare le istanze Cloud HSM single-tenant.
    • INSTANCE_ID: l'identificatore dell'istanza Single-tenant Cloud HSM per cui vuoi visualizzare le proposte.

Aggiorna un'istanza

Puoi aggiornare un'istanza per mantenerla aggiornata e contribuire a evitare tempi di inattività non pianificati. Questa operazione richiede l'autenticazione del quorum. Una volta approvata la proposta, il completamento dell'operazione richiede circa 15-30 minuti.

Quando aggiorni un'istanza, il valore di disableDate viene impostato su 120 giorni a partire dal momento dell'aggiornamento.

  1. Crea una proposta per aggiornare l'istanza utilizzando il tipo di operazione refresh_single_tenant_hsm_instance. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Proposer.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type refresh_single_tenant_hsm_instance
        

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • LOCATION: la località in cui hai creato l'istanza.
    • PROPOSAL_ID: l'identificatore univoco che vuoi utilizzare per questa proposta, ad esempio refresh_instance.
  2. Visualizza lo stato della proposta e attendi che diventi PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore della proposta, ad esempio refresh_instance.
    • LOCATION: la località in cui hai creato l'istanza.

    Quando lo stato è PENDING, puoi firmare le sfide.

  3. Ottieni le sfide dalla proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Questo comando restituisce un array di sfide in formato JSON.

  4. Per ogni richiesta restituita nel passaggio precedente, decodifica la richiesta utilizzando basenc --base64url -d e firmala con una chiave privata.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Sostituisci quanto segue:

    • N: il numero della sfida, ad esempio 1 per la prima sfida, 2 per la seconda e così via.
    • CHALLENGE_N: i contenuti della sfida numero N dall'output del passaggio precedente.
    • PRIVATE_KEY_N: il percorso del numero della chiave privata N, ad esempio rsaprivate1.pem per la prima sfida.
  5. Approva la proposta caricando le sfide firmate. Puoi caricarli con un unico comando o con più comandi. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Quorum Member.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Sostituisci SIGNED_QUORUM_CHALLENGE_LIST con un array in formato JSON di sfide, in cui ogni elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] per inviare le prime due sfide firmate in un unico comando.

    Dopo aver caricato il numero richiesto di sfide firmate, lo stato della proposta viene aggiornato a APPROVED.

  6. Esegui la proposta. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Executor e deve essere completato entro 24 ore dalla creazione della proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Al termine dell'operazione, l'istanza rimane nello stato `ACTIVE` e disableDate è impostato su 120 giorni dal momento dell'aggiornamento.

Aggiungere un membro del quorum

Puoi aggiungere un membro del quorum a un'istanza. Questa operazione richiede l'autenticazione del quorum. Una volta approvata la proposta, l'operazione richiede circa 15-30 minuti per essere completata.

  1. Genera una nuova coppia di chiavi RSA-2048 per il nuovo membro del quorum. Segui gli standard della tua organizzazione per la creazione di coppie di chiavi RSA-2048 su token fisici.

    Conserva la chiave privata in modo sicuro, in quanto ti servirà per approvare le proposte. Tieni a portata di mano la chiave pubblica, ti servirà per aggiungere il nuovo membro del quorum all'istanza Cloud HSM single-tenant.

  2. Crea una proposta per aggiungere un membro del quorum all'istanza utilizzando l'operazione add_quorum_member. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Proposer.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type add_quorum_member \
            --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
        

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • LOCATION: la località in cui hai creato l'istanza.
    • PROPOSAL_ID: l'identificatore univoco che vuoi utilizzare per questa proposta, ad esempio add_quorum_member.
    • PATH_TO_PUBLIC_KEY: il percorso della nuova chiave pubblica, ad esempio rsapub4.pem.
  3. Visualizza lo stato della proposta e attendi che diventi PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore della proposta, ad esempio add_quorum_member.
    • LOCATION: la località in cui hai creato l'istanza.

    Quando lo stato è PENDING, puoi firmare le sfide.

  4. Ottieni le sfide dalla proposta. L'aggiunta di un nuovo membro del quorum richiede contestazioni firmate da un quorum di membri esistenti più una contestazione firmata dal nuovo membro utilizzando la nuova chiave.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](requiredActionQuorumParameters.requiredChallenges,requiredActionQuorumParameters.quorumChallenges)"
      

    Questo comando restituisce un array di sfide in formato JSON. Il campo requiredActionQuorumParameters.requiredChallenges contiene una sfida per la nuova chiave che stai registrando. Il campo requiredActionQuorumParameters.quorumChallenges contiene le sfide per un quorum delle chiavi esistenti. Devi firmare tutte le sfide nell'oggetto requiredActionQuorumParameters.

  5. Per ogni richiesta restituita nel passaggio precedente, decodifica la richiesta utilizzando basenc --base64url -d e firmala con una chiave privata.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Sostituisci quanto segue:

    • N: il numero della sfida, ad esempio 1 per la prima sfida, 2 per la seconda e così via.
    • CHALLENGE_N: i contenuti della sfida numero N dall'output del passaggio precedente.
    • PRIVATE_KEY_N: il percorso del numero della chiave privata N, ad esempio rsaprivate1.pem per la prima sfida.
  6. Approva la proposta caricando le sfide firmate. Puoi caricarli con un unico comando o con più comandi. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Quorum Member.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST" \
          --required-challenge-replies="SIGNED_REQUIRED_CHALLENGE_LIST"
      

    Sostituisci quanto segue:

    • SIGNED_QUORUM_CHALLENGE_LIST: un array in formato JSON di sfide firmate utilizzando chiavi private già registrate, in cui ogni elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] per inviare le prime due sfide firmate in un unico comando.
    • SIGNED_REQUIRED_CHALLENGE_LIST: un array in formato JSON contenente la sfida firmata utilizzando la nuova chiave privata, in cui l'unico elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio [('signed-challenge-newkey.txt','rsapub-newkey.pem')].

    Dopo aver caricato il numero richiesto di sfide firmate, lo stato della proposta viene aggiornato a APPROVED.

  7. Esegui la proposta. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Executor e deve essere completato entro 24 ore dalla creazione della proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Al termine dell'operazione, il nuovo membro del quorum può partecipare alle sfide per approvare le proposte. La chiave pubblica che hai aggiunto è ora inclusa nell'elenco delle chiavi pubbliche nei dettagli dell'istanza.

Rimuovere un membro del quorum

Se hai più membri del quorum rispetto alla dimensione del quorum richiesta, puoi rimuovere un membro del quorum da un'istanza. Questa operazione richiede l'autenticazione del quorum. Una volta approvata la proposta, il completamento dell'operazione richiede circa 15-30 minuti.

  1. Crea una proposta per rimuovere un membro del quorum dall'istanza utilizzando l'operazione remove_quorum_member. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Proposer.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type remove_quorum_member \
            --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
        

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • LOCATION: la località in cui hai creato l'istanza.
    • PROPOSAL_ID: l'identificatore univoco che vuoi utilizzare per questa proposta, ad esempio remove_quorum_member.
    • PATH_TO_PUBLIC_KEY: il percorso della chiave pubblica che vuoi rimuovere dall'istanza, ad esempio rsapub3.pem. Al termine dell'operazione, la chiave privata corrispondente non può essere utilizzata per approvare le proposte.
  2. Visualizza lo stato della proposta e attendi che diventi PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore della proposta, ad esempio remove_quorum_member.
    • LOCATION: la località in cui hai creato l'istanza.

    Quando lo stato è PENDING, puoi firmare le sfide.

  3. Ottieni le sfide dalla proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Questo comando restituisce un array di sfide in formato JSON.

  4. Per ogni richiesta restituita nel passaggio precedente, decodifica la richiesta utilizzando basenc --base64url -d e firmala con una chiave privata.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Sostituisci quanto segue:

    • N: il numero della sfida, ad esempio 1 per la prima sfida, 2 per la seconda e così via.
    • CHALLENGE_N: i contenuti della sfida numero N dall'output del passaggio precedente.
    • PRIVATE_KEY_N: il percorso del numero della chiave privata N, ad esempio rsaprivate1.pem per la prima sfida.
  5. Approva la proposta caricando le sfide firmate. Puoi caricarli con un unico comando o con più comandi. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Quorum Member.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Sostituisci SIGNED_QUORUM_CHALLENGE_LIST con un array in formato JSON di sfide, in cui ogni elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] per inviare le prime due sfide firmate in un unico comando.

    Dopo aver caricato il numero richiesto di sfide firmate, lo stato della proposta viene aggiornato a APPROVED.

  6. Esegui la proposta. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Executor e deve essere completato entro 24 ore dalla creazione della proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Al termine dell'operazione, il membro del quorum rimosso non può più partecipare alle sfide per approvare le proposte. La chiave pubblica che hai rimosso non è più inclusa nell'elenco delle chiavi pubbliche nei dettagli dell'istanza.

Disattivare un'istanza

Puoi disattivare un'istanza per bloccare temporaneamente l'accesso a tutte le relative chiavi. Questa operazione richiede l'autenticazione del quorum. Una volta approvata la proposta, l'operazione richiede circa 15-30 minuti per essere completata.

Mentre un'istanza è disattivata, le chiavi archiviate in quell'istanza vengono comunque visualizzate come ACTIVE, ma non sono utilizzabili. Il tentativo di eseguire operazioni crittografiche con una chiave in un'istanza disattivata genera un errore.

  1. Crea una proposta per disattivare l'istanza utilizzando il tipo di operazione disable_single_tenant_hsm_instance. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Proposer.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type disable_single_tenant_hsm_instance
        

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • LOCATION: la località in cui hai creato l'istanza.
    • PROPOSAL_ID: l'identificatore univoco che vuoi utilizzare per questa proposta, ad esempio disable_instance.
  2. Visualizza lo stato della proposta e attendi che diventi PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore della proposta, ad esempio disable_instance.
    • LOCATION: la località in cui hai creato l'istanza.

    Quando lo stato è PENDING, puoi firmare le sfide.

  3. Ottieni le sfide dalla proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Questo comando restituisce un array di sfide in formato JSON.

  4. Per ogni richiesta restituita nel passaggio precedente, decodifica la richiesta utilizzando basenc --base64url -d e firmala con una chiave privata.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Sostituisci quanto segue:

    • N: il numero della sfida, ad esempio 1 per la prima sfida, 2 per la seconda e così via.
    • CHALLENGE_N: i contenuti della sfida numero N dall'output del passaggio precedente.
    • PRIVATE_KEY_N: il percorso del numero della chiave privata N, ad esempio rsaprivate1.pem per la prima sfida.
  5. Approva la proposta caricando le sfide firmate. Puoi caricarli con un unico comando o con più comandi. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Quorum Member.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Sostituisci SIGNED_QUORUM_CHALLENGE_LIST con un array in formato JSON di sfide, in cui ogni elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] per inviare le prime due sfide firmate in un unico comando.

    Dopo aver caricato il numero richiesto di sfide firmate, lo stato della proposta viene aggiornato a APPROVED.

  6. Esegui la proposta. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Executor e deve essere completato entro 24 ore dalla creazione della proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Al termine dell'operazione, l'istanza rimane nello stato DISABLED e non può essere utilizzata finché non viene riattivata.

Abilitare un'istanza

Puoi riattivare un'istanza DISABLED per ripristinare l'accesso e le relative chiavi. Questa operazione richiede l'autenticazione del quorum. Una volta approvata la proposta, il completamento dell'operazione richiede circa 15-30 minuti.

  1. Crea una proposta per attivare l'istanza utilizzando il tipo di operazione enable_single_tenant_hsm_instance. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Proposer.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type enable_single_tenant_hsm_instance
        

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • LOCATION: la località in cui hai creato l'istanza.
    • PROPOSAL_ID: l'identificatore univoco che vuoi utilizzare per questa proposta, ad esempio enable_instance.
  2. Visualizza lo stato della proposta e attendi che diventi PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore della proposta, ad esempio enable_instance.
    • LOCATION: la località in cui hai creato l'istanza.

    Quando lo stato è PENDING, puoi firmare le sfide.

  3. Ottieni le sfide dalla proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Questo comando restituisce un array di sfide in formato JSON.

  4. Per ogni richiesta restituita nel passaggio precedente, decodifica la richiesta utilizzando basenc --base64url -d e firmala con una chiave privata.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Sostituisci quanto segue:

    • N: il numero della sfida, ad esempio 1 per la prima sfida, 2 per la seconda e così via.
    • CHALLENGE_N: i contenuti della sfida numero N dall'output del passaggio precedente.
    • PRIVATE_KEY_N: il percorso del numero della chiave privata N, ad esempio rsaprivate1.pem per la prima sfida.
  5. Approva la proposta caricando le sfide firmate. Puoi caricarli con un unico comando o con più comandi. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Quorum Member.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Sostituisci SIGNED_QUORUM_CHALLENGE_LIST con un array in formato JSON di sfide, in cui ogni elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] per inviare le prime due sfide firmate in un unico comando.

    Dopo aver caricato il numero richiesto di sfide firmate, lo stato della proposta viene aggiornato a APPROVED.

  6. Esegui la proposta. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Executor e deve essere completato entro 24 ore dalla creazione della proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Al termine dell'operazione, l'istanza torna allo stato `ACTIVE` e disableDate viene impostato su 120 giorni dal momento dell'aggiornamento.

Elimina un'istanza

Puoi eliminare un'istanza per distruggerla definitivamente e le relative chiavi. Questa operazione richiede l'autenticazione del quorum. Una volta approvata la proposta, l'operazione richiede circa 15-30 minuti per essere completata.

Dopo l'eliminazione di un'istanza, le chiavi archiviate in quell'istanza vengono ancora visualizzate come ACTIVE, ma non sono utilizzabili. Il tentativo di eseguire operazioni crittografiche con una chiave in un'istanza eliminata genera un errore.

  1. Crea una proposta per eliminare l'istanza utilizzando il tipo di operazione delete_single_tenant_hsm_instance. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Proposer.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type delete_single_tenant_hsm_instance
        

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza che vuoi eliminare.
    • LOCATION: la località in cui hai creato l'istanza.
    • PROPOSAL_ID: l'identificatore univoco che vuoi utilizzare per questa proposta, ad esempio delete_instance.
  2. Visualizza lo stato della proposta e attendi che diventi PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • PROPOSAL_ID l'identificatore della proposta, ad esempio delete_instance.
    • LOCATION: la località in cui hai creato l'istanza.

    Quando lo stato è PENDING, puoi firmare le sfide.

  3. Ottieni le sfide dalla proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Questo comando restituisce un array di sfide in formato JSON.

  4. Per ogni richiesta restituita nel passaggio precedente, decodifica la richiesta utilizzando basenc --base64url -d e firmala con una chiave privata.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Sostituisci quanto segue:

    • N: il numero della sfida, ad esempio 1 per la prima sfida, 2 per la seconda e così via.
    • CHALLENGE_N: i contenuti della sfida numero N dall'output del passaggio precedente.
    • PRIVATE_KEY_N: il percorso del numero della chiave privata N, ad esempio rsaprivate1.pem per la prima sfida.
  5. Approva la proposta caricando le sfide firmate. Puoi caricarli con un unico comando o con più comandi. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Quorum Member.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Sostituisci SIGNED_QUORUM_CHALLENGE_LIST con un array in formato JSON di sfide, in cui ogni elemento dell'elenco è una tupla che contiene il percorso della sfida firmata e il percorso della chiave pubblica corrispondente, ad esempio, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] per inviare le prime due sfide firmate in un unico comando.

    Dopo aver caricato il numero richiesto di sfide firmate, lo stato della proposta viene aggiornato a APPROVED.

  6. Assicurati di voler procedere all'eliminazione dell'istanza e alla distruzione crittografica di tutti i dati criptati utilizzando le chiavi create in questa istanza, quindi esegui la proposta. Questo passaggio richiede il ruolo Cloud KMS single-tenant HSM Executor e deve essere completato entro 24 ore dalla creazione della proposta.

    Avviso: il seguente comando è irreversibile. Può verificarsi una perdita permanente di dati. Google non può aiutarti a recuperare le chiavi in un'istanza eliminata.
        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Al termine dell'operazione, l'istanza viene eliminata.

Eliminare una proposta

Se decidi di non approvare o eseguire una proposta, puoi eliminarla prima della scadenza. L'eliminazione di una proposta in attesa ti impedisce di approvarla e ti consente di crearne una nuova. L'eliminazione di una proposta approvata ti impedisce di eseguire l'operazione.

  • Elimina una proposta utilizzando il comando proposal delete. Per questa operazione è necessario il ruolo Cloud KMS single-tenant HSM Proposer.

        gcloud kms single-tenant-hsm proposal delete PROPOSAL_ID \
            --location LOCATION \
            --single_tenant_hsm_instance INSTANCE_ID
        

    Sostituisci quanto segue:

    • INSTANCE_ID: l'identificatore dell'istanza.
    • LOCATION: la località in cui hai creato l'istanza.
    • PROPOSAL_ID: l'identificatore univoco della proposta che vuoi eliminare, ad esempio proposal_to_delete.

Passaggi successivi