Utilizzo delle chiavi di crittografia gestite dal cliente

Per impostazione predefinita, Eventarc cripta i contenuti inattivi dei clienti. Eventarc 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 Eventarc. 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 CMEK, l'esperienza di accesso alle risorse Eventarc è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).

Le chiavi di crittografia gestite dal cliente vengono memorizzate come chiavi software in un cluster Cloud HSM o esternamente utilizzando Cloud External Key Manager.

Cloud KMS genera audit log quando le chiavi vengono attivate, disattivate o utilizzate dalle risorse Eventarc Advanced per criptare e decriptare i messaggi. Per ulteriori informazioni, consulta le informazioni sui log di controllo di Cloud KMS.

Che cosa viene protetto con CMEK

Puoi configurare le chiavi CMEK per un canale utilizzato da Eventarc Standard e criptare gli eventi che passano attraverso il canale.

L'attivazione di un canale con CMEK protegge i dati associati (ad esempio, l'argomento Pub/Sub utilizzato come livello di trasporto) utilizzando una chiave di crittografia a cui solo tu puoi accedere.

Tieni presente che quando attivi CMEK per il canale Google in un Google Cloud progetto, tutti gli attivatori Eventarc Standard per i tipi di eventi Google in quel progetto e in quella regione sono completamente criptati con la chiave CMEK. Le chiavi CMEK non possono essere applicate in base all'attivatore.

Prima di iniziare

Prima di utilizzare questa funzionalità in Eventarc, devi:

Console

  1. Enable the Cloud KMS and Eventarc APIs.

    Enable the APIs

  2. Crea un keyring.
  3. Crea una chiave per un keyring specificato.

gcloud

  1. Aggiorna i componenti gcloud.
    gcloud components update
  2. Abilita le API Cloud KMS ed Eventarc per il progetto che memorizzerà le chiavi di crittografia.
    gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
  3. Crea un keyring.
  4. Crea una chiave per un keyring specificato.

Per informazioni su tutti i flag e i possibili valori, esegui il comando con il flag --help.

Tieni presente che Cloud KMS ed Eventarc sono servizi regionalizzati. La regione della chiave Cloud KMS e del canale Eventarc protetto deve essere la stessa.

Concedi all'account di servizio Eventarc l'accesso a una chiave

Per concedere all'account di servizio Eventarc l'accesso alla chiave Cloud KMS, aggiungi l'account di servizio come entità della chiave e concedi all'account di servizio il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS:

Console

Quando attivi la chiave CMEK per un canale Google o di terze parti tramite la console, ti viene chiesto di concedere all'account di servizio il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS. Per ulteriori informazioni, in questo documento consulta Attivare CMEK per i tipi di eventi Google o Attivare CMEK per un canale di eventi di terze parti.

gcloud

 gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --member serviceAccount:SERVICE_AGENT_EMAIL \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Sostituisci quanto segue:

  • KEY_NAME: il nome della chiave. Ad esempio, my-key.
  • KEY_RING: il nome del mazzo di chiavi. Ad esempio, my-keyring.
  • LOCATION: la posizione della chiave. Ad esempio, us-central1.
  • SERVICE_AGENT_EMAIL: l'indirizzo email dell'account di servizio con il ruolo eventarc.serviceAgent.

    Ad esempio, service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com. Per ulteriori informazioni, consulta Agenti di servizio.

Attivare CMEK per i tipi di eventi Google

Gli attivatori Eventarc che indirizzano i tipi di eventi Google pubblicano gli eventi in un canale virtuale denominato canale Google, specifico per progetto e regione. Questo canale virtuale è disponibile in tutte le regioni di Eventarc.

Quando attivi CMEK per il canale Google in un Google Cloud progetto, tutti gli attivatori Eventarc per i tipi di eventi Google nel progetto e nella regione sono completamente criptati con la chiave CMEK. Puoi aggiungere più chiavi CMEK e associarle ciascuna a una regione specifica per il canale Google. Le chiavi CMEK non possono essere applicate in base all'attivatore.

Console

  1. Nella console Google Cloud, vai alla pagina Eventarc > Canali.

    Vai a Canali

  2. Fai clic su un canale con un provider Google.

  3. Nella pagina Modifica canale, seleziona la casella di controllo Usa chiave di crittografia gestita dal cliente (CMEK).

  4. Fai clic su Aggiungi chiave di crittografia.

  5. Seleziona una regione e, nell'elenco Chiave di crittografia CMEK, seleziona un insieme di chiavi che hai creato per la regione. Tieni presente che puoi aggiungere solo una chiave di crittografia per regione per un canale.

  6. (Facoltativo) Per inserire manualmente il nome della risorsa della chiave, nell'elenco CMEK chiave di crittografia, fai clic su Non vedi la tua chiave? Inserisci il nome risorsa della chiave e il nome della chiave nel formato specificato.

  7. Se richiesto, concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter all'account di servizio Eventarc con il ruolo eventarc.serviceAgent.

  8. (Facoltativo) Fai clic su Aggiungi chiave di crittografia per aggiungere un altro keyring che hai creato per una regione diversa.

  9. Fai clic su Salva.

gcloud

 gcloud eventarc google-channels update \
    --location=LOCATION \
    --crypto-key=KEY

Sostituisci quanto segue:

  • LOCATION: la posizione del canale Google da proteggere. Deve corrispondere alla posizione della chiave utilizzata.
  • KEY: il nome completo della chiave Cloud KMS nel formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Se crei attivatori Pub/Sub utilizzando i tuoi argomenti esistenti, per una protezione CMEK completa, ti consigliamo di configurare anche la chiave KMS nell'argomento. Per ulteriori informazioni, consulta la pagina sulla configurazione degli argomenti Pub/Sub.

Verificare l'utilizzo di Cloud KMS

Per verificare che il canale sia ora conforme a CMEK:

Console

  1. Nella console Google Cloud, vai alla pagina Eventarc > Trigger.

    Vai ai trigger

  2. Fai clic su un attivatore che elenca un' Google Cloud origine come Fornitore di eventi e una Regione che hai protetto utilizzando CMEK.

  3. Nella pagina Dettagli trigger, viene visualizzato lo stato Crittografia e il messaggio Events encrypted using Customer-managed encryption keys.

gcloud

 gcloud eventarc google-channels describe \
    --location=LOCATION

L'output dovrebbe essere simile al seguente:

 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 updateTime: '2022-06-28T17:24:56.365866104Z'

Il valore cryptokeyName mostra la chiave Cloud KMS utilizzata per il canale Google.

Attivare CMEK per un canale di terze parti

Un canale Eventarc per terze parti è una risorsa tramite la quale le entità nonGoogle Cloud che offrono un'origine Eventarc possono interagire con le destinazioni. Questo canale è specifico per una regione e puoi aggiungere una sola chiave per canale di terze parti.

Per attivare CMEK per un canale di terze parti:

Console

  1. Nella console Google Cloud, vai alla pagina Eventarc > Canali.

    Vai a Canali

  2. Fai clic su un canale con un provider di terze parti.

  3. Nella pagina Dettagli canale, fai clic su Modifica.

  4. Nella pagina Modifica canale, seleziona Chiave Cloud KMS in Crittografia.

  5. Nell'elenco Tipo di chiave, seleziona un metodo per gestire le chiavi.

    Puoi gestire le tue chiavi manualmente o utilizzare Autokey, che ti consente di generare chiavi automatizzate e chiavi on demand. Se l'opzione Autokey è disabilitata, significa che non è ancora integrata nel tipo di risorsa attuale.

  6. Nell'elenco Seleziona una chiave Cloud KMS, seleziona una chiave. Tieni presente che puoi aggiungere una sola chiave di crittografia per regione per un canale.

  7. (Facoltativo) Per inserire manualmente il nome della risorsa della chiave, nell'elenco Seleziona una chiave Cloud KMS, fai clic su Inserisci chiave manualmente e inserisci il nome della chiave nel formato specificato.

  8. Se richiesto, concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter all'agente di servizio Eventarc.

  9. Fai clic su Salva.

gcloud

 gcloud eventarc channels update CHANNEL_NAME \
    --location=LOCATION \
    --crypto-key=KEY

Sostituisci quanto segue:

  • CHANNEL_NAME: il nome del canale di terze parti. Per creare un nuovo canale di terze parti, consulta la sezione Creare un canale.
  • LOCATION: la posizione del canale di terze parti da difendere. Deve corrispondere alla posizione della chiave.
  • KEY: il nome della chiave Cloud KMS completamente qualificato nel formatoprojects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Verificare l'utilizzo di Cloud KMS

Per verificare che il canale sia ora conforme a CMEK:

Console

  1. Nella console Google Cloud, vai alla pagina Eventarc > Trigger.

    Vai ai trigger

  2. Fai clic su un trigger con un'origine di terze parti come Provider di eventi e su una Regione che hai protetto utilizzando CMEK.

  3. Nella pagina Dettagli trigger, lo stato della crittografia mostra il messaggio Events encrypted using Customer-managed encryption keys.

gcloud

 gcloud eventarc channels describe CHANNEL_NAME \
    --location=LOCATION

L'output dovrebbe essere simile al seguente:

 createTime: '2022-06-28T18:05:52.403999904Z'
 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 pubsubTopic: projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID
 state: ACTIVE
 uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
 updateTime: '2022-06-28T18:09:18.650727516Z'

Il valore cryptokeyName mostra la chiave Cloud KMS utilizzata per il canale di terze parti.

Disattivare CMEK

Puoi disattivare la protezione CMEK associata a un canale. Gli eventi che vengono pubblicati tramite questi canali sono comunque protetti da Google-owned and Google-managed encryption keys. Per eliminare la protezione CMEK associata a un canale:

Console

  1. Nella console Google Cloud, vai alla pagina Eventarc > Canali.

    Vai a Canali

  2. A seconda del tipo di canale, procedi nel seguente modo:

    Canale Google

    1. Fai clic su un canale con un provider Google.
    2. Nella pagina Modifica canale, posiziona il cursore del mouse sopra l'elenco Chiave di crittografia CMEK per visualizzare il pulsante Elimina elemento.
    3. Fai clic su Elimina articolo.
    4. Fai clic su Salva.

      Potresti dover aggiornare la pagina per attivare la casella di controllo Utilizza una chiave di crittografia gestita dal cliente (CMEK).

    Canale di terze parti

    1. Fai clic su un canale con un provider di terze parti.
    2. Nella pagina Dettagli canale, fai clic su Modifica.
    3. Nella pagina Modifica canale, seleziona Chiave di crittografia gestita da Google in Crittografia.
    4. Fai clic su Salva.

gcloud

A seconda del tipo di canale, procedi nel seguente modo:

Canale Google

gcloud eventarc google-channels \
    update --clear-crypto-key

Canale di terze parti

gcloud eventarc channels CHANNEL_NAME \
    update --clear-crypto-key

Applicare una policy dell'organizzazione CMEK

Eventarc è integrato con due limitazioni delle policy 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 Eventarc nella tua organizzazione:

Considerazioni sull'applicazione dei criteri dell'organizzazione

Prima di applicare i criteri dell'organizzazione CMEK, devi tenere presente quanto segue.

  • Preparati 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.

  • Valuta le risorse esistenti

    Le risorse esistenti non sono soggette ai criteri dell'organizzazione appena creati. Ad esempio, un criterio dell'organizzazione non viene applicato in modo retroattivo alle pipeline esistenti. Queste risorse sono ancora accessibili senza una chiave CMEK e, se applicabile, sono ancora criptate con le chiavi esistenti.

  • Verificare le autorizzazioni necessarie 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 le nuove risorse Eventarc

Puoi utilizzare il vincolo constraints/gcp.restrictNonCmekServices per richiedere l'utilizzo delle chiavi CMEK per proteggere le nuove risorse Eventarc 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

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

    Vai a Criteri dell'organizzazione

  2. Utilizzando Filtra, 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 criteri.

  5. Nella pagina Modifica criterio, in Origine criterio, seleziona Sostituisci criterio della risorsa padre.

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

  7. Nell'elenco Valori criterio, seleziona Personalizzato.

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

  9. Nel campo Valori personalizzati, inserisci quanto segue:

    is:eventarc.googleapis.com
    
  10. Fai clic su Fine, quindi su Imposta criteri.

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:eventarc.googleapis.com

    Sostituisci PROJECT_ID con l'ID del progetto in cui stai applicando questa limitazione.

  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 un canale Eventarc Standard nel progetto. Il processo non va a buon fine se non specifichi una chiave Cloud KMS.

Limitare le chiavi Cloud KMS per un progetto Eventarc

Puoi utilizzare il vincolo constraints/gcp.restrictCmekCryptoKeyProjects per limitare le chiavi Cloud KMS che puoi utilizzare per proteggere una risorsa in un progetto Eventarc.

Ad esempio, puoi specificare una regola simile alla seguente: "Per le risorse Eventarc applicabili 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

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

    Vai a Criteri dell'organizzazione

  2. Utilizzando Filtra, 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 criteri.

  5. Nella pagina Modifica criterio, in Origine criterio, seleziona Sostituisci criterio della risorsa padre.

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

  7. Nell'elenco Valori criterio, seleziona Personalizzato.

  8. Nell'elenco Tipo di criterio, 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 criteri.

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 un canale Eventarc Standard utilizzando una chiave Cloud KMS di un altro progetto. Il processo non andrà a buon fine.

Disattivazione e attivazione delle chiavi Cloud KMS

Una versione della chiave memorizza il materiale della chiave di crittografia utilizzato per criptare, decriptare, firmare e verificare i dati. Puoi disattivare questa versione della chiave in modo che non sia possibile accedere ai dati criptati con la chiave.

Quando Eventarc non riesce ad accedere alle chiavi Cloud KMS, la pubblicazione di eventi con i canali non va a buon fine con errori FAILED_PRECONDITION e l'invio di eventi si interrompe. Puoi attivare una chiave nello stato Disattivata in modo da poter accedere nuovamente ai dati criptati.

Disattivare le chiavi Cloud KMS

Per impedire a Eventarc di utilizzare la chiave per criptare o decriptare i dati sugli eventi, svolgi una delle seguenti operazioni:

Sebbene nessuna delle due operazioni garantisca la revoca immediata dell'accesso, le modifiche di Identity and Access Management (IAM) in genere si propagano più velocemente. Per ulteriori informazioni, consulta Coerenza delle risorse Cloud KMS e Propagazione della modifica di accesso.

Riattivare le chiavi Cloud KMS

Per riprendere l'invio e la pubblicazione degli eventi, ripristina l'accesso a Cloud KMS.

Prezzi

Questa integrazione non comporta costi aggiuntivi oltre alle operazioni principali, che vengono fatturate al tuo Google Cloud progetto. L'utilizzo di CMEK per un canale comporta l'addebito di costi per l'accesso al servizio Cloud KMS in base ai prezzi di Pub/Sub.

Per ulteriori informazioni sui prezzi più aggiornati, consulta Prezzi di Cloud KMS.

Passaggi successivi