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 la crittografia, la decriptazione, la firma e la verifica utilizzando una serie di tipi e origini di chiavi, tra cui Cloud HSM per le chiavi supportate dall'hardware. Questo tutorial mostra come criptare e decriptare i dati utilizzando le chiavi simmetriche Cloud KMS.
Cosa imparerai
- Come abilitare l'API Cloud KMS
- Come creare un keyring Cloud KMS
- Come creare una chiave di crittografia Cloud KMS per la crittografia/decrittografia simmetrica
- Come ruotare una chiave di crittografia simmetrica Cloud KMS
2. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o G Suite, devi crearne uno.
Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Assicurati di seguire le istruzioni riportate nella sezione "Pulizia", che ti consiglia come arrestare le risorse in modo da non incorrere in addebiti oltre questo tutorial. I nuovi utenti di Google Cloud possono beneficiare del 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. Nella console GCP, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:
Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Se non diversamente indicato, esegui tutti i comandi da questa shell.
3. Attiva il 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 una raccolta di chiavi Cloud KMS. In Cloud KMS, un keyring è una raccolta logica di chiavi di crittografia. Il keyring contiene metadati sulle chiavi, ad esempio la loro posizione. Crea un keyring denominato my-keyring nella regione global:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
Ora crea una chiave crittografica denominata my-symmetric-key con lo scopo encryption all'interno della chiave automatizzata che hai appena creato.
$ gcloud kms keys create "my-symmetric-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "encryption"
5. Cripta dati
Crea un file con i dati da 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 cifrato") vengono salvati in data.txt.enc sul disco. Se apri il file data.txt.enc, noterai che contiene caratteri strani e non stampabili. Questo perché i dati risultanti sono in formato binario.
Quando memorizzi il testo criptato in un database o lo trasmetti nell'ambito di una richiesta HTTP, potrebbe essere necessario codificare i dati. Un meccanismo di codifica comune è Base64.
Cloud KMS non memorizza il testo non crittografato che fornisci. Devi salvare questo testo crittografato in una posizione sicura, in quanto sarà necessario per recuperare il valore in testo normale.
6. Decripta dati
Decrittografa il testo cifrato 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 criptato dal file e lo decripta utilizzando Cloud KMS. Nota che questo esempio specifica l'argomento --plaintext-file come -. In questo modo gcloud stampa il risultato nel terminale.
La console stamperà my-contents, che è lo stesso valore di testo normale 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 una chiave manualmente, crea una nuova versione della chiave di crittografia e impostala come versione principale:
$ gcloud kms keys versions create \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--primary
Tutte le richieste future di criptare i dati utilizzeranno questa nuova chiave. Le chiavi precedenti sono ancora disponibili per decriptare i dati criptati in precedenza con queste chiavi. Cloud KMS determina automaticamente la chiave di decrittografia appropriata in base al testo criptato fornito. Non devi specificare quale versione della chiave di crittografia utilizzare per la decrittografia.
Per impedire la decriptazione dei valori di testo cifrato criptati utilizzando una versione precedente della chiave di crittografia con Cloud KMS, puoi disabilitare o eliminare la versione della chiave di crittografia. La disattivazione è un'operazione reversibile, mentre l'eliminazione è permanente. Per disattivare 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 la punta dell'iceberg delle sue funzionalità.
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, quindi fai clic su "Elimina" in alto. In questo modo, l'eliminazione del progetto viene pianificata.
Scopri di più
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.