Questo argomento mostra come eseguire le seguenti operazioni sulle chiavi simmetriche:
- Cripta testo o contenuti binari (testo non crittografato) utilizzando una chiave Cloud Key Management Service.
- Decripta il testo crittografato che è stato criptato con una chiave Cloud KMS.
Se invece vuoi utilizzare una chiave asimmetrica per la crittografia, consulta Crittografia e decriptazione dei dati con una chiave asimmetrica. Per informazioni sulla crittografia simmetrica non elaborata, consulta l'articolo Crittografia simmetrica non elaborata.
Prima di iniziare
Crea un keyring e una chiave come descritto nella sezione Creazione di keyring e chiavi.
Assicurati che l'utente che chiama i metodi di crittografia e decriptazione disponga delle autorizzazioni
cloudkms.cryptoKeyVersions.useToEncrypt
ecloudkms.cryptoKeyVersions.useToDecrypt
per la chiave utilizzata per criptare o decriptare.Un modo per consentire a un utente di criptare o decriptare è aggiungerlo ai ruoli IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
oroles/cloudkms.cryptoKeyEncrypterDecrypter
per quella chiave. Tieni presente che il ruoloroles/cloudkms.admin
non fornisce queste due autorizzazioni. Per maggiori informazioni, consulta Autorizzazioni e ruoli.
Cripta
gcloud
Per utilizzare Cloud KMS nella riga di comando, devi prima installare o eseguire 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 keyring in cui si trova la chiave. Sostituisci location con la località di Cloud KMS del keyring. Sostituisci file-with-data-to-encrypt e file-to-store-encrypted-data con i percorsi file locali per la lettura dei dati in testo non crittografato e il salvataggio dell'output criptato.
Per informazioni su tutti i flag e i possibili valori, esegui il comando con il flag --help
.
C#
Per eseguire questo codice, prima configura un ambiente di sviluppo C# e installa l'SDK C# di Cloud KMS.
Go
Per eseguire questo codice, prima configura un ambiente di sviluppo Go e installa l'SDK Cloud KMS Go.
Java
Per eseguire questo codice, prima configura un ambiente di sviluppo Java e installa l'SDK Java di Cloud KMS.
Node.js
Per eseguire questo codice, prima configura un ambiente di sviluppo Node.js e installa l'SDK Node.js di Cloud KMS.
PHP
Per eseguire questo codice, scopri innanzitutto come utilizzare PHP su Google Cloud e installare l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, prima configura un ambiente di sviluppo Python e installa l'SDK Python di Cloud KMS.
Ruby
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Ruby e poi installare l'SDK Ruby di Cloud KMS.
API
In questi esempi viene utilizzato curl come client HTTP per dimostrare l'utilizzo dell'API. Per maggiori informazioni sul controllo dell'accesso, consulta Accesso all'API Cloud KMS.
Quando utilizzi 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
, fornisci le informazioni appropriate sul progetto e sulla chiave e specifica il testo con codifica Base64 da criptare nel 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 esempio di payload con dati codificati in base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Decripta
gcloud
Per utilizzare Cloud KMS nella riga di comando, devi prima installare o eseguire 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 decrittografia. Sostituisci key-ring con il nome del keyring in cui si troverà la chiave. Sostituisci location con la località di Cloud KMS del keyring. Sostituisci file-path-with-encrypted-data e file-path-to-store-plaintext con i percorsi dei file locali per la lettura dei dati criptati e il salvataggio dell'output decriptato.
Per informazioni su tutti i flag e i possibili valori, esegui il comando con il flag --help
.
C#
Per eseguire questo codice, prima configura un ambiente di sviluppo C# e installa l'SDK C# di Cloud KMS.
Go
Per eseguire questo codice, prima configura un ambiente di sviluppo Go e installa l'SDK Cloud KMS Go.
Java
Per eseguire questo codice, prima configura un ambiente di sviluppo Java e installa l'SDK Java di Cloud KMS.
Node.js
Per eseguire questo codice, prima configura un ambiente di sviluppo Node.js e installa l'SDK Node.js di Cloud KMS.
PHP
Per eseguire questo codice, scopri innanzitutto come utilizzare PHP su Google Cloud e installare l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, prima configura un ambiente di sviluppo Python e installa l'SDK Python di Cloud KMS.
Ruby
Per eseguire questo codice, devi prima configurare un ambiente di sviluppo Ruby e poi installare l'SDK Ruby di Cloud KMS.
API
In questi esempi viene utilizzato curl come client HTTP per dimostrare l'utilizzo dell'API. Per maggiori informazioni sul controllo dell'accesso, consulta Accesso all'API Cloud KMS.
Il testo decriptato restituito nel codice JSON da Cloud KMS utilizza la codifica Base64.
Per decriptare i dati criptati, effettua una richiesta POST
, fornisci le informazioni appropriate sul progetto e sulla chiave e specifica il testo criptato (crittografia) da decriptare 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 esempio di payload con dati codificati in base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Passaggi successivi
- Scopri di più sulla crittografia simmetrica non elaborata.
- Scopri di più sulla crittografia busta.
- Prova Cripta e decripta i dati con il codelab di Cloud KMS.