Proteggi i tuoi dati con CMEK (2ª generazione)

Puoi utilizzare Cloud Key Management Service chiavi di crittografia gestite dal cliente (CMEK) per proteggere Cloud Functions e relative dati at-rest. Queste chiavi sono 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 di cui tu abbia il pieno controllo. Questo tipo di crittografia consente soddisfare i requisiti di conformità in alcuni settori, ad esempio i servizi di machine learning. 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 quando si utilizza un 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 viene eseguito il deployment.

Il processo di compilazione della funzione stesso è protetto da una chiave temporanea in modo univoco generate per ogni build. Consulta Conformità CMEK in Cloud Build per ulteriori informazioni informazioni. Inoltre, tieni presente quanto segue:

  • Metadati dei file, ad esempio percorsi del file system o timestamp delle modifiche non è criptato.

  • Se una chiave viene disabilitata, non è possibile eseguire il deployment dell'immagine container e di istanze gestite non possono essere avviate.

  • La protezione CMEK di Cloud Functions si applica solo alle alle risorse di Cloud Functions; sei responsabile della protezione dei dati risorse gestite da te, come i tuoi repository di codice sorgente, canali di eventi che risiedono nel progetto del cliente o in qualsiasi servizio utilizzato funzioni.

La configurazione di CMEK per Cloud Functions prevede quanto segue:

  • Concessione dell'accesso alla chiave agli account di servizio necessari:

    • Per tutte le funzioni, devi concedere le funzioni Cloud Functions, Accesso alla chiave degli account di servizio Artifact Registry e Cloud Storage.

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

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

  • Abilitazione di CMEK per la funzione.

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

Questi passaggi sono descritti più dettagliatamente di seguito.

Prima di iniziare

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

  2. Crea un repository Artifact Registry con CMEK abilitata. Devi usare lo stesso chiave per il repository Artifact Registry come fai quando abiliti CMEK per personalizzata.

  3. Per le funzioni basate su eventi, segui i passaggi di configurazione aggiuntivi delineato in Abilita CMEK per un canale Google.

Concessione dell'accesso alla chiave agli account di servizio

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)

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

  • 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 dell'account di servizio della chiave e concedere all'account di servizio Ruolo Cloud KMS CryptoKey Encrypter/Decrypter:

Console

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

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

  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 di tutte e tre le entità account di servizio descritti in precedenza per assegnare le autorizzazioni a tutti e tre contemporaneamente.

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

  7. Fai clic su Salva.

gcloud

Per ogni account di servizio discusso in precedenza, 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 del l'account di servizio.

Abilitazione di CMEK per funzione

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

Per abilitare 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 per cui vuoi abilitare CMEK.

  3. Fai clic su Modifica.

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

  5. Seleziona la scheda Sicurezza e repository di immagini.

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

  7. Seleziona la chiave scelta dal menu a discesa.

  8. In Località contenitore, seleziona Artifact Registry gestito dal cliente.

  9. Nel menu a discesa Artifact Registry, seleziona l'opzione protetta da CMEK repository Git.

  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 abilitare CMEK attiva. 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: Artifact Registry completo nome del repository, nel formato seguente: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

  • YOUR_SOURCE_LOCATION: quando attivi CMEK per funzione preesistenti, assicurati che il codice sorgente desiderato venga di nuovo deployment specificando questo parametro in modo esplicito.

  • FLAGS...: flag aggiuntivi che potrebbero essere per il deployment della funzione, in particolare per la creazione dei deployment. Per i dettagli, vedi Esegui 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 CMEK protezione dei dati. Non puoi specificare una determinata versione della chiave da utilizzare durante l'abilitazione CMEK per le tue funzioni.

Se una chiave viene eliminata disattivato o le relative autorizzazioni richieste sono 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 quelle nuove avrà esito negativo finché Cloud Functions non ha accesso alla chiave.

Test della protezione CMEK

Per verificare che la protezione CMEK funzioni, puoi disattivare la chiave che hai utilizzato per abilitare CMEK per una funzione, quindi prova ad attivare la funzione:

  1. Disattivare la chiave usata per proteggere la tua funzione.

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

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

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

La protezione CMEK della funzione è stata confermata.

Passaggi successivi