Inizia a utilizzare Cloud KMS

Cloud KMS è un servizio di gestione dei token 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 tramite diversi tipi di chiavi e origini, tra cui Cloud HSM per le chiavi basate su hardware.

In questo tutorial imparerai a utilizzare le funzionalità avanzate delle API Cloud Security and Privacy, tra cui:

  • Configurazione di un bucket Cloud Storage sicuro
  • Gestione di chiavi e dati criptati con Cloud KMS
  • Visualizzazione degli audit log di Cloud Storage

Prendi i dati abbreviati in Enron Corpus, cripti i dati e li carichi su Cloud Storage.

Argomenti

  • Come criptare i dati e gestire le chiavi di crittografia utilizzando Key Management Service (KMS)

L'utente sfrutterà le

  • Cloud KMS
  • Cloud Storage
  • Cloud SDK

Configurazione automatica dell'ambiente

Se non hai ancora un Account Google (Gmail o Google Apps), devi crearne uno. Accedi alla console di Google Cloud Platform (console.cloud.google.com) e crea un nuovo progetto.

Screenshot dal 10/02/2016 alle 00:45:26.png

Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome sopra riportato è già stato utilizzato e non funzionerà per te). Vi verrà fatto riferimento più avanti in questo codelab come PROJECT_ID.

Il prossimo passaggio consiste nell'attivare la fatturazione in Cloud Console per utilizzare le risorse di Google Cloud.

L'esecuzione di questo codelab non dovrebbe costare più di qualche euro, ma potrebbe essere di più se decidi di utilizzare più risorse o se le lasci in esecuzione (vedi la sezione "pulizia" alla fine di questo documento).

I nuovi utenti di Google Cloud Platform sono idonei per una 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 di 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, questo è ciò che dovresti vedere:

Questa macchina virtuale è dotata di tutti gli strumenti di sviluppo di cui hai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Salvo diversa indicazione, esegui tutti i comandi da questa shell.

Per archiviare i dati di questo tutorial, crea un bucket Cloud Storage. Poiché i nomi dei bucket Cloud Storage devono essere univoci a livello globale, anteponi il nome del bucket all'ID progetto:

$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails

Poi crea il bucket:

$ gsutil mb gs://${BUCKET_NAME}

Enron Corpus è un vasto database di oltre 600.000 email generate da 158 dipendenti di Enron Corporation. Questi dati sono stati copiati nel bucket Cloud Storage denominato gs://enron_emails/.

Scarica uno dei file email localmente:

$ gsutil cp gs://enron_emails/allen-p/inbox/1. . # <-- don't forget the dot!

Esamina il file scaricato per verificare che sia in realtà un'email:

$ tail 1.

L'email conterrà un messaggio simile al seguente:

Attached is the Delta position for 1/18...
# ...

Oltre alle email, il bucket contiene anche immagini. Questo tutorial utilizza sia le email in testo normale sia le immagini.

Per utilizzare Cloud KMS, devi prima abilitare il servizio nel tuo progetto. Questa operazione deve essere eseguita una sola volta per progetto. Per abilitare il servizio Cloud KMS, esegui il comando seguente:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

L'attivazione potrebbe richiedere fino a un minuto. Il comando segnalerà l'esito positivo al termine.

Crea un keyring Cloud KMS. In Cloud KMS, un keyring è una raccolta logica di chiavi di crittografia. Il keyring contiene metadati relativi alle chiavi, ad esempio la loro posizione. Crea un keyring denominato my-keyring nell'area geografica global:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Ora crea una chiave di crittografia denominata enron-emails con lo scopo encryption nel keyring appena creato.

$ gcloud kms keys create "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

Apri l'UI web delle chiavi di crittografia e visualizza le risorse appena create. È disponibile in IAM e amministrazione nel menu principale.

Puoi visualizzare e gestire keyring e chiavi di crittografia in Cloud Console.

Cripta i contenuti dell'email scaricata in precedenza utilizzando Cloud KMS. Questo tutorial utilizza lo strumento a riga di comando gcloud, ma puoi anche criptare i dati utilizzando l'API Cloud KMS.

$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file ./1. \
    --ciphertext-file ./1.enc

Verrà creato un nuovo file sul disco 1.enc, che include i contenuti del file criptato. Ora che i dati sono criptati con Cloud KMS, carica il file criptato nel bucket Cloud Storage.

$ gsutil cp ./1.enc gs://${BUCKET_NAME}

Cloud KMS è integrato con Google Cloud Identity and Access Management (IAM). I ruoli IAM di Cloud KMS sono suddivisi in gran parte in due categorie:

  • Autorizzazione per gestire le chiavi
  • Autorizzazione a utilizzare le chiavi

Ad esempio, il ruolo roles/cloudkms.admin consente al titolare di creare keyring, chiavi di crittografia, impostare i criteri IAM ed eseguire operazioni correlate alla gestione. roles/cloudkms.cryptoKeyEncrypterDecrypter concede al titolare i dati di crittografia e decriptazione, ma non include le autorizzazioni di gestione.

I ruoli IAM sono ereditati dalla risorsa principale. Se un utente ha il ruolo roles/cloudkms.admin sul progetto Google Cloud, è amministratore di tutte le chiavi in quel progetto. Se ha roles/cloudkms.admin su un keyring, sono gli amministratori di tutte le chiavi del keyring. Se ha roles/cloudkms.admin su una singola chiave di crittografia, è solo un amministratore di quella chiave.

Per questa esercitazione, utilizza l'identità:

$ export MY_IDENTITY=you@gmail.com # or you@example.com

Assegna all'identità la possibilità di gestire le risorse Cloud KMS nel keyring creato in precedenza utilizzando lo strumento a riga di comando gcloud:

$ gcloud kms keyrings add-iam-policy-binding "my-keyring" \
    --location "global" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.admin"

Il ruolo roles/cloudkms.admin non include l'autorizzazione a utilizzare le chiavi, ma solo per gestirle. Per concedere alla tua identità la possibilità di criptare e decriptare i dati usando la chiave di crittografia enron-emails:

$ gcloud kms keys add-iam-policy-binding "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Tieni presente che il primo comando concede il ruolo roles/cloudkms.admin sul keyring, che includerebbe tutte le risorse CryptoKey secondarie. Il secondo comando concede roles/cloudkms.cryptoKeyEncrypterDecrypter, ma solo sulla chiave di crittografia enron-emails.

Puoi anche visualizzare e assegnare ruoli nell'UI di Cloud KMS in Cloud Console.

Oltre alla crittografia di un singolo file, puoi anche criptare una raccolta di file con alcuni script. In questo esempio vengono inviate in streaming tutte le email per allen-p, vengono criptate e caricate i valori criptati risultanti nel bucket Cloud Storage:

DIR="gs://enron_emails/allen-p"
for file in $(gsutil ls ${DIR}/**); do
  ENC_NAME="$(basename ${file}).enc"
  gsutil cat ${file} \
  | \

  gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file - \
    --ciphertext-file - \
    | \

    gsutil -q cp - gs://${BUCKET_NAME}/${ENC_NAME}
    echo "Copied ${ENC_NAME}"
done

Viene eseguita un'iterazione su tutti i file nella directory specificata nel bucket Cloud Storage di esempio, li cripta utilizzando Cloud KMS e li carica su Google Cloud Storage.

Al termine dello script, puoi visualizzare i file criptati nell'interfaccia utente di Cloud Storage. Il risultato dovrebbe essere simile a questo:

L'audit logging di Cloud ha due flussi di log (log di attività di amministrazione e log di accesso ai dati), generati dai servizi Google Cloud per aiutarti a rispondere a domande come "chi ha fatto cosa, dove e quando".

Per visualizzare l'attività per qualsiasi risorsa in KMS, fai clic sul keyring e seleziona Visualizza attività. Verrà visualizzata l'interfaccia utente di Cloud Activity, dove dovresti vedere la creazione e tutte le modifiche apportate al keyring.

Hai criptato dati con Cloud KMS e hai archiviato i dati criptati in Cloud Storage.

Pulizia

Rilascia le risorse create durante questo tutorial. Elimina il bucket Cloud Storage creato in precedenza:

$ gsutil rm -r gs://${BUCKET_NAME}

Impossibile eliminare le risorse Cloud KMS. Tuttavia, puoi eliminare il materiale della chiave in modo che non possa essere riutilizzato:

$ gcloud kms keys versions destroy "1" \
    --location "global" \
    --key "enron-emails" \
    --keyring "my-keyring"

Abbiamo parlato

  • Utilizzo di Cloud IAM per gestire le autorizzazioni di Cloud KMS
  • Utilizzo di Cloud KMS per criptare i dati
  • Utilizzo di Cloud Storage per archiviare dati criptati
  • Utilizzo dell'audit logging di Cloud per visualizzare tutte le attività relative a chiavi e keyring

Passaggi successivi

  • Utilizzare Cloud KMS per criptare una colonna in un database come BigQuery
  • Imposta una pianificazione di rotazione automatica nelle chiavi Cloud KMS

Scopri di più

Licenza

Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.