Questo argomento fornisce una panoramica di Cloud HSM e mostra come creare e Utilizzare chiavi di crittografia protette da HSM in Cloud Key Management Service.
Che cos'è Cloud HSM?
Cloud HSM è un servizio per modulo di sicurezza hardware (HSM) ospitato nel cloud che consente di ospitare le chiavi di crittografia ed eseguire operazioni crittografiche in un cluster di HSM certificati FIPS 140-2 di livello 3. Google il cluster HSM viene gestito automaticamente, quindi non devi preoccuparti del clustering, la scalabilità o l'applicazione di patch. Poiché Cloud HSM utilizza Cloud KMS come dal suo front-end, puoi sfruttare tutte le comodità e funzionalità Cloud KMS fornisce.
Creazione di un keyring
Quando crei una chiave, la aggiungi a un keyring in un determinato account Google Cloud in ogni località. Puoi creare un nuovo keyring o utilizzarne uno esistente. In questo argomento, crei un nuovo keyring e vi aggiungi una nuova chiave.
Crea un keyring in una località Google Cloud che supporti per la risoluzione dei problemi di Google Cloud HSM.
Console
Vai alla pagina Gestione delle chiavi nella console Google Cloud.
Fai clic su Crea keyring.
In Nome keyring, inserisci un nome per il keyring.
Per Posizione keyring, selezionane una, ad esempio
"us-east1"
.Fai clic su Crea.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
-
Nel tuo ambiente, esegui il comando
gcloud kms keyrings create
:gcloud kms keyrings create KEY_RING \ --location LOCATION
Sostituisci quanto segue:
KEY_RING
: il nome del keyring che contiene la chiave.LOCATION
: la posizione Cloud KMS della raccolta di chiavi.
Per informazioni su tutti i flag e sui possibili valori, esegui il comando con
--help
flag.
C#
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo C# e installare l'SDK C# Cloud KMS.
Go
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Go e installa l'SDK Cloud KMS Go.
Java
Per eseguire questo codice, per prima cosa configura un ambiente di sviluppo Java e installare l'SDK Java di Cloud KMS.
Node.js
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Cloud KMS.
PHP
Per eseguire questo codice, scopri innanzitutto come utilizzare PHP su Google Cloud e installa l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, configura prima un ambiente di sviluppo Python e installare l'SDK per Python di Cloud KMS.
Ruby
Per eseguire questo codice, prima configura un ambiente di sviluppo Ruby e installa l'SDK Ruby di Cloud KMS.
API
In questi esempi viene utilizzato curl come client HTTP per dimostrare l'uso dell'API. Per ulteriori informazioni sul controllo dell'accesso, consulta Accedere all'API Cloud KMS.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN"
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il keyring.KEY_RING
: il nome del keyring che contiene la chiave.LOCATION
: la località Cloud KMS del keyring.
Consulta la documentazione dell'API KeyRing.create
per ulteriori informazioni.
Crea una chiave
Segui questi passaggi per creare una chiave Cloud HSM nel keyring specificato e la località.
Console
Vai alla pagina Gestione delle chiavi nella console Google Cloud.
Fai clic sul nome del keyring per il quale creerai una chiave.
Fai clic su Crea chiave.
In Che tipo di chiave vuoi creare?, scegli Generato? chiave.
Nel campo Nome chiave, inserisci il nome della chiave.
Fai clic sul menu a discesa Livello di protezione e seleziona HSM.
Fai clic sul menu a discesa Finalità e seleziona Crittografia/decrittografia simmetrica.
Accetta i valori predefiniti per Periodo di rotazione e Inizio.
Fai clic su Crea.
gcloud
Per utilizzare Cloud KMS nella riga di comando, devi prima Installa o esegui l'upgrade alla versione più recente di Google Cloud CLI.
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "encryption" \ --protection-level "hsm"
Sostituisci key con un nome per la nuova chiave. Sostituisci key-ring con il nome del keyring esistente in cui si troverà la chiave. Sostituisci location con la località di Cloud KMS per il keyring.
Per informazioni su tutti i flag e i possibili valori, esegui il comando con il flag --help
.
C#
Per eseguire questo codice, per prima cosa configura un ambiente di sviluppo C# e installare l'SDK Cloud KMS C#.
Go
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Go e installa l'SDK Cloud KMS Go.
Java
Per eseguire questo codice, per prima cosa configura un ambiente di sviluppo Java e installare l'SDK Java di Cloud KMS.
Node.js
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Cloud KMS.
PHP
Per eseguire questo codice, scopri innanzitutto come utilizzare PHP su Google Cloud e installa l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, configura prima un ambiente di sviluppo Python e installare l'SDK per Python di Cloud KMS.
Ruby
Per eseguire questo codice, prima configura un ambiente di sviluppo Ruby e installa l'SDK Ruby di Cloud KMS.
Criptare i dati
Ora che hai una chiave, puoi utilizzarla per criptare testo o contenuti binari.
gcloud
Per utilizzare Cloud KMS sulla riga di comando, esegui l'installazione o l'upgrade alla versione più recente di Google Cloud CLI.
gcloud kms encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
Sostituisci key con il nome della chiave da utilizzare per la crittografia. Sostituisci key-ring con il nome del mazzo di chiavi in cui si trova la chiave. Sostituisci location con la località di Cloud KMS per l'account il keyring. Sostituisci file-with-data-to-encrypt e file-to-store-encrypted-data con i percorsi dei file locali per la lettura dei dati in chiaro e salvare l'output criptato.
Per informazioni su tutti i flag e sui possibili valori, esegui il comando con
--help
flag.
C#
Per eseguire questo codice, per prima cosa configura un ambiente di sviluppo C# e installare l'SDK Cloud KMS C#.
Go
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Go e installa l'SDK Cloud KMS Go.
Java
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Cloud KMS.
Node.js
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Cloud KMS.
PHP
Per eseguire questo codice, devi innanzitutto scoprire come utilizzare PHP su Google Cloud e installare l'SDK PHP Cloud KMS.
Python
Per eseguire questo codice, configura prima un ambiente di sviluppo Python e installare l'SDK per Python di Cloud KMS.
Ruby
Per eseguire questo codice, prima configura un ambiente di sviluppo Ruby e installa l'SDK Ruby di Cloud KMS.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per ulteriori informazioni sul controllo dell'accesso, vedi Accesso all'API Cloud KMS.
Quando si utilizzano JSON e l'API REST, i contenuti devono essere codificati in base-64 prima di poter essere criptati da Cloud KMS.
Per criptare i dati, effettua una richiesta POST
e fornisci il progetto e i dati appropriati
le informazioni chiave e specificare il testo con codifica Base64 da criptare
Campo plaintext
del corpo della richiesta.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
Ecco un payload di esempio con dati codificati in base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Decripta testo crittografato
Per decriptare i contenuti criptati, devi usare la stessa chiave che hai usato per criptare dei contenuti.
gcloud
Per utilizzare Cloud KMS nella riga di comando, devi prima Installa o esegui l'upgrade alla versione più recente di Google Cloud CLI.
gcloud kms decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
Sostituisci key con il nome della chiave da utilizzare per la decriptazione. Sostituisci key-ring con il nome del keyring in cui si troverà la chiave. Sostituisci location con la posizione di Cloud KMS per la chiave suonano. Sostituisci file-path-with-encrypted-data e file-path-to-store-plaintext con i percorsi dei file locali per la lettura i dati criptati e salvare l'output decriptato.
Per informazioni su tutti i flag e sui possibili valori, esegui il comando con
--help
flag.
C#
Per eseguire questo codice, per prima cosa configura un ambiente di sviluppo C# e installare l'SDK Cloud KMS C#.
Go
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Go e installa l'SDK Cloud KMS Go.
Java
Per eseguire questo codice, per prima cosa configura un ambiente di sviluppo Java e installare l'SDK Java di Cloud KMS.
Node.js
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Cloud KMS.
PHP
Per eseguire questo codice, scopri innanzitutto come utilizzare PHP su Google Cloud e installa l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, configura prima un ambiente di sviluppo Python e installare l'SDK per Python di Cloud KMS.
Ruby
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Ruby e installare l'SDK Ruby Cloud KMS.
API
In questi esempi viene utilizzato curl come client HTTP per dimostrare l'uso dell'API. Per ulteriori informazioni sul controllo dell'accesso, vedi Accesso all'API Cloud KMS.
Il testo decriptato restituito nel file JSON da Cloud KMS viene con codifica Base64.
Per decriptare i dati criptati, effettua una richiesta POST
e fornisci i dati appropriati
progetto e le informazioni chiave e specificare il testo crittografato da utilizzare
decriptato nel campo ciphertext
del corpo della richiesta.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
Ecco un payload di esempio con dati codificati in base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Passaggi successivi
L'esempio di crittografia in questo argomento utilizzava una chiave simmetrica con il livello di protezione HSM. Per criptare utilizzando una chiave asimmetrica con di protezione di HSM, seguire i passaggi Crittografia e decriptazione dei dati con una chiave asimmetrica con queste modifiche:
- Crea il keyring in una delle regioni supportate per Cloud HSM.
- Crea la chiave con livello di protezione HSM.
Per utilizzare una chiave asimmetrica con il livello di protezione di HSM per ellittica curva di firma o firma RSA, segui i passaggi su Crea e convalida firme con queste modifiche:
- Crea il keyring in una delle regioni supportate per Cloud HSM.
- Crea la chiave con il livello di protezione HSM.
Inizia a utilizzare l'API.
Dai un'occhiata Riferimento API Cloud KMS.
Leggi le guide illustrative per iniziare a creare, ruotare e impostare. le autorizzazioni relative alle chiavi.
Leggi i concetti per comprendere meglio la gerarchia degli oggetti, gli stati delle chiavi la rotazione della chiave.
Scopri di più su Logging in Cloud KMS. Tieni presente che il logging basato sulle operazioni e si applica alle chiavi con HSM e software e livelli di protezione specifici.
Scopri di più su come Cloud HSM protegge i tuoi dati nel White paper sull'architettura di Cloud HSM
Limitazioni note
La dimensione del messaggio è limitata a 8 KiB (anziché 64 KiB per chiavi software Cloud KMS) per il testo non crittografato e testo crittografato, inclusi i dati autenticati aggiuntivi.
Cloud HSM potrebbe non essere disponibile in alcune regioni multiple o doppie. Per maggiori dettagli, vedi Regioni supportate per Cloud HSM.
Se utilizzi chiavi Cloud HSM con una chiave di crittografia gestita dal cliente (CMEK) in altri servizi Google Cloud, le località per i servizi deve corrispondere alle località di Cloud HSM tasti. Ciò vale per le località regionali, con due regioni e con più regioni.
Per ulteriori informazioni sulle integrazioni CMEK, consulta la sezione pertinente di Crittografia a riposo.
Al momento, le operazioni sulle chiavi per le chiavi asimmetriche archiviate in Cloud HSM possono comportare una latenza notevolmente maggiore rispetto all'utilizzo delle chiavi software Cloud KMS.
Bare Metal Rack HSM
Google Cloud offre opzioni HSM aggiuntive, come la proprietà monoutente. L'HSMBare Metal Rack è disponibile per consentire ai clienti di ospitare i propri moduli HSM nello spazio fornito da Google. Rivolgiti al rappresentante del tuo account per informazioni ulteriori informazioni.