Questa pagina mostra come utilizzare Cloud Key Management Service (Cloud KMS) per eseguire le seguenti operazioni sulle chiavi simmetriche:
- Cripta contenuti di testo o binari (testo non criptato) utilizzando una chiave Cloud KMS.
- Decripta il testo cifrato criptato con una chiave Cloud KMS.
Se vuoi utilizzare una chiave asimmetrica per la crittografia, consulta Crittografia e decriptazione dei dati con una chiave asimmetrica. Per scoprire di più sulla crittografia simmetrica non elaborata, consulta la sezione Crittografia simmetrica non elaborata.
Prima di iniziare
Assicurati che l'utente che chiama i metodi di crittografia e decrittografia disponga delle autorizzazioni
cloudkms.cryptoKeyVersions.useToEncrypt
ecloudkms.cryptoKeyVersions.useToDecrypt
per la chiave.Un modo per consentire a un utente di eseguire la crittografia o la decrittografia è aggiungerlo ai ruoli IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
oroles/cloudkms.cryptoKeyEncrypterDecrypter
per quella chiave. Il ruoloroles/cloudkms.admin
non fornisce queste due autorizzazioni. Per ulteriori informazioni, consulta Autorizzazioni e ruoli.
Cripta
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_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Sostituisci quanto segue:
KEY_NAME
: il nome della chiave che vuoi utilizzare per la crittografia.KEY_RING
: il nome del mazzo di chiavi che contiene la chiave.LOCATION
: la posizione Cloud KMS che contiene il portachiavi.FILE_TO_ENCRYPT
: il percorso del file da criptare.ENCRYPTED_OUTPUT
: il percorso in cui vuoi salvare l'output criptato.
Per informazioni su tutti i flag e i possibili valori, esegui il comando con il flag --help
.
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 innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go Cloud KMS.
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, devi innanzitutto scoprire come utilizzare PHP su Google Cloud e installare l'SDK PHP Cloud KMS.
Python
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Python e installare l'SDK Python Cloud KMS.
Ruby
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Ruby e installare l'SDK Ruby Cloud KMS.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per ulteriori informazioni sul controllo dell'accesso, consulta Accedere 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 le informazioni chiave e sul progetto appropriate 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/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il portachiavi e la chiave che vuoi utilizzare per la crittografia.LOCATION
: la posizione Cloud KMS che contiene il portachiavi.KEY_RING
: il mazzo di chiavi che contiene la chiave che vuoi utilizzare per la crittografia.KEY_NAME
: il nome della chiave che vuoi utilizzare per la crittografia.PLAINTEXT_TO_ENCRYPT
: i dati in testo non cifrato che vuoi cifrare. Il testo non cifrato deve essere codificato in base64 prima di chiamare il metodoencrypt
.
Ecco un esempio di payload con dati codificati in base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Decripta
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 decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Sostituisci quanto segue:
KEY_NAME
: il nome della chiave che vuoi utilizzare per la decrittografia.KEY_RING
: il nome del mazzo di chiavi che contiene la chiave.LOCATION
: la posizione Cloud KMS che contiene il portachiavi.FILE_TO_DECRYPT
: il percorso del file da decriptare.DECRYPTED_OUTPUT
: il percorso in cui vuoi salvare l'output decriptato.
Per informazioni su tutti i flag e i possibili valori, esegui il comando con il flag --help
.
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 innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go Cloud KMS.
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, devi innanzitutto scoprire come utilizzare PHP su Google Cloud e installare l'SDK PHP Cloud KMS.
Python
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Python e installare l'SDK Python Cloud KMS.
Ruby
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Ruby e installare l'SDK Ruby Cloud KMS.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per ulteriori informazioni sul controllo dell'accesso, consulta Accedere all'API Cloud KMS.
Il testo decriptato restituito nel JSON da Cloud KMS è codificato in 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 (noto anche come codice cifrato) da decriptare nel campo ciphertext
del corpo della richiesta.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il portachiavi e la chiave che vuoi utilizzare per la decrittografia.LOCATION
: la posizione Cloud KMS che contiene il portachiavi.KEY_RING
: il mazzo di chiavi che contiene la chiave che vuoi utilizzare per la decrittografia.KEY_NAME
: il nome della chiave che vuoi utilizzare per la decrittografia.ENCRYPTED_DATA
: i dati criptati che vuoi decriptare.
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 dell'involucro.
- Prova il codelab criptare e decriptare i dati con Cloud KMS.