Gestione delle chiavi Google (GCP KMS): Guida introduttiva

Proteggere i dati è una priorità assoluta per qualsiasi organizzazione, e la crittografia è uno dei modi più efficaci per proteggere i dati. Ma come esattamente? Google Cloud Platform (GCP) fornisce un servizio di gestione chiavi chiamato Google Key Management Service (KMS), che ti consente di creare e gestire rapidamente chiavi di crittografia.

In questo tutorial, imparerai come creare e utilizzare una chiave in GCP KMS. Passerai anche attraverso alcuni concetti importanti legati alla gestione delle chiavi, come chiavi, anelli delle chiavi e versioni delle chiavi.

Pronto? Continua a leggere e porta la sicurezza dei tuoi dati al livello successivo!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Per seguirla, assicurati di avere un account GCP con fatturazione attiva, ma una prova gratuita sarebbe sufficiente.

A Google Cloud Project is a collection of resources you create and manage in GCP. Note that you should create separate projects for each of your applications. Doing so lets you efficiently manage the resources for each application. In the end, you can delete all the resources associated with a project, which is helpful for clean-up.

Per creare un nuovo progetto Google Cloud:

1. Apri il tuo browser web preferito e accedi alla Console GCP. Come la console AWS, la console GCP è un’interfaccia basata su web per gestire le risorse nel Google Cloud.

2. Nella tua console GCP, vai alla pagina Gestisci risorse, dove puoi vedere e gestire tutti i tuoi progetti esistenti.

3. Successivamente, clicca sul pulsante CREA PROGETTO per creare un nuovo progetto.

Creating a new Google Cloud project

Infine, configura le seguenti impostazioni per il tuo nuovo progetto e clicca su CREA per creare il tuo progetto.

  • Nome del progetto – Inserisci un nome per il tuo progetto, che non deve essere unico e può essere modificato in seguito. La scelta del nome del progetto per questo tutorial è gcp-kms-demo.

  • Posizione – Seleziona l’organizzazione genitore o la cartella in cui desideri che questo progetto venga creato. Il tuo progetto appena creato sarà il genitore superiore. Ma puoi saltare questo campo se non hai un’organizzazione.

Il campo Posizione potrebbe non comparire se usi un account di prova.

Configuring a new Google Cloud project

Se avrai successo, vedrai elencato il tuo nuovo progetto Google Cloud appena creato, come mostrato di seguito.

Viewing the newly-created Google Cloud project

Abilitazione dell’API Cloud KMS per il progetto Google Cloud

Hai appena creato il tuo primo Se avrai successo, vedrai elencato il tuo nuovo progetto Google Cloud appena creato, come mostrato di seguito.progetto Cloud e di solito non puoi lasciarlo non protetto. Non preoccuparti! L’API Cloud KMS è un insieme di API di crittografia fornite da Google che puoi utilizzare per proteggere i tuoi dati.

Per utilizzare l’API Cloud KMS, devi abilitarla per il tuo progetto:

1. Vai alla pagina del selettore del progetto Google e seleziona il tuo progetto Google Cloud (gcp-kms-demo).

Selecting a project

2. Successivamente, vai alla pagina Abilita accesso all’API e clicca AVANTI per confermare l’abilitazione dell’API per il progetto selezionato.

Confirming the selected Google Cloud project

3. Ora, clicca ABILITA per abilitare l’API Cloud KMS.

Enabling the Cloud KMS API

A questo punto, l’API Cloud KMS è abilitata per il tuo progetto. Ora puoi iniziare a utilizzare l’API Cloud KSM per creare e gestire le chiavi di crittografia.

Verifying the Cloud KMS API is enabled

Avviare la Cloud Shell per creare chiavi e keyring

L’abilitazione dell’API Cloud KMS ti prepara per creare chiavi e keyring per crittografare e decrittografare i tuoi dati. Le chiavi e i keyring sono concetti fondamentali in Cloud KMS.

Key A key is an encryption key stored in a keyring that you can use to encrypt and decrypt your data. Each key has a name, and the name must be unique within the keyring. You can use IAM ( Identity and Access Management) policies to control who has access to keys.
Keyring A keyring is a container in Cloud KMS that holds a set of keys. You can think of the keyring as a folder on your computer that contains many files. But in essence, a keyring holds a set of keys in a specific Cloud KMS location.

Ma prima di creare chiavi e keyring, devi avviare la Cloud Shell. La Cloud Shell è una shell gratuita e interattiva che puoi utilizzare per eseguire comandi sulla piattaforma Google Cloud senza installare alcun strumento sul tuo computer.

1. Nella console GCP, fai clic sul pulsante Attiva Cloud Shell (in alto a destra), come mostrato di seguito, per avviare la Cloud Shell.

Starting the Cloud Shell

A Cloud Shell session initializes, as shown below (at the bottom of the page), where you can run commands.

Viewing the Cloud Shell prompt

2. Successivamente, esegui il seguente comando gcloud nel Cloud Shell per creare un nuovo keyring chiamato kms-demo-keyring nella posizione globale.

gcloud kms keyrings create "kms-demo-keyring" \
--location "global"

–location “global”

Quando richiesto, fai clic su AUTORIZZA per continuare l’esecuzione del comando.

Authorizing access to the KSM API

Questo prompt compare la prima volta che esegui il comando gcloud nella Cloud Shell, chiedendoti di autorizzare lo strumento gcloud ad accedere all’API KSM.

Creating a new keyring

Come mostrato di seguito, non ci sono messaggi di output quando il portachiavi viene creato con successo.

Correlato:Utilizza le chiavi di crittografia come un professionista con AWS Key Management

gcloud kms keys create "kms-demo-key01" \
  --location "global" \
  --keyring "kms-demo-keyring" \
  --purpose "encryption"

Nota che la posizione (global) deve essere la stessa impostata per il portachiavi.

–location “global” \

–keyring “kms-demo-keyring” \

Creating a key for encryption

–purpose “encryption”

gcloud kms keys list --location "global" --keyring "kms-demo-keyring"

Ogni volta che crei o ruoti una chiave, Cloud KMS ne crea una nuova versione. Questa funzionalità ti permette di tornare facilmente a una versione precedente se necessario.

PURPOSE ENCRYPT_DECRYPT Indicates the purpose of the key (encryption and decryption).
ALGORITHM GOOGLE_SYMMETRIC_ENCRYPTION Indicates the key uses Google Symmetric Encryption, the default algorithm for Cloud KMS keys.
PROTECTION_LEVEL SOFTWARE Indicates the key is software-protected.
LABELS You can add labels to keys to categorize them or to add additional information.
PRIMARY ID 1 Indicates the key is the primary key for the keyring, which is what Cloud KMS uses by default when you do not specify a key.

Note that you can have only one primary key per keyring.

PRIMARY STATE ENABLED Shows the current status of the key. The ENABLED state indicates the key can be used for its specified purpose.
Listing the keys in a keyring

Come per la creazione di un portachiavi, non ci sono messaggi di output quando la chiave viene creata con successo.

Ma a questo punto, hai un portachiavi e una chiave che puoi usare per criptare e decriptare i tuoi dati.

4. Ora, esegui il comando seguente per elencare le chiavi in un –keyring (kms-demo-keyring).

Riceverai un output simile allo screenshot sottostante con le seguenti informazioni:

echo "This is some sensitive data that I want to encrypt." > gcp-kms-demo.txt

Crittografia e Decrittografia Dati con GCP KMS

La crittografia è una linea di difesa cruciale per scoraggiare l'accesso di parti malintenzionate a dati sensibili. E ora che hai una chiave di crittografia, puoi usarla per crittografare i tuoi dati.
ls cat gcp-kms-demo.txt
Per crittografare i dati con GCP KMS:
cat gcp-kms-demo.txt
Listing the text file and verifying the data

1. Esegui il comando sottostante, che non fornisce output, ma crea un file di testo (gcp-kms-demo.txt) con alcuni testi da crittografare.

2. Successivamente, esegui ciascun comando sottostante per elencare (ls) il file di testo (gcp-kms-demo.txt) e visualizzare (cat) il suo contenuto per verificare i dati.

gcloud kms encrypt \
    --location "global" \
    --keyring "kms-demo-keyring" \
    --key "kms-demo-key01" \
    --plaintext-file ./gcp-kms-demo.txt \
    --ciphertext-file ./gcp-kms-demo.txt.encrypted
Encrypting data

# Elenca il file di testo

cat gcp-kms-demo.txt.encrypted

# Visualizza il contenuto del file di testo

3. Una volta verificato, esegui il comando sottostante per crittografare i dati nel tuo file (gcp-kms-demo.txt) usando la tua chiave (kms-demo-key01). I dati crittografati saranno quindi memorizzati in un nuovo file chiamato gcp-kms-demo.txt.encrypted.

Verifying the file data is encrypted

–location “globale” \

–keyring “kms-demo-keyring” \

gcloud kms decrypt \
  --location "global" \
  --keyring "kms-demo-keyring" \
  --key "kms-demo-key01" \
  --ciphertext-file ./gcp-kms-demo.txt.encrypted \
  --plaintext-file ./gcp-kms-demo.txt.decrypted
Decrypting encrypted data

–key “kms-demo-key01” \

cat gcp-kms-demo.txt.decrypted

–plaintext-file ./gcp-kms-demo.txt \

Verifying the encrypted file has been decrypted

–ciphertext-file ./gcp-kms-demo.txt.encrypted

4. Ora esegui il seguente comando per provare a visualizzare i dati del file criptato (gcp-kms-demo.txt.encrypted).

Vedrai simboli rotti, strani e illeggibili, come mostrato di seguito. Questo output indica che il file è stato criptato con successo.

gcloud kms keys versions list \
  --location "global" \
  --keyring "kms-demo-keyring" \
  --key "kms-demo-key01"

È necessario conservare questo file criptato in una posizione sicura. Ad esempio, è possibile conservare copie multiple in AWS S3, GCP Cloud Storage o Azure Blob Storage. Google Cloud non salva la versione in chiaro dei tuoi dati. Pertanto, se perdi il file criptato, è impossibile decifrarlo per ripristinare i dati originali.

Listing all the key versions

Correlato:Come caricare un file su S3 con AWS CLI

5. Una volta criptati, esegui il comando seguente per decifrare i tuoi dati (gcp-kms-demo.txt.encrypted) utilizzando la stessa chiave (kms-demo-key01). Ma questa volta, i dati decifrati vengono salvati in un nuovo file chiamato gcp-kms-demo.txt.decrypted.

gcloud kms keys versions destroy 1\
  --location "global" \
  --keyring "kms-demo-keyring" \
  --key "kms-demo-key01"

Come per la criptazione, questo comando non fornisce output, ma verificherai la decifratura nel passaggio successivo.

gcloud kms keys versions list

–location “global” \

–keyring “kms-demo-keyring” \

Verifying the key has been scheduled for destruction

–key “kms-demo-key01” \

Deleting the Google Cloud project

–ciphertext-file ./gcp-kms-demo.txt.encrypted \

–plaintext-file ./gcp-kms-demo.txt.decrypted

Confirming Google Cloud project deletion

6. Infine, esegui il seguente comando per visualizzare (cat) il file decriptato (gcp-kms-demo.txt.decrypted) e verificare che i dati siano stati decriptati con successo.

Di seguito, puoi vedere i dati originali che hai salvato sul file di testo. Congratulazioni! Hai cifrato e decifrato con successo i dati utilizzando Google Cloud KMS.

Pulizia delle risorse di Google Cloud

Source:
https://adamtheautomator.com/gcp-kms/