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 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. Utilizzi questa versione della chiave per decriptare i dati criptati.
Hai già eseguito la rotazione delle chiavi. Una rotazione della chiave crea una nuova versione della chiave primaria. Utilizzi la nuova versione della chiave primaria per ricriptare i dati.
Ricrittografia dei dati utilizzando chiavi asimmetriche
Gli esempi in questo argomento mostrano come ricriptare i dati utilizzando una chiave simmetrica. Quando utilizzi una chiave simmetrica, Cloud KMS deduce automaticamente la versione della chiave da utilizzare per la decriptazione. 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
. Puoi scoprire di più sulla crittografia e decriptazione dei 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 di ricrittografia dei dati
Per criptare nuovamente i dati e disabilitare o pianificare l'eliminazione della versione della chiave utilizzata per la crittografia originale, segui questi passaggi.
Decriptare i dati utilizzando la versione precedente della chiave
Cripta nuovamente i dati utilizzando la nuova versione della chiave primaria
Disabilitare o pianificare l'eliminazione della versione precedente della chiave
Decripta 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 dalla riga di comando, devi prima installare o eseguire l'upgrade all'ultima versione 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 decriptazione.KEY_RING
: il nome delle chiavi automatizzate che contengono la chiave.LOCATION
: la posizione di Cloud KMS che contiene l'anello di chiavi.FILE_TO_DECRYPT
: il percorso del file che vuoi decriptare.DECRYPTED_OUTPUT
: il percorso in cui vuoi salvare l'output decriptato.
Per informazioni su tutti i flag e i valori possibili, 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 di 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, scopri innanzitutto come utilizzare PHP su Trusted Cloud e installa l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Python e installare l'SDK Python di Cloud KMS.
Ruby
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Ruby e installare l'SDK Ruby di Cloud KMS.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per saperne di più sul controllo dell'accesso, consulta Accesso 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 specifica il progetto e le informazioni sulla chiave appropriati, nonché il testo criptato (noto anche come testo 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 decriptazione.LOCATION
: la posizione di Cloud KMS che contiene l'anello di chiavi.KEY_RING
: le chiavi automatizzate che contengono la chiave che vuoi utilizzare per la decrittografia.KEY_NAME
: il nome della chiave che vuoi utilizzare per la decriptazione.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 della chiave primaria per criptare i dati. I seguenti esempi mostrano come criptare i dati. Si tratta dello stesso codice di crittografia utilizzato in Crittografia e decrittografia.
gcloud
Per utilizzare Cloud KMS dalla riga di comando, devi prima installare o eseguire l'upgrade all'ultima versione 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 delle chiavi automatizzate che contengono la chiave.LOCATION
: la posizione di Cloud KMS che contiene l'anello di chiavi.FILE_TO_ENCRYPT
: il percorso del file che vuoi criptare.ENCRYPTED_OUTPUT
: il percorso in cui vuoi salvare l'output criptato.
Per informazioni su tutti i flag e i valori possibili, 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 di 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, scopri innanzitutto come utilizzare PHP su Trusted Cloud e installa l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Python e installare l'SDK Python di Cloud KMS.
Ruby
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Ruby e installare l'SDK Ruby di Cloud KMS.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per saperne di più sul controllo dell'accesso, consulta 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 specifica il progetto e le informazioni sulla chiave appropriati, nonché 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 di Cloud KMS che contiene l'anello di chiavi.KEY_RING
: le chiavi automatizzate che contengono 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 non criptati che vuoi criptare. Il testo normale deve essere codificato in base64 prima di chiamare il metodoencrypt
.
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, disattiva o pianifica l'eliminazione della versione precedente della chiave.
Disabilitare una versione della chiave abilitata
Puoi disattivare solo una versione della chiave che è stata attivata. utilizzando il metodo UpdateCryptoKeyVersion
.
Console
Vai alla pagina Key Management nella console Trusted Cloud .
Fai clic sul nome del keyring che contiene la chiave di cui disattiverai la versione.
Fai clic sulla chiave di cui vuoi disattivare la versione.
Seleziona la casella accanto alle versioni della chiave da disattivare.
Nell'intestazione, fai clic su Disattiva.
Nel prompt di conferma, fai clic su Disattiva.
gcloud
Per utilizzare Cloud KMS dalla riga di comando, devi prima installare o eseguire l'upgrade all'ultima versione 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 keyring in cui si trova la chiave. Sostituisci location con la posizione di Cloud KMS per le chiavi automatizzate.
Per informazioni su tutti i flag e i valori possibili, 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 di 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, scopri innanzitutto come utilizzare PHP su Trusted Cloud e installa l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Python e installare l'SDK Python di Cloud KMS.
Ruby
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Ruby e installare l'SDK Ruby di Cloud KMS.
Pianificare l'eliminazione di una versione della chiave
Solo le versioni della chiave che sono attive o disattive possono essere pianificate per l'eliminazione. Questa operazione viene eseguita con il metodo DestroyCryptoKeyVersion
.
Console
Nella console Trusted Cloud , vai alla pagina Key Management.
Seleziona la casella accanto alla versione della chiave che vuoi programmare per la distruzione.
Fai clic su Elimina nell'intestazione.
Nel prompt di conferma, inserisci il nome della chiave e fai clic su Pianifica eliminazione.
gcloud
Per utilizzare Cloud KMS dalla riga di comando, devi prima installare o eseguire l'upgrade all'ultima versione 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 delle chiavi automatizzate che contengono la chiave.LOCATION
: la posizione di Cloud KMS delle chiavi automatizzate.
Per informazioni su tutti i flag e i valori possibili, 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 di 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, scopri innanzitutto come utilizzare PHP su Trusted Cloud e installa l'SDK PHP di Cloud KMS.
Python
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Python e installare l'SDK Python di Cloud KMS.
Ruby
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Ruby e installare l'SDK Ruby di Cloud KMS.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per saperne di più sul controllo dell'accesso, consulta Accesso all'API Cloud KMS.
Distruggi 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"