Questo argomento illustra come eseguire le seguenti operazioni con le chiavi simmetriche:
- Cripta testo o contenuti binari (testo non crittografato) utilizzando una chiave Cloud Key Management Service.
- Decripta il testo cifrato criptato con una chiave Cloud KMS.
Se invece vuoi utilizzare una chiave asimmetrica per la crittografia, consulta Crittografia e decriptare i dati con una chiave asimmetrica. Per saperne di più sulla crittografia simmetrica non elaborata, consulta l'articolo Crittografia simmetrica non elaborata.
Prima di iniziare
Crea un keyring e una chiave come descritto in Creazione di keyring e chiavi.
Assicurati che l'utente che chiama i metodi di crittografia e decriptazione abbia
cloudkms.cryptoKeyVersions.useToEncrypt
e Autorizzazionicloudkms.cryptoKeyVersions.useToDecrypt
per la chiave utilizzata crittografare o decriptare.Un modo per consentire a un utente di criptare o decriptare l'utente consiste nell'aggiungerlo al
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
oroles/cloudkms.cryptoKeyEncrypterDecrypter
ruoli IAM per chiave. Tieni presente che il ruoloroles/cloudkms.admin
non che forniscono queste due autorizzazioni. Per ulteriori informazioni, consulta Autorizzazioni e ruoli.
Cripta
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 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, 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, 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
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.
Quando utilizzi JSON e l'API REST, i contenuti devono essere codificati in base64 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 esempio di payload con dati codificati in base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Decripta
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, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Cloud KMS.
Node.js
Per eseguire questo codice, devi innanzitutto 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 le informazioni appropriate sul progetto e sulle chiavi e specifica il testo criptato (cifrato) 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 payload di esempio con dati codificati in base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Passaggi successivi
- Scopri di più sulla crittografia simmetrica non elaborata.
- Scopri di più sulla crittografia dell'involucro.
- Prova il corso Cripta e decripta i dati con il codelab di Cloud KMS.