Proteggere i dati con CMEK

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

I seguenti tipi di dati delle funzioni Cloud Run vengono criptati quando si utilizza una chiave 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 della funzione, tra cui:
    • L'immagine container creata dal codice sorgente della funzione.
    • Ogni istanza della funzione di cui è stato eseguito il deployment.

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

  • I metadati dei file, come i percorsi del file system o i timestamp di modifica, non vengono criptati.

  • Se una chiave è disattivata, l'immagine del contenitore non può essere dispiattata e le nuove istanza non possono essere avviate.

  • La protezione CMEK delle funzioni Cloud Run si applica solo alle risorse delle funzioni Cloud Run gestite da Google. Sei responsabile della protezione dei dati e delle risorse gestite da te, ad esempio i repository di codice sorgente, i canali di eventi presenti nel progetto del cliente o qualsiasi servizio utilizzato dalle tue funzioni.

La configurazione di CMEK per le funzioni Cloud Run prevede quanto segue:

  • Concedi ai service account necessari l'accesso alla chiave:

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

    • Per le funzioni Cloud Run basate su eventi, devi anche completare la configurazione di CMEK per Cloud Run e Eventarc.

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

  • Attivare CMEK nella funzione.

  • Se vuoi, abilita le policy dell'organizzazione CMEK per obbligare tutte le nuove funzioni a essere conformi a CMEK.

Questi passaggi sono descritti in maggiore dettaglio di seguito.

Prima di iniziare

  1. Crea una chiave a regione singola da utilizzare per criptare le funzioni. Per scoprire come creare una chiave, consulta la pagina relativa alla creazione di chiavi di crittografia simmetrica.

  2. Crea un repository Artifact Registry con CMEK abilitato. Devi utilizzare la stessa chiave per il repository Artifact Registry che utilizzi per attivare la CMEK per una funzione.

  3. Per le funzioni basate su eventi, segui i passaggi di configurazione aggiuntivi illustrati in Attivare 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 Run 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)

Devi inoltre concedere l'accesso alla chiave ai seguenti service account:

  • 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 e poi 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 contenente la chiave scelta.

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

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

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

  6. Nel menu Seleziona un ruolo, seleziona Autore crittografia/decrittografia CryptoKey Cloud KMS.

  7. Fai clic su Salva.

gcloud

Per ogni account di servizio discusso in precedenza, esegui il seguente 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 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.

Attivazione di CMEK per una funzione

Dopo aver configurato un repository Artifact Registry con CMEK abilitato e aver concesso alle funzioni Cloud Run l'accesso alla chiave, puoi abilitare CMEK per la tua funzione.

Per attivare CMEK per una funzione:

Console

  1. Vai alla pagina Funzioni Cloud Run nella console Google Cloud:
    Vai alla pagina Funzioni Cloud Run

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

  3. Fai clic su Modifica.

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

  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 del contenitore, seleziona Artifact Registry gestito dal cliente.

  9. Nell'elenco a discesa Artifact Registry (Registro di artefatti), seleziona il repository protetto da CMEK.

  10. Fai clic su 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 per attivare CMEK. Ad esempio, cmek-function.

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

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

  • YOUR_SOURCE_LOCATION: quando attivi il CMEK per una funzione preesistente, assicurati che il codice sorgente previsto venga reimplementato specificando questo parametro esplicitamente.

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

CMEK è attivato per la funzione.

Tieni presente che Cloud Run Functions utilizza sempre la versione principale di una chiave per la protezione CMEK. Non puoi specificare una determinata versione della chiave da utilizzare quando attivi CMEK per le tue funzioni.

Se una chiave viene eliminata o disattivata o se le autorizzazioni richieste vengono revocate, le istanze attive delle funzioni protette da quella chiave non vengono arrestate. Le esecuzioni di funzioni già in corso continueranno a essere eseguite, ma le nuove esecuzioni non andranno a buon fine finché le funzioni Cloud Run non avranno accesso alla chiave.

Test della protezione CMEK

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

  1. Disattiva la chiave utilizzata per proteggere la funzione.

  2. Prova a visualizzare il codice sorgente associato a questa funzione. Il tentativo dovrebbe non riuscire.

  3. Prova a attivare la funzione protetta da CMEK. Il tentativo dovrebbe non riuscire.

  4. Dopo aver verificato che la protezione CMEK funziona, abilita la chiave.

La protezione CMEK della funzione è ora confermata.

Passaggi successivi