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
seguenti4.0.0
: il pacchetto NPMgoogle-gax
per Node.js ha un supporto limitato nelle versioni inferiori a4.0.0
. Per queste versioni, CMEK è supportata solo nella regioneus-central1
. Anche se hai attività solo in quella regione, ti consigliamo di eseguire l'upgrade alla versione4.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 campotype
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:
Esegui il seguente comando gcloud CLI nel tuo terminale:
gcloud tasks queues describe QUEUE_NAME
SostituisciQUEUE_NAME
con il nome della coda.Nell'output, cerca il campo
httpTarget
e controlla seuriOverride
è stato impostato. Se unhost
è 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 mostrauriOverride
con un valorehost
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 untask_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:
Abilitare le API.
Console
-
Abilita le API Cloud KMS and Cloud Tasks.
gcloud
Nella console Google Cloud, 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.
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.Aggiorna
gcloud
componenti.gcloud components update
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_IDSostituisci
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.
-
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.
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.
-
Abilita o disabilita CMEK:
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.
-
Il keyring deve trovarsi nella regione che contiene le risorse Cloud Tasks da proteggere. Per ulteriori informazioni, consulta le località di Cloud KMS e le località di Cloud Tasks.
Il keyring e le risorse Cloud Tasks protette da CMEK possono essere nello stesso progetto, ma per limitare l'accesso alle chiavi Cloud KMS, valuta la possibilità di configurare Cloud KMS in un progetto separato.
Recupera l'ID di una chiave Cloud KMS
L'ID risorsa per una chiave Cloud KMS è obbligatorio quando abiliti CMEK per Cloud Tasks.
Console
Nella console Google Cloud, vai alla pagina Gestione delle chiavi e seleziona la scheda Inventario chiavi.
Per la chiave di cui stai recuperando l'ID risorsa, fai clic su more_vert Azioni.
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
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 keyringLOCATION
: la regione del keyringPROJECT_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
Nella console Google Cloud, vai alla pagina Identity and Access Management.
Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.
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
.Fai clic sull'icona a forma di matita Modifica entità.
Nel riquadro che si apre, fai clic su Aggiungi un altro ruolo.
Cerca e seleziona il ruolo Autore crittografia/decriptazione CryptoKey Cloud KMS.
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:
- REST: usa il metodo
updateCmekConfig
. - RPC: utilizza il metodo
UpdateCmekConfigRequest
.
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 TasksKEY_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:
- Attiva CMEK (vedi la sezione relativa all'abilitazione di CMEK).
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:
- REST: usa il metodo
updateCmekConfig
. - RPC: utilizza il metodo
UpdateCmekConfigRequest
.
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.cryptoKeyEncrypterDecrypter
IAM 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.