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 conto tuo senza che tu debba fare altro.

Se hai requisiti normativi o di conformità 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 da una chiave di crittografia a cui puoi accedere solo tu e che puoi controllare e gestire mediante Cloud Key Management Service (Cloud KMS).

Cosa è protetto con CMEK

Quando abiliti CMEK in Cloud Tasks, viene abilitata per una regione. Se questa opzione è abilitata, il corpo e l'intestazione delle attività create in quella regione sono protetti con la chiave quando sono inattivi. Se un'attività è stata creata mentre CMEK era abilitata e la chiave viene successivamente resa inattiva (disabilitando o eliminando la chiave oppure 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 la quale è abilitata CMEK
  • L'attività è interessata da una limitazione di compatibilità

Limitazioni di compatibilità

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

  • Versioni di google-gax seguenti 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 nella regione us-central1. Anche se hai attività solo 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 tramite CMEK, anche se si trovano in una regione per la quale è abilitato. L'abilitazione di CMEK non impedisce la creazione o l'operazione (ad esempio l'esecuzione o l'eliminazione) di queste attività.

  • Code in 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 è una coda in modalità pull, esegui il seguente comando gcloud CLI nel tuo terminale:

    gcloud tasks queues describe QUEUE_NAME
    

    Sostituisci QUEUE_NAME con il nome della coda.

    Se l'type in elenco è pull, la tua coda è una coda in modalità pull. Se il campo type elencato è push, questa limitazione non influisce sulle attività nella coda.

  • Routing a livello di coda: se CMEK è abilitata, non puoi applicare il routing a livello di coda. Se invece è abilitato il routing a livello di coda, non puoi abilitare CMEK. Per verificare se è abilitato il routing a livello di coda:

    1. Esegui il seguente comando gcloud CLI nel tuo terminale:

      gcloud 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. Se hai un task_ttl impostato su un valore superiore a 60 giorni, non puoi abilitare 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. Nella console Google Cloud, attiva Cloud Shell.

      Attiva Cloud Shell

      Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra 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 attuale. 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 altro progetto, ad esempio quello contenente le risorse Cloud KMS, questa pagina includerà il flag --project nel comando gcloud CLI e ti indicherà quale progetto 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. Abilita le API Cloud KMS e Cloud Tasks per il progetto in cui verranno archiviate le tue chiavi di crittografia.

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

      Sostituisci PROJECT_ID con l'ID del progetto in cui verranno archiviate 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 produce Cloud Audit Logs quando le chiavi sono abilitate, disabilitate o utilizzate dalle risorse Cloud Tasks per criptare e decriptare i dati. Assicurati che il logging sia abilitato per l'API Cloud KMS nel tuo progetto e di aver deciso quali autorizzazioni e ruoli specifici per il logging applicare 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, consulta Gestire l'accesso.

    Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i 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 utilizzare la chiave e il keyring, salta questa sezione. In caso contrario, segui 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 per ogni chiave. Ad esempio:

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

Concedere 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 formato 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 della chiave. Per istruzioni su come individuare questo problema, 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 un errore di questo comando.
  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud. Puoi trovare il numero del progetto nella pagina Ti diamo il benvenuto della console Google Cloud o eseguendo questo 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 dati utilizzando la chiave CMEK. Se revochi questo ruolo o se disabiliti o distruggi la chiave CMEK, non sarà possibile accedere a questi dati. In questo documento, consulta Disabilita Cloud KMS.

Abilita CMEK per Cloud Tasks

Puoi abilitare CMEK utilizzando l'API o gcloud CLI. Per Cloud Tasks, CMEK viene abilitata in base alla regione. Non può essere attivato da singole attività. Quando la CMEK è abilitata per una determinata regione in Cloud Tasks, tutte le attività in quella regione sono protette tramite 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 il seguente comando:

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

Sostituisci quanto segue:

  • LOCATION: la regione della tua risorsa Cloud Tasks
  • KEY_ID: l'ID risorsa completo della chiave. Per istruzioni su come individuare questo problema, 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 l'errore 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 abilitarla 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. Ci sono 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à, quindi eliminare l'attività preesistente dopo aver verificato che la nuova attività funzioni come previsto. Questo può comportare esecuzioni duplicate, poiché sia la vecchia che la nuova attività possono essere eseguite prima di eliminare quella precedente.

    • Prevenzione dei duplicati: per impedire esecuzioni duplicate (più una sola volta), puoi prima eliminare l'attività precedente e poi ricrearla. Ciò può causare la perdita di esecuzioni, a causa del tempo trascorso tra l'eliminazione dell'attività precedente e la creazione di quella nuova.

Identificare la chiave in uso

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

gcloud tasks cmek-config describe --location=LOCATION

Sostituisci LOCATION con la regione delle tue 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 in base alla regione. Non viene disabilitato da singole attività. Quando la CMEK è disattivata per una determinata regione in Cloud Tasks, le attività in quella regione non sono protette tramite CMEK.

La disattivazione 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 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 disattivare CMEK utilizzando Google Cloud CLI, utilizza il seguente comando:

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

Sostituisci quanto segue:

  • LOCATION: la regione della tua risorsa Cloud Tasks.

Rimuovi Cloud KMS

Se vuoi revocare l'accesso ai dati per le 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 riabilitare 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 in modo permanente l'accesso a tutti i dati protetti da quella versione della chiave. Non puoi accedere o creare attività con una chiave che è stata 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 ruolo cloudkms.cryptoKeyEncrypterDecrypterIAM dall'agente di servizio Cloud Tasks. Ciò influisce su tutte le attività nel progetto Google Cloud che supportano la crittografia tramite CMEK. Non puoi creare nuove attività integrate con CMEK o visualizzare risorse criptate con CMEK.

Sebbene nessuna di queste operazioni garantisca la revoca immediata dell'accesso, 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, fatturate al tuo progetto Google Cloud. Per informazioni sui prezzi attuali, consulta la pagina relativa ai prezzi di Cloud KMS.