Questo argomento mostra come ricriptare i dati utilizzando una chiave simmetrica di Cloud Key Management Service. Puoi adattare questi esempi per le chiavi asimmetriche. Se sospetti un utilizzo non autorizzato di una chiave, devi criptare nuovamente i dati protetti da quella chiave e quindi disabilitare o pianificare l'eliminazione della versione precedente della chiave.
Prima di iniziare
Questo scenario richiede le seguenti condizioni.
Hai già criptato i dati con Cloud KMS.
La versione della chiave utilizzata per la crittografia non è disabilitata, pianificata per l'eliminazione o eliminata. che puoi usare per decriptare i dati criptati.
Hai già rotte delle chiavi. Una rotazione della chiave crea una nuova versione della chiave primaria. Per ricriptare i dati, utilizzerai la nuova versione della chiave primaria.
Ricrittografia dei dati con chiavi asimmetriche
Gli esempi in questo argomento mostrano come criptare nuovamente i dati utilizzando una chiave simmetrica. Quando utilizzi una chiave simmetrica, Cloud KMS deduce automaticamente la versione della chiave da utilizzare per la decrittografia. Quando utilizzi una chiave asimmetrica, devi specificare la versione della chiave.
- Quando segui le istruzioni per l'utilizzo di Google Cloud CLI, includi sempre il flag
--version
. - Quando segui le istruzioni per l'utilizzo dell'API, utilizza
CryptoKeyVersions
anzichéCryptoKeys
. Scopri di più su come criptare e decriptare i dati con una chiave asimmetrica.
Il flusso di lavoro per la ricrittografia dei dati con chiavi asimmetriche è simile a quello descritto in questo argomento.
Flusso di lavoro della ricrittografia dei dati
Segui questi passaggi per ricriptare i dati e disattivare o pianificare l'eliminazione della versione della chiave utilizzata per la crittografia originale.
Decriptare i dati utilizzando la versione della chiave precedente
Criptare nuovamente i dati utilizzando la nuova versione della chiave primaria
Disabilita o pianifica l'eliminazione della versione precedente della chiave
Decriptare i dati utilizzando la versione della chiave precedente
Cloud KMS utilizza automaticamente la versione della chiave corretta per decriptare i dati, purché la versione della chiave non sia disabilitata, pianificata per l'eliminazione o eliminata. I seguenti esempi mostrano come decriptare i dati. Si tratta dello stesso codice di decriptazione utilizzato in Crittografia e decriptazione.
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...", }
Ricripta i dati utilizzando la nuova versione della chiave primaria
Cloud KMS utilizza automaticamente la nuova versione della chiave primaria per criptare i dati. Gli esempi riportati di seguito mostrano come criptare i dati. Si tratta dello stesso codice di crittografia utilizzato in Crittografia e decriptazione.
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=", }
Disabilita o pianifica l'eliminazione della versione precedente della chiave
Se hai ruotato la chiave in risposta a un incidente sospetto, dopo aver ricriptato i dati, disabilita o pianifica l'eliminazione della versione precedente della chiave.
Disabilita una versione della chiave abilitata
È possibile disabilitare solo una versione della chiave abilitata. Per eseguire questa operazione, utilizza
il metodo UpdateCryptoKeyVersion
.
Console
Vai alla pagina Gestione delle chiavi nella console Google Cloud.
Fai clic sul nome del keyring che contiene la chiave di cui disabiliterai la versione.
Fai clic sulla chiave di cui vuoi disabilitare la versione.
Seleziona la casella accanto alle versioni della chiave da disabilitare.
Fai clic su Disattiva nell'intestazione.
Nella finestra di conferma visualizzata, fai clic su Disattiva.
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 keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Sostituisci key-version con la versione della chiave da disabilitare. Sostituisci key con il nome della chiave. Sostituisci key-ring con il nome del keyring in cui si trova la chiave. Sostituisci location con la località Cloud KMS del keyring.
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.
Pianifica l'eliminazione di una versione della chiave
Solo le versioni della chiave abilitate o disabilitate possono essere pianificate per l'eliminazione. Per eseguire questa operazione, utilizza il metodo DestroyCryptoKeyVersion
.
Console
Nella console Google Cloud, vai alla pagina Gestione delle chiavi.
Seleziona la casella accanto alla versione della chiave per cui vuoi pianificare l'eliminazione.
Fai clic su Elimina nell'intestazione.
Nella richiesta di conferma, inserisci il nome della chiave e fai clic su Pianifica distruzione.
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 keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Sostituisci quanto segue:
KEY_VERSION
: il numero di versione della versione della chiave che vuoi eliminare.KEY_NAME
: il nome della chiave per cui vuoi eliminare una versione della chiave.KEY_RING
: il nome del keyring che contiene la chiave.LOCATION
: la località Cloud KMS del keyring.
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.
Elimina una versione della chiave chiamando il metodo CryptoKeyVersions.destroy.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \ --request "POST" \ --header "authorization: Bearer TOKEN"