Proteggi i dati con CMEK
Questa pagina fornisce informazioni aggiuntive su come proteggere i dati con chiavi di crittografia gestite dal cliente (CMEK) per le funzioni create utilizzando i comandi gcloud functions o l'API Cloud Functions v2.
Per una descrizione dettagliata di CMEK, inclusa la configurazione manuale, l'utilizzo di Autokey e il test della protezione CMEK, consulta la documentazione di Cloud Run.
I seguenti tipi di dati Cloud Run Functions vengono criptati quando utilizzi 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 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 è protetto da una chiave temporanea generata in modo univoco per ogni build. Per saperne di più, consulta Conformità di 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 sono criptati.
Se una chiave viene disattivata, non è possibile eseguire il deployment dell'immagine container, né avviare nuove istanze.
La protezione di Cloud Run Functions con CMEK si applica solo alle risorse Cloud Run Functions gestite da Google. Sei responsabile della protezione dei dati e delle risorse gestite da te, come i repository di codice sorgente, i canali di eventi che si trovano nel progetto cliente o i servizi utilizzati dalle tue funzioni.
Prima di iniziare
Crea una chiave a regione singola da utilizzare per criptare le tue funzioni. Per scoprire come creare una chiave, consulta Creazione di chiavi di crittografia simmetriche.
Crea un repository Artifact Registry con CMEK abilitata. Per il repository Artifact Registry devi utilizzare la stessa chiave che utilizzi quando abiliti CMEK per una funzione.
Per le funzioni basate su eventi, segui i passaggi di configurazione aggiuntivi descritti in Abilita CMEK per un canale Google.
Concessione dell'accesso alla chiave ai service account
Per tutte le funzioni, devi concedere l'accesso alla chiave ai seguenti service account:
Service agent Cloud Run Functions (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)Service agent Artifact Registry (
service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com)Service agent Cloud Storage (
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)Service agent Cloud Run (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)Service agent Eventarc (
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com)
Per concedere l'accesso alla chiave a questi service account, aggiungi ogni service account come entità della chiave e poi concedi al service account il ruolo Cloud KMS CryptoKey Encrypter/Decrypter:
Console
Vai alla pagina Cloud Key Management Service nella console Google Cloud :
Vai alla pagina Cloud KMSFai clic sul nome delle chiavi automatizzate contenenti la chiave scelta.
Fai clic sul nome della chiave per visualizzarne i dettagli.
Nella scheda Autorizzazioni, fai clic su Concedi l'accesso.
Nel campo Nuove entità, inserisci gli indirizzi email di tutti e tre i service account indicati in precedenza per assegnare le autorizzazioni a tutti e tre gli account contemporaneamente.
Nel menu Seleziona un ruolo, seleziona Cloud KMS CryptoKey Encrypter/Decrypter.
Fai clic su Salva.
gcloud
Per ogni service account menzionato 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 delle chiavi automatizzate. Ad esempio,my-keyring.LOCATION: la posizione della chiave. Ad esempio,us-central1.SERVICE_AGENT_EMAIL: l'indirizzo email del service account.
Abilitazione di CMEK per una funzione
Dopo aver configurato un repository Artifact Registry con CMEK abilitata e aver concesso l'accesso alla chiave a Cloud Run Functions, puoi abilitare CMEK per la funzione.
Per abilitare CMEK per una funzione, esegui questo comando:
gcloud functions deploy FUNCTION \ --kms-key=KEY \ --docker-repository=REPOSITORY \ --source=YOUR_SOURCE_LOCATION FLAGS...
Sostituisci quanto segue:
FUNCTION: il nome della funzione per cui abilitare 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 completo del repository Artifact Registry, nel seguente formato:projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.YOUR_SOURCE_LOCATION: quando abiliti CMEK per una funzione preesistente, assicurati che venga rieseguito 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 deployment di creazione. Per i dettagli, consulta Esegui il deployment di una funzione Cloud Run.
CMEK è abilitata per la funzione. Facoltativamente, abilita le policy dell'organizzazione per le chiavi CMEK per assicurarti che tutte le nuove funzioni siano conformi a CMEK.
Tieni presente che Cloud Run Functions utilizza sempre la versione primaria di una chiave per la protezione CMEK. Non puoi specificare una versione della chiave particolare da utilizzare quando abiliti CMEK per le tue funzioni.
Se una chiave viene eliminata o disattivata oppure 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, ma le nuove esecuzioni non riusciranno finché Cloud Run Functions non avrà accesso alla chiave.