Proteggi i tuoi dati con CMEK

Puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) di Cloud Key Management Service per proteggere Cloud Functions e i relativi dati at-rest. Queste chiavi vengono create e gestite tramite Cloud KMS e archiviate come chiavi software in un cluster HSM oppure esternamente.

Il deployment di una funzione con una CMEK protegge i dati associati utilizzando una chiave di crittografia sotto il tuo controllo completo. Questo tipo di crittografia consente di soddisfare i requisiti di conformità in determinati settori, ad esempio nei servizi finanziari. Poiché la chiave è di tua proprietà e non è controllata da Google, nessuno (incluso te) può accedere ai dati protetti da queste chiavi di crittografia quando le chiavi vengono disabilitate o eliminate.

I seguenti tipi di dati di Cloud Functions vengono criptati durante l'utilizzo di una CMEK:

  • Codice sorgente della funzione caricato per il deployment e archiviato da Google in Cloud Storage, utilizzato nel processo di compilazione.
  • I risultati del processo di compilazione delle funzioni, tra cui:
    • L'immagine container creata dal codice sorgente della funzione.
    • Ogni istanza della funzione di cui è stato eseguito il deployment.
  • Dati dei dati inattivi per i canali di trasporto degli eventi interni (solo 1ª generazione).

Il processo di compilazione delle funzioni è protetto da una chiave temporanea generata in modo univoco per ogni build. Per ulteriori informazioni, consulta Conformità CMEK in Cloud Build. Inoltre, tieni presente quanto segue:

  • I metadati dei file, ad esempio i percorsi del file system o i timestamp delle modifiche, non sono criptati.

  • Se una chiave viene disabilitata, non sarà possibile eseguire il deployment dell'immagine container e non sarà possibile avviare nuove istanze.

  • La protezione CMEK di Cloud Functions si applica solo alle risorse Cloud Functions gestite da Google; sei responsabile della protezione dei dati e delle risorse gestite da te, ad esempio i repository del codice sorgente, i canali di eventi che risiedono nel progetto del cliente (solo 2ª generazione) o qualsiasi servizio utilizzato dalle tue funzioni.

La configurazione di CMEK per Cloud Functions prevede quanto segue:

  • Concedendo agli account di servizio necessari l'accesso alla chiave:

    • Per tutte le funzioni, devi concedere agli account di servizio Cloud Functions, Artifact Registry e Cloud Storage l'accesso alla chiave.

    • Solo per Cloud Functions (2ª generazione) basato su eventi, devi anche completare la configurazione CMEK per Cloud Run ed Eventarc.

  • Creazione di un repository Artifact Registry protetto da CMEK per archiviare le immagini delle funzioni.

  • Abilitazione di CMEK sulla funzione.

  • Facoltativamente, abilita i criteri dell'organizzazione CMEK per applicare tutte le nuove funzioni alla conformità a CMEK.

Questi passaggi sono descritti in maggiore dettaglio di seguito.

Prima di iniziare

  1. Crea una chiave di una singola regione da utilizzare per criptare le funzioni. Per informazioni su come creare una chiave, consulta Creazione di chiavi di crittografia simmetriche.

  2. Crea un repository Artifact Registry con CMEK abilitata. Devi utilizzare per il repository Artifact Registry la stessa chiave utilizzata per abilitare CMEK per una funzione.

  3. Per le funzioni di 2ª generazione basate su eventi, segui i passaggi di configurazione aggiuntivi descritti in Abilitare CMEK per un canale Google.

Concedere agli account di servizio l'accesso alla chiave

Per tutte le funzioni, devi concedere ai seguenti account di servizio l'accesso alla chiave:

  • Agente di servizio Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)

  • Agente di servizio Artifact Registry (service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com)

  • Agente di servizio Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Solo per 2ª generazione, devi concedere anche l'accesso alla chiave ai seguenti account di servizio:

  • Agente di servizio Cloud Run (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)

  • Agente di servizio Eventarc (service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com)

Per concedere a questi account di servizio l'accesso alla chiave, aggiungi ogni account di servizio come entità della chiave, quindi concedi all'account di servizio il ruolo Cloud KMS CryptoKey Encrypter/Decrypter:

Console

  1. Vai alla pagina Cloud Key Management Service nella console Google Cloud:
    Vai alla pagina Cloud KMS

  2. Fai clic sul nome del keyring che contiene la chiave desiderata.

  3. Fai clic sul nome della chiave per visualizzarne i dettagli.

  4. Nella scheda Autorizzazioni, fai clic su Concedi l'accesso.

  5. Nel campo Nuove entità, inserisci gli indirizzi email dei tre account di servizio indicati sopra per assegnare le autorizzazioni a tutti e tre contemporaneamente.

  6. Nel menu a discesa Seleziona un ruolo, seleziona Autore crittografia/decriptazione CryptoKey Cloud KMS.

  7. Fai clic su Salva.

gcloud

Per ogni account di servizio indicato sopra, esegui questo comando:

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

Sostituisci quanto segue:

  • KEY: il nome della chiave. Ad esempio, my-key.

  • KEY_RING: il nome del keyring. Ad esempio, my-keyring.

  • LOCATION: la posizione della chiave. Ad esempio, us-central1.

  • SERVICE_AGENT_EMAIL: l'indirizzo email dell'account di servizio.

Abilitazione di CMEK per una funzione

Dopo aver configurato un repository Artifact Registry con CMEK abilitata e concesso a Cloud Functions l'accesso alla tua chiave, puoi abilitare la funzione CMEK.

Per attivare CMEK per una funzione:

Console

  1. Vai alla pagina Cloud Functions nella console Google Cloud:
    Vai alla pagina Cloud Functions

  2. Fai clic sul nome della funzione su cui vuoi attivare CMEK.

  3. Fai clic su Modifica.

  4. Fai clic su Runtime, build... per espandere le opzioni di configurazione avanzate.

  5. Seleziona la scheda Repository per sicurezza e immagini.

  6. Nella sezione Crittografia, seleziona Chiave di crittografia gestita dal cliente (CMEK).

  7. Seleziona la chiave scelta dal menu a discesa.

  8. In Posizione container, seleziona Artifact Registry gestito dal cliente.

  9. Nel menu a discesa Artifact Registry, seleziona il repository protetto da CMEK.

  10. Tocca Avanti.

  11. Fai clic su Esegui il deployment.

gcloud

Esegui questo comando.

gcloud functions deploy FUNCTION \
[--gen2] \
--kms-key=KEY \
--docker-repository=REPOSITORY \
--source=YOUR_SOURCE_LOCATION
FLAGS...

Sostituisci quanto segue:

  • FUNCTION: il nome della funzione su cui attivare CMEK. Ad esempio, cmek-function.

  • KEY: il nome completo della chiave nel seguente formato: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.

  • REPOSITORY: il nome del repository Artifact Registry completo, nel seguente formato: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

  • YOUR_SOURCE_LOCATION: quando abiliti CMEK per una funzione preesistente, assicurati che venga eseguito nuovamente il deployment del codice sorgente previsto specificando questo parametro in modo esplicito.

  • FLAGS...: flag aggiuntivi che potrebbero essere necessari per eseguire il deployment della funzione, in particolare per la creazione di deployment. Per maggiori dettagli, consulta Eseguire il deployment di una funzione Cloud Functions.

CMEK è abilitata per la funzione.

Tieni presente che Cloud Functions utilizza sempre la versione primaria di una chiave per la protezione tramite CMEK. Non puoi specificare una particolare versione della chiave da utilizzare durante l'abilitazione di CMEK per le funzioni.

Se una chiave viene eliminata o disabilitata oppure se le autorizzazioni necessarie per la chiave vengono revocate, le istanze attive delle funzioni protette da quella chiave non vengono arrestate. Le esecuzioni delle funzioni già in corso continueranno a essere eseguite, ma le nuove esecuzioni non riusciranno purché Cloud Functions non abbia accesso alla chiave.

Test della protezione CMEK

Per verificare che la protezione CMEK funzioni, puoi disabilitare la chiave utilizzata per abilitare CMEK per una funzione, quindi provare ad attivare la funzione:

  1. Disattiva il tasto utilizzato per proteggere la funzione.

  2. Prova a visualizzare il codice sorgente associato a questa funzione. Il tentativo non dovrebbe andare a buon fine.

  3. Prova ad attivare la funzione protetta da CMEK. Il tentativo non dovrebbe andare a buon fine.

  4. Dopo aver verificato il funzionamento della protezione CMEK, abilita la chiave.

La protezione CMEK della funzione è stata confermata.

Passaggi successivi