Questo argomento mostra come criptare di nuovo i dati utilizzando una chiave simmetrica di Cloud Key Management Service. Puoi adattare questi esempi per le chiavi asimmetriche. Se sospetti l'utilizzo non autorizzato di una chiave, devi criptare nuovamente i dati protetti da quella chiave e poi disattivare o pianificare l'eliminazione della versione precedente della chiave.
Prima di iniziare
Questo scenario richiede le seguenti condizioni.
Hai già criptato i dati utilizzando Cloud KMS.
La versione della chiave utilizzata per la crittografia non è disabilitata, pianificata per l'eliminazione o eliminata. Utilizza questa versione della chiave per decriptare i dati criptati.
Hai già rotazione delle chiavi. Una rotazione delle chiavi crea una nuova versione della chiave primaria. Utilizza la nuova versione della chiave primaria per criptare nuovamente i dati.
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
instead ofCryptoKeys
. Scopri di più sulla crittografia e decriptazione dei dati con una chiave asimmetrica.
Il flusso di lavoro per la crittografia dei dati con chiavi asimmetriche è simile a quello descritto in questo argomento.
Flusso di lavoro di nuova crittografia dei dati
Segui questi passaggi per criptare nuovamente i dati e disattivare o pianificare l'eliminazione della versione della chiave utilizzata per la crittografia originale.
Decriptare i dati utilizzando la versione precedente della chiave
Cripta nuovamente i dati utilizzando la nuova versione della chiave primaria
Disattivare o pianificare l'eliminazione della versione della chiave precedente
Decriptare i dati utilizzando la versione precedente della chiave
Cloud KMS utilizza automaticamente la versione della chiave corretta per decriptare i dati, a condizione che la versione della chiave non sia disabilitata, pianificata per l'eliminazione o eliminata. Gli esempi riportati di seguito mostrano come decriptare i dati. Si tratta dello stesso codice di decrittografia utilizzato in Crittografia e decrittografia.
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 della chiave automatizzata 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 contenente 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...", }
Cripta nuovamente i dati utilizzando la nuova versione della chiave primaria
Cloud KMS utilizza automaticamente la nuova versione 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 decrittografia.
gcloud
Per utilizzare Cloud KMS sulla riga di comando, innanzitutto 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 della chiave automatizzata che contiene la chiave.LOCATION
: la posizione Cloud KMS contenente 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 contenente 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=", }
Disattiva o pianifica l'eliminazione della versione della chiave precedente
Se hai ruotato la chiave in risposta a un presunto incidente, dopo aver nuovamente criptato i dati, disattiva o pianifica l'eliminazione della versione della chiave precedente.
Disattivare una versione della chiave abilitata
Solo una versione della chiave impostata su Abilitata può essere impostata su Disattivata. utilizzando 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 vuoi disattivare la versione.
Fai clic sulla chiave di cui vuoi disattivare la versione.
Seleziona la casella accanto alle versioni della chiave che vuoi disattivare.
Nell'intestazione, fai clic su Disattiva.
Nella richiesta di conferma, fai clic su Disattiva.
gcloud
Per utilizzare Cloud KMS sulla riga di comando, innanzitutto esegui l'installazione o 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 disattivare. Sostituisci key con il nome della chiave. Sostituisci key-ring con il nome del mazzo di chiavi in cui si trova la chiave. Sostituisci location con la posizione di Cloud KMS per la raccolta di chiavi.
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.
Pianificare l'eliminazione di una versione della chiave
Solo le versioni della chiave che sono Abilitate o Disattivate possono essere pianificate per l'eliminazione. Questo viene eseguito con il metodo
DestroyCryptoKeyVersion
.
Console
Nella console Google Cloud, vai alla pagina Gestione delle chiavi.
Seleziona la casella accanto alla versione della chiave per la quale vuoi pianificare la distruzione.
Nell'intestazione, fai clic su Elimina.
Nella richiesta di conferma, inserisci il nome della chiave e fai clic su Pianifica eliminazione.
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 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 distruggere.KEY_NAME
: il nome della chiave per la quale vuoi distruggere una versione.KEY_RING
: il nome della chiave automatizzata che contiene la chiave.LOCATION
: la posizione di Cloud KMS della raccolta di chiavi.
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.
Distruggi una versione di 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"