Proteggi i tuoi dati con CMEK (1ª gen.)
Puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) di Cloud Key Management Service per proteggere le funzioni Cloud Run e i relativi dati at-rest. Queste chiavi vengono create e gestite tramite Cloud KMS e memorizzate come chiavi software, in un cluster HSM o esternamente.
Il deployment di una funzione con una CMEK protegge i dati associati utilizzando una chiave di crittografia che è sotto il tuo pieno controllo. Questo tipo di crittografia ti consente di soddisfare i requisiti di conformità in determinati settori, come i servizi finanziari. Poiché la chiave è di tua proprietà e non è controllata da Google, nessuno (neanche tu) può accedere ai dati protetti da queste chiavi di crittografia quando le chiavi vengono disattivate o eliminate.
I seguenti tipi di dati delle funzioni Cloud Run 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.
- Dati at-rest per i canali di trasporto degli eventi interni.
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 delle funzioni Cloud Run con CMEK si applica solo alle risorse delle funzioni Cloud Run gestite da Google. Sei responsabile della protezione dei dati e delle risorse gestite da te, come i repository di codice sorgente o i servizi utilizzati dalle tue funzioni.
La configurazione di CMEK per Cloud Run Functions comporta quanto segue:
Concessione dell'accesso alla chiave ai service account necessari:
- Per tutte le funzioni, devi concedere l'accesso alla chiave ai service account Cloud Run Functions, Artifact Registry e Cloud Storage.
Creazione di un repository Artifact Registry protetto da CMEK per archiviare le immagini delle funzioni.
Abilitazione di CMEK per la funzione.
Facoltativamente, abilita le policy dell'organizzazione per le chiavi CMEK per assicurarti che tutte le nuove funzioni siano conformi a CMEK.
Questi passaggi sono descritti in dettaglio di seguito.
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.
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)
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 sopra per assegnare le autorizzazioni a tutti e tre gli account contemporaneamente.
Nel menu a discesa 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 alle funzioni Cloud Run, puoi abilitare CMEK per la tua funzione.
Per abilitare CMEK per una funzione:
Console
Vai alla pagina delle funzioni Cloud Run nella console Google Cloud :
Vai alla pagina delle funzioni Cloud RunFai clic sul nome della funzione per cui vuoi abilitare CMEK.
Fai clic su Modifica.
Fai clic su Impostazioni di runtime, build, connessioni e sicurezza per espandere le opzioni di configurazione avanzate.
Seleziona la scheda Repository per sicurezza e immagini.
Nella sezione Crittografia, seleziona Chiave di crittografia gestita dal cliente (CMEK).
Seleziona la chiave che preferisci dal menu a discesa.
In Località container, seleziona Artifact Registry gestito dal cliente.
Nel menu a discesa Artifact Registry, seleziona il repository protetto da CMEK.
Fai clic su Avanti.
Fai clic su Esegui il deployment.
gcloud
Esegui questo comando.
gcloud functions deploy FUNCTION \ --no-gen2 \ --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.
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.
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 provare ad attivare la funzione:
Disattiva la chiave utilizzata per proteggere la tua funzione.
Prova a visualizzare il codice sorgente associato a questa funzione. Il tentativo non dovrebbe riuscire.
Prova ad attivare la funzione protetta da CMEK. Il tentativo non dovrebbe riuscire.
Dopo aver verificato che la protezione CMEK funziona, attiva la chiave.
La protezione CMEK della funzione è ora confermata.
Passaggi successivi
- Scopri come ruotare le chiavi.
- Scopri di più sulla crittografia predefinita di Google.
- Scopri di più su CMEK.
- Scopri di più sulle policy dell'organizzazione per le chiavi CMEK.