Per impostazione predefinita, Cloud Tasks cripta i contenuti inattivi dei clienti. Cloud Tasks gestisce la crittografia per conto tuo senza che tu debba fare altro. Questa opzione è denominata Crittografia predefinita di Google.
Se vuoi controllare le tue chiavi di crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) in Cloud KMS con i servizi integrati con CMEK, tra cui Cloud Tasks. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il loro livello di protezione, la posizione, la pianificazione della rotazione, le autorizzazioni di utilizzo e di accesso e i confini di crittografia. L'utilizzo di Cloud KMS ti consente inoltre di visualizzare gli audit log e controllare i cicli di vita delle chiavi. Invece che essere di proprietà e gestite da Google, le chiavi di crittografia della chiave (KEK) simmetriche che proteggono i tuoi dati sono sotto il tuo controllo e vengono gestite in Cloud KMS.
Dopo aver configurato le risorse con le chiavi CMEK, l'esperienza di accesso alle risorse Cloud Tasks è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).
Che cosa viene protetto con CMEK
Quando attivi la chiave CMEK in Cloud Tasks, la attivi per una regione. Se questa opzione è attivata, il corpo e l'intestazione delle attività create in quella regione sono protetti con la tua chiave quando non sono in uso. Se una task è stata creata quando CMEK era attivo e la chiave viene successivamente disattivata (disattivando o eliminando la chiave o disattivando CMEK), la task 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 dell'attivazione di CMEK
- L'attività non si trova nella regione per cui è abilitato 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
precedenti a4.0.0
: il pacchetto NPMgoogle-gax
per Node.js ha un supporto limitato nelle versioni precedenti a4.0.0
. Per queste versioni, CMEK è supportato solo nella regioneus-central1
. Anche se hai solo attività 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 da CMEK, anche se si trovano in una regione per la quale è abilitato. L'attivazione di CMEK non impedisce la creazione o il funzionamento (ad esempio l'esecuzione o l'eliminazione) di queste attività.
Codella pull: se attivi CMEK, puoi creare ed eseguire attività nelle code pull, ma queste attività non sono protette da CMEK. Le code pull sono rare. Per verificare se la coda è una coda pull, esegui il seguente comando gcloud CLI nel terminale:
gcloud tasks queues describe QUEUE_NAME
Sostituisci
QUEUE_NAME
con il nome della coda.Se il valore
type
indicato èpull
, la coda è una coda pull. Se il valoretype
elencato èpush
, questa limitazione non influisce sulle attività nella coda.Indirizzamento a livello di coda: quando CMEK è attivato, non puoi applicare il routing a livello di coda. Inoltre, se il routing a livello di coda è attivato, non puoi attivare CMEK. Per verificare se hai attivato il routing a livello di coda:
Esegui il seguente comando gcloud CLI nel terminale:
Sostituiscigcloud tasks queues describe QUEUE_NAME
QUEUE_NAME
con il nome della coda.Nell'output, cerca il campo
httpTarget
e controlla se è stato impostatouriOverride
. Se è specificato unhost
, per la coda è attivo il routing a livello di coda 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 unhost
specificato, la coda non utilizza il routing a livello di coda.
TTL dell'attività: quando CMEK è attivato, non puoi impostare
task_ttl
su più di 60 giorni. Inoltre, se hai impostatotask_ttl
su un valore superiore a 60 giorni, non puoi attivare CMEK.
Prima di iniziare
Prima di utilizzare CMEK in Cloud Tasks, completa i seguenti passaggi:
Abilita le API.
Console
-
Enable the Cloud KMS and Cloud Tasks APIs.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Imposta il progetto predefinito. Deve 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, 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 i componenti
gcloud
.gcloud components update
Abilita le API Cloud KMS e Cloud Tasks per il progetto che memorizzerà 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 che memorizzerà le tue chiavi di crittografia. Potrebbe essere lo stesso progetto delle tue risorse Cloud Tasks, ma per limitare l'accesso alle tue chiavi Cloud KMS, ti consigliamo di configurare Cloud KMS in un progetto separato.
-
Cloud KMS genera audit log di Cloud quando le chiavi vengono attivate, disattivate 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 che tu abbia deciso quali autorizzazioni e ruoli specifici per il logging si applicano al tuo caso d'uso. Per ulteriori informazioni, consulta le informazioni sui log di controllo 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 seguenti ruoli IAM nel progetto:
-
Attiva o disattiva CMEK:
roles/cloudtasks.admin
-
Visualizza la chiave in uso:
roles/cloudtasks.viewer
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Attiva o disattiva CMEK:
Crea una raccolta di chiavi e una chiave Cloud KMS
Se hai già un keyring nella stessa regione delle tue risorse Cloud Tasks e vuoi utilizzare questa chiave e questo keyring, salta questa sezione. In caso contrario, segui queste istruzioni per creare la chiave e il mazzo di chiavi Cloud KMS.
-
Il mazzo di chiavi deve trovarsi nella regione che contiene le risorse Cloud Tasks che vuoi 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, ti consigliamo di configurare Cloud KMS in un progetto separato.
Recuperare l'ID di una chiave Cloud KMS
L'ID risorsa di una chiave Cloud KMS è obbligatorio quando attivi 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 per la chiave viene copiato negli appunti. Il formato è simile al seguente:
projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
gcloud
Elenca tutte le chiavi di un determinato mazzo di chiavi:
gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID
Sostituisci quanto segue:
KEY_RING
: il nome della chiave automatizzataLOCATION
: la regione del keyringPROJECT_ID
: l'ID del progetto che contiene la chiave automatizzata
L'output include l'ID chiave per ogni 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 di Cloud Identity and Access Management (IAM) Autore crittografia/decrittografia CryptoKey Cloud KMS per consentirgli di accedere alla chiave Cloud KMS:
Console
Nella console Google Cloud, vai alla pagina IAM (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 amministratore.
Nel riquadro che si apre, fai clic su Aggiungi un altro ruolo.
Cerca e seleziona il ruolo Autore crittografia/decrittografia 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 trovarlo, consulta Recupero dell'ID di una chiave Cloud KMS. Non includere un numero di versione della chiave. L'inclusione di un numero di versione della chiave potrebbe causare il fallimento di questo comando.PROJECT_NUMBER
: il numero del Google Cloud tuo progetto. Puoi trovare il numero del progetto nella pagina Welcome della console Google Cloud o eseguendo il seguente comando:PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format="value(projectNumber)"
A condizione che l'agente di servizio abbia il ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter
, un'attività nella regione con CMEK abilitato può criptare e decriptare i propri dati utilizzando la chiave CMEK. Se revochi questo ruolo o se disattivi o distruggi la chiave CMEK, non potrai accedere ai dati. In questo documento, consulta Disattivare CMEK per Cloud Tasks.
Attivare CMEK per Cloud Tasks
Puoi abilitare CMEK utilizzando l'API o gcloud CLI. Per Cloud Tasks, la chiave CMEK è attivata per regione. Non è abilitato dalle singole attività. Quando la chiave CMEK è abilitata per una determinata regione in Cloud Tasks, tutte le attività in quella regione sono protette dalla chiave CMEK.
gcloud
Per attivare CMEK utilizzando Google Cloud CLI, esegui il seguente comando:
gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID
Sostituisci quanto segue:
LOCATION
: la regione della risorsa Cloud TasksKEY_ID
: l'ID risorsa completo della chiave. Per istruzioni su come trovarlo, consulta Recupero dell'ID di 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.
REST
Puoi attivare CMEK chiamando il metodo Update CMEK config
. L'API Cloud Tasks fornisce il metodo Update CMEK config
sia nelle API REST sia nelle API RPC:
- REST: utilizza il metodo
updateCmekConfig
. - RPC: utilizza il metodo
UpdateCmekConfigRequest
.
Per verificare che la chiave sia stata attivata correttamente, segui le istruzioni riportate nella sezione Identificare la chiave in uso.
Attivare per le attività preesistenti
CMEK non protegge le attività create prima dell'attivazione di CMEK per Cloud Tasks. Per proteggere le attività preesistenti con CMEK:
- Attiva CMEK (consulta la sezione sull'attivazione di CMEK).
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" inviata), puoi prima ricreare l'attività e poi eliminare quella preesistente dopo aver verificato che la nuova attività funzioni come previsto. Ciò può comportare esecuzioni duplicate, perché sia l'attività precedente sia quella nuova potrebbero essere eseguite prima di eliminare l'attività precedente.
Prevenzione dei duplicati: per evitare esecuzioni duplicate ("al massimo una volta" inviata), puoi prima eliminare la vecchia attività e poi ricrearla. Ciò può comportare la perdita di esecuzioni a causa del tempo trascorso tra l'eliminazione della vecchia attività e la creazione di quella nuova.
Identifica la chiave in uso
Per identificare la chiave CMEK in uso per le risorse Cloud Tasks, esegui il seguente comando gcloud CLI:
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 è configurato per la località specificata.
Applicare una policy dell'organizzazione CMEK
Cloud Tasks è integrato con due vincoli dei criteri dell'organizzazione per contribuire a garantire l'utilizzo di CMEK in un'organizzazione:
constraints/gcp.restrictNonCmekServices
viene utilizzato per richiedere la protezione CMEK.constraints/gcp.restrictCmekCryptoKeyProjects
viene utilizzato per limitare le chiavi Cloud KMS utilizzate per la protezione CMEK.
Questa integrazione ti consente di specificare i seguenti requisiti di conformità alla crittografia per le risorse Cloud Tasks nella tua organizzazione:
- Richiedi CMEK per tutte le nuove risorse Cloud Tasks
- Limitare le chiavi Cloud KMS per un progetto Cloud Tasks
Considerazioni sull'applicazione dei criteri dell'organizzazione
Prima di applicare i criteri dell'organizzazione CMEK, devi tenere presente quanto segue.
Prepararsi a un ritardo di propagazione
Dopo aver impostato o aggiornato un criterio dell'organizzazione, l'applicazione del nuovo criterio può richiedere fino a 15 minuti.
Prendi in considerazione le risorse esistenti
Le risorse esistenti non sono soggette ai criteri dell'organizzazione appena creati. Ad esempio, un criterio dell'organizzazione non viene applicato retroattivamente alle attività esistenti. Queste risorse sono ancora accessibili senza una chiave CMEK e, se applicabile, sono ancora criptate con le chiavi esistenti. Se vuoi applicare il criterio alle attività esistenti, devi abilitare CMEK per le attività preesistenti.
Verificare le autorizzazioni richieste per impostare un criterio dell'organizzazione
L'autorizzazione per impostare o aggiornare il criterio dell'organizzazione potrebbe essere difficile da acquisire per scopi di test. Devi disporre del ruolo Amministratore criteri dell'organizzazione, che può essere concesso solo a livello di organizzazione (anziché a livello di progetto o cartella).
Sebbene il ruolo debba essere concesso a livello di organizzazione, è comunque possibile specificare un criterio che si applichi solo a un progetto o a una cartella specifici.
Richiedere CMEK per tutte le nuove risorse Cloud Tasks
Puoi utilizzare il vincolo constraints/gcp.restrictNonCmekServices
per richiedere
che i CMEK vengano utilizzati per proteggere tutte le nuove risorse Cloud Tasks in
un'organizzazione.
Se impostato, questo criterio dell'organizzazione fa sì che tutte le richieste di creazione di risorse senza una chiave Cloud KMS specificata non vadano a buon fine.
Una volta impostato, questo criterio si applica solo alle nuove risorse del progetto. Le eventuali risorse esistenti a cui non sono state applicate chiavi Cloud KMS continuano a esistere e sono accessibili senza problemi.
Console
Nella console Google Cloud, vai alla pagina Criteri dell'organizzazione.
Utilizzando Filtra, cerca il seguente vincolo:
constraints/gcp.restrictNonCmekServices
Nella colonna Nome, fai clic su Limita i servizi che possono creare risorse senza CMEK.
Fai clic su
Gestisci criteri.Nella pagina Modifica criterio, in Origine criterio, seleziona Sostituisci criterio della risorsa padre.
In Regole, fai clic su Aggiungi una regola.
Nell'elenco Valori criterio, seleziona Personalizzato.
Nell'elenco Tipo di criterio, seleziona Rifiuta.
Nel campo Valori personalizzati, inserisci quanto segue:
is:cloudtasks.googleapis.com
Fai clic su Fine, quindi su Imposta criteri.
gcloud
Crea un file temporaneo
/tmp/policy.yaml
per archiviare il criterio:name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices spec: rules: - values: deniedValues: - is:cloudtasks.googleapis.com
Sostituisci
PROJECT_ID
con l'ID del progetto in cui stai applicando questa limitazione.Esegui il comando
org-policies set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Per verificare che il criterio sia stato applicato correttamente, puoi provare a creare una coda nel progetto. Il processo non va a buon fine a meno che non specifichi una chiave Cloud KMS.
Limitare le chiavi Cloud KMS per un progetto Cloud Tasks
Puoi utilizzare il vincolo constraints/gcp.restrictCmekCryptoKeyProjects
per limitare le chiavi Cloud KMS che puoi utilizzare per proteggere una risorsa in un progetto Cloud Tasks.
Ad esempio, puoi specificare una regola simile alla seguente: "Per tutte le risorse Cloud Tasks in projects/my-company-data-project
, le chiavi Cloud KMS utilizzate in questo progetto devono provenire da projects/my-company-central-keys
OPPURE projects/team-specific-keys
".
Console
Nella console Google Cloud, vai alla pagina Criteri dell'organizzazione.
Utilizzando Filtra, cerca il seguente vincolo:
constraints/gcp.restrictCmekCryptoKeyProjects
Nella colonna Nome, fai clic su Limita i progetti che possono fornire CryptoKey KMS per CMEK.
Fai clic su
Gestisci criteri.Nella pagina Modifica criterio, in Origine criterio, seleziona Sostituisci criterio della risorsa padre.
In Regole, fai clic su Aggiungi una regola.
Nell'elenco Valori criterio, seleziona Personalizzato.
Nell'elenco Tipo di criterio, seleziona Consenti.
Nel campo Valori personalizzati, inserisci quanto segue:
under:projects/KMS_PROJECT_ID
Sostituisci
KMS_PROJECT_ID
con l'ID del progetto in cui si trovano le chiavi Cloud KMS che vuoi utilizzare.Ad esempio,
under:projects/my-kms-project
.Fai clic su Fine, quindi su Imposta criteri.
gcloud
Crea un file temporaneo
/tmp/policy.yaml
per archiviare il criterio:name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects spec: rules: - values: allowedValues: - under:projects/KMS_PROJECT_ID
Sostituisci quanto segue
PROJECT_ID
: l'ID del progetto in cui stai applicando questo vincolo.KMS_PROJECT_ID
: l'ID del progetto in cui si trovano le chiavi Cloud KMS che vuoi utilizzare.
Esegui il comando
org-policies set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Per verificare che il criterio sia stato applicato correttamente, puoi provare a creare una coda utilizzando una chiave Cloud KMS di un altro progetto. Il processo non andrà a buon fine.
Disattivare CMEK per Cloud Tasks
Puoi disattivare CMEK utilizzando l'API o gcloud CLI. Per Cloud Tasks, CMEK è disabilitato per regione. Non viene disattivato dalle singole attività. Quando CMEK è disabilitato per una determinata regione in Cloud Tasks, le attività in quella regione non sono protette da CMEK.
La disattivazione di CMEK influisce sulle attività create in futuro, non su quelle create nel passato:
- Nuove attività: non sono protette da CMEK
Attività esistenti: le attività create quando CMEK era abilitato rimangono criptate e continuano a essere eseguite finché la chiave Cloud KMS rimane attiva.
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 risorsa Cloud Tasks.
REST
Puoi disattivare 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
sia nelle API REST sia nelle API RPC:
- REST: utilizza il metodo
updateCmekConfig
. - RPC: utilizza il metodo
UpdateCmekConfigRequest
.
Rimuovi Cloud KMS
Se vuoi revocare l'accesso ai dati alle tue attività, puoi rimuovere Cloud KMS. Puoi procedere in tre modi:
Disattiva la chiave di crittografia gestita dal cliente. La disattivazione di una chiave CMEK sospende l'accesso a tutti i dati protetti da quella versione della chiave mentre la chiave è disattivata. Non puoi accedere o creare attività con una chiave disattivata. Il tentativo di eseguire un'attività protetta da CMEK mentre la chiave è disabilitata genera un errore
UNKNOWN
in Cloud Logging. Se vuoi, puoi riattivare la chiave in un secondo momento. Quando disattivi una chiave di crittografia gestita dal cliente, l'applicazione della modifica può richiedere fino a 5 minuti.Distruggi la chiave di crittografia gestita dal cliente. L'eliminazione di una chiave CMEK sospende definitivamente l'accesso a tutti i dati protetti dalla versione della chiave. Non puoi accedere o creare attività con una chiave che è stata eliminata. Se un'attività è stata creata quando CMEK era attivato e la chiave viene successivamente eliminata, l'attività viene criptata con la chiave, ma non può essere eseguita. Se la task 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.Rimuovi il ruolo IAM
cloudkms.cryptoKeyEncrypterDecrypter
dall'agente di servizio Cloud Tasks. Questo influisce su tutte le attività nel Google Cloud progetto che supportano la crittografia utilizzando CMEK. Non puoi creare nuove attività integrate con CMEK né visualizzare risorse criptate con CMEK.
Anche se nessuna di queste operazioni garantisce la revoca immediata dell'accesso, le modifiche IAM in genere vengono applicate più rapidamente. Per ulteriori informazioni, consulta Coerenza delle risorse Cloud KMS e Propagazione della modifica di accesso.
Prezzi
Questa integrazione non comporta costi aggiuntivi oltre alle operazioni principali, che vengono fatturate al tuo Google Cloud progetto. Per informazioni sui prezzi attuali, consulta Prezzi di Cloud KMS.