Utilizzo delle chiavi di crittografia gestite dal cliente

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 servizi integrati con CMEK, tra cui Cloud Tasks. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il livello di protezione, la località, la pianificazione della rotazione, le autorizzazioni di utilizzo e di accesso e i limiti crittografici. Con Cloud KMS puoi inoltre visualizzare gli audit log e controllare i cicli di vita delle chiavi. Invece di Google, sei tu ad avere la proprietà e la gestione delle chiavi di crittografia della chiave (KEK) simmetriche che proteggono i tuoi dati. Puoi controllare e gestire queste chiavi 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).

Cosa viene protetto con CMEK

Quando abiliti CMEK in Cloud Tasks, la abiliti per una regione. Se attivato, il corpo e l'intestazione delle attività create in quella regione vengono protetti con la tua chiave quando sono inattive. Se un'attività è stata creata mentre CMEK era abilitata e la chiave viene resa inattiva in un secondo momento (disattivando 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 dell'attivazione di CMEK
  • L'attività non si trova nella regione per cui è 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 google-gax precedenti a 4.0.0: il pacchetto NPM google-gax per Node.js ha un supporto limitato nelle versioni precedenti a 4.0.0. Per queste versioni, CMEK è supportata solo nella regione us-central1. Anche se hai solo attività in questa regione, ti consigliamo di eseguire l'upgrade alla versione 4.0.0 o successive.

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

  • Code pull: se abiliti CMEK, puoi creare ed eseguire attività nelle code pull, ma queste attività non sono protette da CMEK. Le code pull sono insolite. Per verificare se la coda è una coda in modalità pull, esegui questo comando gcloud CLI nel terminale:

    gcloud tasks queues describe QUEUE_NAME

    Sostituisci QUEUE_NAME con il nome della coda.

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

  • Routing a livello di coda:quando CMEK è attivata, non puoi applicare il routing a livello di coda. Se è abilitato il routing a livello di coda, non puoi attivare CMEK. Per verificare se hai abilitato il routing a livello di coda:

    1. Esegui questo comando gcloud CLI nel 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 è stato impostato uriOverride. Se viene specificato un host, la coda ha il routing a livello di coda abilitato e non è compatibile con CMEK. Per rimuovere il routing a livello di coda, vedi Aggiornare o rimuovere il routing a livello di coda. Se l'output non mostra uriOverride con un host specificato, la tua coda non utilizza il routing a livello di coda.

  • TTL attività:quando CMEK è abilitata, non puoi impostare task_ttl su più di 60 giorni. Se hai impostato un valore di task_ttl superiore a 60 giorni, non puoi attivare CMEK.

Prima di iniziare

Prima di utilizzare CMEK in Cloud Tasks, completa i seguenti passaggi:

  1. Abilita le API.

    Console

    1. Enable the Cloud KMS and Cloud Tasks APIs.

      Enable the APIs

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      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.

    2. 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 che contiene le risorse Cloud KMS, questa pagina includerà il flag --project nel comando gcloud 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 i componenti di gcloud.

      gcloud components update

    4. Abilita 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 memorizzerà le chiavi di crittografia. Potrebbe trattarsi dello stesso progetto delle tue risorse Cloud Tasks, ma per limitare l'accesso alle tue chiavi Cloud KMS, valuta la possibilità di configurare Cloud KMS in un progetto separato.

  2. Cloud KMS genera Cloud Audit Logs quando le chiavi vengono attivate, disattivate o utilizzate dalle risorse Cloud Tasks per criptare e decriptare i dati. Assicurati che la registrazione sia abilitata per l'API Cloud KMS nel tuo progetto e di aver deciso quali ruoli e autorizzazioni specifici per la registrazione si applicano al tuo caso d'uso. Per ulteriori informazioni, consulta Informazioni sui log di controllo di Cloud KMS.

  3. Ottieni i ruoli Identity and Access Management.

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

    • Attiva o disattiva CMEK: roles/cloudtasks.admin
    • Visualizza la chiave in uso: roles/cloudtasks.viewer

    Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  4. Crea un keyring e una chiave Cloud KMS

    Se hai già un keyring nella stessa regione delle tue risorse Cloud Tasks e vuoi utilizzare quella chiave e quel keyring, salta questa sezione. In caso contrario, segui queste istruzioni per creare la chiave e il portachiavi 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 all'inventario delle 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 formato è simile al seguente:

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

    gcloud

    1. Elenca tutte le chiavi di 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 portachiavi
      • PROJECT_ID: l'ID del progetto che contiene il portachiavi

      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 Utilità di crittografia/decrittografia CryptoKey di Cloud KMS di Identity and Access Management (IAM) in modo che possa accedere alla chiave Cloud KMS:

    Console

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

      Vai a IAM

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

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

      Il 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 principale.

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

    6. Cerca e seleziona il ruolo Autore crittografia/decrittografia 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 tua chiave. Per istruzioni su come trovarlo, consulta Recuperare l'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.
    • PROJECT_NUMBER: il tuo Google Cloud numero di progetto. Puoi trovare il numero di progetto nella pagina Benvenuto della console Google Cloud o eseguendo questo comando:

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

    Se l'agente di servizio dispone del ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter, un'attività nella regione abilitata a CMEK può criptare e decriptare i propri dati utilizzando la chiave CMEK. Se revochi questo ruolo o se disattivi o distruggi la chiave CMEK, non è possibile accedere a questi dati. In questo documento, vedi Disattivare CMEK per Cloud Tasks.

    Abilita CMEK per Cloud Tasks

    Puoi abilitare CMEK utilizzando l'API o gcloud CLI. Per Cloud Tasks, CMEK è abilitata per regione. Non è abilitata dalle singole attività. Quando la chiave di crittografia gestita dal cliente è abilitata per una determinata regione in Cloud Tasks, tutte le attività in quella regione sono protette dalla chiave di crittografia gestita dal cliente.

    gcloud

    Per abilitare CMEK utilizzando Google Cloud CLI, esegui 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 tua chiave. Per istruzioni su come trovarlo, consulta Recuperare l'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 che RPC:

    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:

    1. Attiva CMEK (consulta la sezione relativa all'attivazione 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 quella preesistente dopo aver verificato che la nuova attività funzioni come previsto. Ciò può comportare l'esecuzione duplicata, perché sia l'attività precedente sia quella nuova potrebbero essere eseguite prima che tu elimini la precedente.

      • Prevenzione dei duplicati: per evitare esecuzioni duplicate ("al massimo una volta" di consegna), puoi prima eliminare il vecchio task e poi ricrearlo. Ciò può comportare l'interruzione delle esecuzioni a causa del tempo trascorso tra l'eliminazione del vecchio task e la creazione di quello nuovo.

    Identificare 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 tue risorse Cloud Tasks.

    Se non viene visualizzato alcun output, CMEK non è configurato per la località specificata.

    Applica 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.
    Google Cloud

    Questa integrazione ti consente di specificare i seguenti requisiti di conformità della crittografia per le risorse Cloud Tasks nella tua organizzazione:

    Considerazioni sull'applicazione dei criteri dell'organizzazione

    Prima di applicare qualsiasi policy dell'organizzazione CMEK, tieni presente quanto segue.

    Prepararsi a un ritardo di propagazione

    Dopo aver impostato o aggiornato una policy dell'organizzazione, l'applicazione della nuova policy può richiedere fino a 15 minuti.

    Prendi in considerazione le risorse esistenti

    Le risorse esistenti non sono soggette alle policy dell'organizzazione appena create. Ad esempio, un criterio dell'organizzazione non viene applicato retroattivamente alle attività esistenti. Queste risorse sono ancora accessibili senza una CMEK e, se applicabile, sono ancora criptate con le chiavi esistenti. Se vuoi applicare la policy alle attività esistenti, devi abilitare CMEK per le attività preesistenti.

    Verificare le autorizzazioni richieste per impostare una policy dell'organizzazione

    L'autorizzazione per impostare o aggiornare la policy dell'organizzazione potrebbe essere difficile da ottenere a scopo di test. Devi disporre del ruolo Amministratore policy 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 una policy che si applichi solo a un progetto o a una cartella specifici.

    Richiedi chiavi CMEK per tutte le nuove risorse Cloud Tasks

    Puoi utilizzare il vincolo constraints/gcp.restrictNonCmekServices per richiedere che le chiavi CMEK vengano utilizzate per proteggere tutte le nuove risorse Cloud Tasks in un'organizzazione.

    Se impostato, questo criterio dell'organizzazione causa l'esito negativo di tutte le richieste di creazione di risorse senza una chiave Cloud KMS specificata.

    Dopo aver impostato questo criterio, questo si applica solo alle nuove risorse del progetto. Tutte le risorse esistenti senza chiavi Cloud KMS applicate continuano a esistere e sono accessibili senza problemi.

    Console

    1. Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.

      Vai a Policy dell'organizzazione

    2. Utilizzando il filtro, cerca il seguente vincolo:

      constraints/gcp.restrictNonCmekServices
      
    3. Nella colonna Nome, fai clic su Limita i servizi che possono creare risorse senza CMEK.

    4. Fai clic su Gestisci policy.

    5. Nella pagina Modifica policy, in Origine policy, seleziona Esegui override della policy dell'unità organizzativa principale.

    6. In Regole, fai clic su Aggiungi una regola.

    7. Nell'elenco Valori policy, seleziona Personalizzato.

    8. Nell'elenco Tipo di criterio, seleziona Rifiuta.

    9. Nel campo Valori personalizzati, inserisci quanto segue:

      is:cloudtasks.googleapis.com
      
    10. Fai clic su Fine, quindi su Imposta policy.

    gcloud

    1. 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 questo vincolo.

    2. 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 tu 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 O projects/team-specific-keys".

    Console

    1. Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.

      Vai a Policy dell'organizzazione

    2. Utilizzando il filtro, cerca il seguente vincolo:

      constraints/gcp.restrictCmekCryptoKeyProjects
      
    3. Nella colonna Nome, fai clic su Limita i progetti che possono fornire CryptoKey KMS per CMEK.

    4. Fai clic su Gestisci policy.

    5. Nella pagina Modifica policy, in Origine policy, seleziona Esegui override della policy dell'unità organizzativa principale.

    6. In Regole, fai clic su Aggiungi una regola.

    7. Nell'elenco Valori policy, seleziona Personalizzato.

    8. Nell'elenco Tipo di policy, seleziona Consenti.

    9. 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.

    10. Fai clic su Fine, quindi su Imposta policy.

    gcloud

    1. 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.
    2. 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 è disabilitata per regione. Non è disattivato dalle singole attività. Quando CMEK è disabilitata 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 in passato:

    • Nuovi task:non sono protetti 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.

    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 che RPC:

    Rimuovi Cloud KMS

    Se vuoi revocare l'accesso ai dati delle tue attività, puoi rimuovere Cloud KMS. Puoi farlo 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, potrebbero essere necessari fino a 5 minuti prima che la modifica venga applicata.

    • 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 che è stata eliminata. Se un'attività è stata creata mentre CMEK era abilitata e la chiave viene distrutta in un secondo momento, l'attività viene criptata con la tua chiave, ma non può essere eseguita. Se il tentativo di esecuzione dell'attività va a buon fine, Cloud Logging registra un errore UNKNOWN. Quando elimini una chiave di crittografia gestita dal cliente, potrebbero essere necessari fino a 5 minuti prima che la modifica venga applicata.

    • Revoca del ruolo IAM cloudkms.cryptoKeyEncrypterDecrypter dall'agente di servizio Cloud Tasks. Ciò influisce su tutte le attività nel progettoGoogle 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 immediata dell'accesso, le modifiche IAM hanno in genere effetto 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 chiave, che vengono fatturate al tuo progetto Google Cloud . Per informazioni sui prezzi attuali, consulta Prezzi di Cloud KMS.