1. Panoramica
Cloud KMS è un servizio di gestione delle chiavi ospitato nel cloud che consente di gestire le chiavi di crittografia per i servizi cloud esattamente come si gestisce la crittografia on-premise. Include il supporto per crittografia, decriptazione, firma e verifica utilizzando un'ampia gamma di tipi di chiavi e origini, tra cui Cloud HSM per le chiavi basate su hardware. Questo tutorial insegna come criptare e decriptare i dati utilizzando chiavi Cloud KMS simmetriche.
Imparerai
- Come abilitare l'API Cloud KMS
- Come creare un keyring di Cloud KMS
- Come creare una chiave di crittografia Cloud KMS per la crittografia/decrittografia simmetrica
- Come ruotare una chiave di crittografia simmetrica di Cloud KMS
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o G Suite, devi crearne uno.
Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome precedente è già stato utilizzato e non funzionerà correttamente). Verrà indicato più avanti in questo codelab come PROJECT_ID
.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
In questo codelab utilizzerai Cloud Shell, un ambiente virtualizzato senza costi in esecuzione su Google Cloud. Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Se non indicato diversamente, esegui tutti i comandi da questa shell.
3. Abilita servizio Cloud KMS
Prima di poter utilizzare Cloud KMS, devi abilitare il servizio nel tuo progetto. Questa operazione deve essere eseguita una sola volta per progetto. Per abilitare il servizio Cloud KMS, esegui questo comando:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
L'attivazione può richiedere fino a un minuto. Al termine, il comando segnalerà l'esito positivo.
4. Crea chiave KMS
Crea un keyring di Cloud KMS. In Cloud KMS, un keyring è una raccolta logica di chiavi di crittografia. Il keyring contiene metadati relativi alle chiavi, come la loro posizione. Crea un keyring denominato my-keyring
nella regione global
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Ora crea una chiave di crittografia denominata my-symmetric-key
con scopo encryption
all'interno del keyring che hai appena creato.
$ gcloud kms keys create "my-symmetric-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "encryption"
5. Cripta i dati
Crea un file con dati per criptare e utilizza lo strumento a riga di comando gcloud
per criptare i dati nel file:
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file ./data.txt \ --ciphertext-file ./data.txt.enc
I dati criptati (noti anche come "testo crittografato") vengono salvati su data.txt.enc
su disco. Se apri il file data.txt.enc
, noterai che contiene caratteri strani e non stampabili. Il motivo è che i dati risultanti sono in formato binario.
Quando memorizzi il testo crittografato in un database o lo trasmetti come parte di una richiesta HTTP, potrebbe essere necessario codificare i dati. Un meccanismo di codifica comune è Base64.
Cloud KMS non archivia nessuno del testo non crittografato da te fornito. Devi salvare questo testo crittografato in un luogo sicuro perché sarà necessario recuperare il valore del testo non crittografato.
6. Decripta i dati
Decripta il testo crittografato dal file utilizzando lo strumento a riga di comando gcloud
:
$ gcloud kms decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
Lo strumento a riga di comando gcloud
legge il testo crittografato dal file e lo decripta utilizzando Cloud KMS. Tieni presente che questo esempio specifica l'argomento --plaintext-file
come -
. Questa azione indica a gcloud
di stampare il risultato sul terminale.
La console stamperà my-contents
, che è lo stesso valore di testo non crittografato del file precedente.
7. Ruota le chiavi
In Cloud KMS, una chiave di crittografia è in realtà una raccolta di versioni della chiave di crittografia. Puoi creare nuove versioni della chiave di crittografia per eseguire la rotazione della chiave. Cloud KMS può anche ruotare automaticamente le chiavi in base a una pianificazione.
Per ruotare manualmente una chiave, crea una nuova versione della chiave di crittografia e impostala come versione primaria:
$ gcloud kms keys versions create \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --primary
Tutte le future richieste di crittografia dei dati utilizzeranno questa nuova chiave. Le chiavi meno recenti sono ancora disponibili per decriptare i dati criptati in precedenza mediante queste chiavi. Cloud KMS determina automaticamente la chiave di decrittografia appropriata in base al testo crittografato fornito: non è necessario specificare la versione della chiave di crittografia da utilizzare per la decrittografia.
Per impedire che i valori di testo crittografato che sono stati criptati utilizzando una versione della chiave di crittografia precedente vengano decriptati utilizzando Cloud KMS, puoi disabilitare o eliminare la versione della chiave di crittografia. La disattivazione è un'operazione reversibile, mentre l'eliminazione è definitiva. Per disabilitare una versione:
$ gcloud kms keys versions disable "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key"
8. Complimenti!
Hai abilitato l'API Cloud KMS, creato una chiave di crittografia simmetrica e criptato e decriptato i dati. Cloud KMS è un prodotto potente e la crittografia/decrittografia è solo una novità in prima persona.
Pulizia
Se hai terminato l'esplorazione, valuta la possibilità di eliminare il progetto.
- Vai alla console di Cloud Platform.
- Seleziona il progetto che vuoi chiudere e fai clic su "Elimina" in alto. In questo modo viene pianificata l'eliminazione del progetto.
Scopri di più
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.