Utilizzo delle chiavi di crittografia gestite dal cliente

Per impostazione predefinita, Cloud Tasks cripta i dati archiviati at-rest. Google Cloud gestisce questa crittografia predefinita per te senza alcuna azione aggiuntiva da parte tua.

Se hai requisiti di conformità o normativi specifici relativi alle chiavi che proteggono i tuoi dati, puoi utilizzare chiavi di crittografia gestite dal cliente (CMEK) per Cloud Tasks. L'attività e i dati at-rest associati (corpo e intestazione) sono protetti tramite una chiave di crittografia a cui solo tu puoi accedere e che puoi controllare e gestire utilizzando Cloud Key Management Service (Cloud KMS).

Cosa viene protetto con CMEK

Quando abiliti CMEK in Cloud Tasks, la abiliti per una regione. Se questa opzione è abilitata, il corpo e l'intestazione delle attività create in quella regione sono protetti con la chiave quando è at-rest. Se un'attività è stata creata mentre CMEK era abilitata e la chiave viene successivamente resa inattiva (disabilitando o eliminando la chiave o disattivando CMEK), l'attività viene criptata con la chiave, ma non può essere eseguita.

Le attività non sono protette con CMEK nei seguenti casi:

  • L'attività è stata creata prima di abilitare CMEK
  • L'attività non si trova nella regione per cui è abilitata CMEK
  • L'attività è interessata da un limite di compatibilità

Limitazioni di compatibilità

L'integrazione di Cloud Tasks con CMEK non supporta quanto segue:

  • Versioni di google-gax riportate di seguito 4.0.0: il pacchetto NPM google-gax per Node.js ha un supporto limitato nelle versioni inferiori a 4.0.0. Per queste versioni, CMEK è supportata solo nell'area geografica us-central1. Anche se hai solo attività in quella regione, ti consigliamo di eseguire l'upgrade alla versione 4.0.0 o successiva.

  • Servizio Taskqueue integrato di App Engine: le attività create utilizzando il servizio Taskqueue integrato di App Engine non sono protette da CMEK, anche se si trovano in una regione per la quale è abilitato. L'attivazione di CMEK non impedisce la creazione o l'operazione (ad esempio l'esecuzione o l'eliminazione) di queste attività.

  • Coda in modalità pull: se abiliti CMEK, puoi creare ed eseguire attività sulle code di pull, ma queste attività non sono protette da CMEK. Le code in modalità pull sono rare. Per verificare se la coda è in coda in modalità pull, esegui il seguente comando dell'interfaccia a riga di comando gcloud nel terminale:

    gcloud beta tasks queues describe QUEUE_NAME
    

    Sostituisci QUEUE_NAME con il nome della coda.

    Se la type elencata è pull, la tua coda è una coda in modalità pull. Se il valore type elencato è push, questa limitazione non influisce sulle attività in coda.

  • Routing a livello di coda: se è abilitata la chiave CMEK, non puoi applicare il routing a livello di coda. E se il routing a livello di coda è abilitato, non puoi abilitare CMEK. Per verificare se hai abilitato il routing a livello di coda:

    1. Esegui questo comando dell'interfaccia a riga di comando gcloud CLI nel tuo terminale:

      gcloud beta tasks queues describe QUEUE_NAME
      Sostituisci QUEUE_NAME con il nome della coda.

    2. Nell'output, cerca il campo httpTarget e controlla se uriOverride è stato impostato. Se un host è specificato, la coda ha il routing a livello di coda abilitato e non è compatibile con CMEK. Per rimuovere il routing a livello di coda, consulta Aggiornare o rimuovere il routing a livello di coda. Se l'output non mostra uriOverride con un valore host specificato, la coda non utilizza il routing a livello di coda.

  • TTL attività: se CMEK è abilitata, non puoi impostare task_ttl su un valore superiore a 60 giorni. E se hai impostato un valore task_ttl su un valore superiore a 60 giorni, non puoi attivare CMEK.

Prima di iniziare

Prima di utilizzare CMEK in Cloud Tasks, completa questi passaggi:

  1. Abilitare le API.

    Console

    1. Abilita le API Cloud KMS and Cloud Tasks.

      Abilita le API

    gcloud

    1. In Google Cloud Console, attiva Cloud Shell.

      Attiva Cloud Shell

      Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

    2. Imposta il progetto predefinito. Dovrebbe essere il progetto che contiene le risorse Cloud Tasks che vuoi proteggere con CMEK. Se devi eseguire un comando in un progetto diverso, ad esempio il progetto contenente le risorse Cloud KMS, in questa pagina verrà incluso il flag --project nel comando dellgcloud CLI e ti indicherà il progetto da specificare.

      gcloud config set project PROJECT_ID
      

      Sostituisci PROJECT_ID con l'ID del progetto che contiene le risorse Cloud Tasks.

    3. Aggiorna gcloud componenti.

      gcloud components update
      

    4. Abilitare le API Cloud KMS e Cloud Tasks per il progetto che archivierà le chiavi di crittografia.

      gcloud services enable cloudkms.googleapis.com cloudtasks.googleapis.com 
      --project=PROJECT_ID

      Sostituisci PROJECT_ID con l'ID del progetto che archivierà le chiavi di crittografia. Potrebbe essere lo stesso progetto delle risorse Cloud Tasks, ma per limitare l'accesso alle chiavi Cloud KMS, ti consigliamo di configurare Cloud KMS in un progetto separato.

  2. Cloud KMS genera Cloud Audit Logs quando le chiavi sono abilitate, disabilitate o utilizzate dalle risorse di Cloud Tasks per criptare e decriptare i dati. Assicurati che il logging sia abilitato per l'API Cloud KMS nel progetto e di aver deciso quali autorizzazioni e ruoli specifici per il logging si applicano al tuo caso d'uso. Per ulteriori informazioni, consulta Informazioni sull'audit logging di Cloud KMS.

  3. Ottieni i ruoli di Identity and Access Management.

    Per ottenere le autorizzazioni necessarie per utilizzare CMEK con Cloud Tasks, chiedi all'amministratore di concederti i ruoli IAM seguenti sul tuo progetto:

    • Abilita o disabilita CMEK: roles/cloudtasks.admin
    • Visualizza la chiave in uso: roles/cloudtasks.viewer

    Per saperne di più sulla concessione dei ruoli, vedi Gestire l'accesso.

    Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

Crea un keyring e una chiave Cloud KMS

Se hai già un keyring nella stessa regione delle risorse Cloud Tasks e vuoi utilizzarlo, salta questa sezione. In caso contrario, utilizza queste istruzioni per creare la chiave e il keyring Cloud KMS.

  1. Crea un keyring.

  2. Crea una chiave per un keyring specificato.

Recupera l'ID di una chiave Cloud KMS

L'ID risorsa per una chiave Cloud KMS è obbligatorio quando abiliti CMEK per Cloud Tasks.

Console

  1. Nella console Google Cloud, vai alla pagina Gestione delle chiavi e seleziona la scheda Inventario chiavi.

    Vai a Inventario chiavi

  2. Per la chiave di cui stai recuperando l'ID risorsa, fai clic su Azioni.

  3. Fai clic su Copia nome risorsa.

    L'ID risorsa della chiave viene copiato negli appunti. Il suo formato è simile al seguente:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

gcloud

  1. Elenca tutte le chiavi in un determinato keyring:

    gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • KEY_RING: il nome del keyring
    • LOCATION: la regione del keyring
    • PROJECT_ID: l'ID del progetto che contiene il keyring

    L'output include l'ID di ciascuna chiave. Ad esempio:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

Concedi all'agente di servizio Cloud Tasks l'accesso alla chiave

Devi concedere all'agente di servizio Cloud Tasks il ruolo Autore crittografia/decriptazione CryptoKey Cloud KMS in modo che possa accedere alla chiave Cloud KMS:

Console

  1. Nella console Google Cloud, vai alla pagina Identity and Access Management.

    Vai a IAM

  2. Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.

  3. Trova l'account di servizio Cloud Tasks digitando cloudtasks.iam.gserviceaccount.com nel filtro.

    L'account di servizio Cloud Tasks ha il modulo service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com.

  4. Fai clic sull'icona a forma di matita Modifica entità.

  5. Nel riquadro che si apre, fai clic su Aggiungi un altro ruolo.

  6. Cerca e seleziona il ruolo Autore crittografia/decriptazione CryptoKey Cloud KMS.

  7. Fai clic su Salva.

gcloud

gcloud kms keys add-iam-policy-binding KEY_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Sostituisci quanto segue:

  • KEY_ID: l'ID risorsa completo per la chiave. Per istruzioni su come trovarlo, consulta Recuperare l'ID per una chiave Cloud KMS. Non includere un numero di versione della chiave. L'inclusione di un numero di versione della chiave potrebbe causare la mancata riuscita di questo comando.
  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud. Puoi trovare il numero del progetto nella pagina Dashboard della console Google Cloud o eseguendo il seguente comando:

    PROJECT=$(gcloud info --format='value(config.project)')
    gcloud projects describe ${PROJECT} --format="value(projectNumber)"
    

Finché l'agente di servizio ha il ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter, un'attività nella tua regione abilitata per CMEK può criptare e decriptare i relativi dati utilizzando la chiave CMEK. Se revochi questo ruolo o se disattivi o distruggi la chiave CMEK, non sarà possibile accedere a quei dati. In questo documento, vedi Disattivare Cloud KMS.

Abilita CMEK per Cloud Tasks

Puoi abilitare CMEK utilizzando l'API o l'interfaccia alla gcloud CLI. Per Cloud Tasks, CMEK viene abilitata per regione. Non è resa possibile dalle singole attività. Quando CMEK è abilitata per una determinata regione in Cloud Tasks, tutte le attività in quella regione sono protette da CMEK.

API

Puoi abilitare CMEK chiamando il metodo Update CMEK config. L'API Cloud Tasks fornisce il metodo Update CMEK config nelle API REST e RPC:

gcloud

Per abilitare CMEK utilizzando Google Cloud CLI, utilizza questo comando:

gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID

Sostituisci quanto segue:

  • LOCATION: la regione della risorsa Cloud Tasks
  • KEY_ID: l'ID risorsa completo per la chiave. Per istruzioni su come trovarlo, consulta Recuperare l'ID per una chiave Cloud KMS. Non includere un numero di versione della chiave. L'inclusione di un numero di versione della chiave potrebbe causare la mancata riuscita di questo comando.

Per verificare che la chiave sia stata abilitata correttamente, segui le istruzioni nella sezione Identificare la chiave in uso.

Abilita per attività preesistenti

CMEK non protegge le attività create prima di abilitarle per Cloud Tasks. Per proteggere le attività preesistenti con CMEK:

  1. Attiva CMEK (vedi la sezione relativa all'abilitazione di CMEK).
  2. Sostituisci le attività preesistenti. Esistono due modi principali per farlo. Il modo migliore per farlo dipende da ciò che è importante per te:

    • Esecuzione continua: per garantire l'esecuzione continua (almeno una volta), puoi prima ricreare l'attività e poi eliminare l'attività preesistente dopo aver verificato che la nuova attività funzioni come previsto. Ciò può comportare esecuzioni duplicate, poiché sia la vecchia che la nuova attività possono essere eseguite prima di eliminare la vecchia attività.

    • Prevenzione della duplicazione: per evitare esecuzioni duplicate ("allaconsegna più volte una volta"), puoi prima eliminare l'attività precedente e poi ricrearla. Questo può comportare la perdita di esecuzioni, a causa del tempo trascorso tra l'eliminazione dell'attività precedente e la creazione di quella nuova.

Identifica la chiave in uso

Per identificare la chiave CMEK in uso per le tue risorse Cloud Tasks, esegui questo comando gcloud CLI nel tuo terminale:

gcloud tasks cmek-config describe --location=LOCATION

Sostituisci LOCATION con la regione delle risorse Cloud Tasks.

Se non viene visualizzato alcun output, significa che CMEK non è configurata per la località specificata.

Disattiva CMEK per Cloud Tasks

Puoi disabilitare CMEK utilizzando l'API o gcloud CLI. Per Cloud Tasks, CMEK è disabilitata per regione. Non è disabilitata da attività individuali. Quando CMEK è disabilitata per una determinata regione in Cloud Tasks, le attività in quella regione non sono protette da CMEK.

La disabilitazione di CMEK influisce sulle attività create in futuro, non su quelle create in passato:

  • Nuove attività:non sono protette da CMEK
  • Attività preesistenti: le attività create mentre la CMEK era abilitata rimangono criptate e continuano a essere eseguite finché la chiave Cloud KMS rimane attiva.

API

Puoi disabilitare CMEK chiamando il metodo Update CMEK config e cancellando la chiave Cloud KMS sostituendola con una stringa vuota. L'API Cloud Tasks fornisce il metodo Update CMEK config nelle API REST e RPC:

gcloud

Per disabilitare CMEK utilizzando Google Cloud CLI, utilizza questo comando:

gcloud tasks cmek-config update --location=LOCATION --clear-kms-key

Sostituisci quanto segue:

  • LOCATION: la regione della risorsa Cloud Tasks.

Rimuovi Cloud KMS

Se vuoi revocare l'accesso ai dati delle tue attività, puoi rimuovere Cloud KMS. Puoi farlo in tre modi:

  • Disabilita la chiave di crittografia gestita dal cliente. La disabilitazione di una chiave CMEK sospende l'accesso a tutti i dati protetti da quella versione della chiave mentre la chiave è disabilitata. Non puoi accedere o creare attività con una chiave disabilitata. Il tentativo di eseguire un'attività protetta da CMEK mentre la chiave è disabilitata genera un errore UNKNOWN in Cloud Logging. Puoi riattivare la chiave in un secondo momento, se vuoi. Quando disabiliti una chiave di crittografia gestita dal cliente, l'applicazione della modifica potrebbe richiedere fino a 5 minuti.

  • Elimina la chiave di crittografia gestita dal cliente. L'eliminazione di una chiave CMEK sospende definitivamente l'accesso a tutti i dati protetti da quella versione della chiave. Non puoi accedere o creare attività con una chiave eliminata. Se un'attività è stata creata mentre CMEK era abilitata e la chiave viene successivamente eliminata, l'attività viene criptata con la chiave, ma non può essere eseguita. Se l'attività tenta di essere eseguita, Cloud Logging registra un errore UNKNOWN. Quando elimini una chiave di crittografia gestita dal cliente, l'applicazione della modifica può richiedere fino a 5 minuti.

  • Revoca il cloudkms.cryptoKeyEncrypterDecrypterruolo IAM dall'agente di servizio Cloud Tasks. Questo influisce su tutte le attività nel progetto Google Cloud che supportano la crittografia utilizzando CMEK. Non puoi creare nuove attività integrate con CMEK o visualizzare risorse criptate con CMEK.

Sebbene nessuna di queste operazioni garantisca la revoca dell'accesso istantanea, le modifiche IAM in genere vengono applicate più rapidamente. Per ulteriori informazioni, consulta Coerenza delle risorse di Cloud KMS e Accesso alla propagazione delle modifiche.

Prezzi

Questa integrazione non comporta costi aggiuntivi oltre alle operazioni chiave, che vengono fatturate al tuo progetto Google Cloud. Per informazioni sui prezzi attuali, consulta i prezzi di Cloud KMS.