Per impostazione predefinita, Workflows cripta i contenuti inattivi dei clienti. Workflows 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 Workflows. 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 monitorare l'utilizzo delle chiavi, visualizzare i log di controllo 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 di Workflows è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).
Puoi proteggere il tuo flusso di lavoro e i dati at-rest associati utilizzando una chiave di crittografia a cui solo tu puoi accedere e che puoi controllare e gestire utilizzando Cloud KMS.
Che cosa viene protetto con CMEK
Quando esegui il deployment di un flusso di lavoro, puoi specificare una chiave Cloud KMS. Questa chiave viene utilizzata per criptare il flusso di lavoro e le relative esecuzioni:
Un flusso di lavoro richiede un file di origine contenente una definizione di flusso di lavoro valida. Questo file di origine viene criptato utilizzando la chiave.
Un'esecuzione del flusso di lavoro esegue la definizione attuale del flusso di lavoro (una revisione del flusso di lavoro specifica). Utilizzando la chiave associata alla revisione del flusso di lavoro al momento del suo deployment, il flusso di lavoro compilato, nonché eventuali dati di input, output ed esecuzione archiviati, vengono criptati. Sono inclusi gli argomenti di esecuzione, risultati, errori ed eccezioni, gli eventi Eventarc inviati, nonché le richieste e le risposte di callback e HTTP.
Prima di iniziare
Prima di utilizzare CMEK in Workflows, completa i seguenti passaggi:
Abilita le API.
Console
-
Enable the Cloud KMS and Workflows APIs.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- Aggiorna i componenti
gcloud
.gcloud components update
- Abilita le API Cloud KMS e Workflows per il progetto che memorizzerà le chiavi di crittografia.
gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
-
Cloud KMS genera Cloud Audit Logs quando le chiavi vengono attivate, disattivate o utilizzate dalle risorse Workflows per criptare e decriptare i dati. Assicurati che il logging sia abilitato per l'API Cloud KMS nel tuo progetto e che tu abbia deciso quali autorizzazioni e ruoli specifici per il logging si applicano al tuo caso d'uso. Per ulteriori informazioni, consulta le informazioni sui log di controllo di Cloud KMS.
Crea un keyring e una chiave Cloud KMS
Puoi creare un nuovo portachiavi o utilizzarne uno esistente. All'interno del keyring, puoi aggiungere una nuova chiave o utilizzare una chiave esistente.
Recuperare l'ID risorsa di una chiave Cloud KMS
L'ID risorsa di una chiave Cloud KMS è obbligatorio quando attivi la chiave CMEK per un flusso di lavoro. In questo documento, consulta Abilitare CMEK per un flusso di lavoro.
Console
Nella console Google Cloud, vai alla pagina Gestione delle chiavi.
Fai clic sul keyring che contiene la chiave.
Per la chiave di cui stai recuperando l'ID risorsa, fai clic su more_vert Altro.
Fai clic su Copia nome risorsa.
L'ID risorsa per la chiave viene copiato negli appunti. Il formato è simile al seguente:
projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Una chiave contiene zero o più versioni. L'ID risorsa per una versione della chiave è l'ID chiave, più una barra (
/
), più l'ID versione. Per elencare tutte le versioni di una chiave:- Fai clic sul nome della chiave.
- Per una versione specifica, fai clic su Altro.
- Fai clic su Copia nome risorsa.
gcloud
Elenca tutte le chiavi di un determinato mazzo di chiavi:
gcloud kms keys list --keyring RING_NAME --location LOCATION
Sostituisci quanto segue:
RING_NAME
: il nome del keyringLOCATION
: la regione del keyring
L'output include l'ID risorsa per ogni chiave. Ad esempio:
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
Una chiave ha zero o più versioni. L'ID risorsa di una versione della chiave è costituito dall'ID chiave, da una barra (
/
) e dall'ID versione. Elenca tutte le versioni per una chiave:gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME
L'output include l'ID risorsa per ogni versione della chiave. Ad esempio:
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/2
Concedi all'agente di servizio Workflows l'accesso alla chiave
Devi concedere all'agente di servizio Workflows il ruolo IAM Autore crittografia/decrittografia CryptoKey Cloud KMS in modo che possa accedere alla chiave Cloud KMS:
Console
Quando attivi la chiave CMEK per un flusso di lavoro tramite la console, ti viene chiesto di concedere il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS all'account di servizio. Per ulteriori informazioni, consulta Abilitare CMEK per un flusso di lavoro in questo documento.
gcloud
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring RING_NAME \ --location LOCATION \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Sostituisci quanto segue:
KEY_NAME
: il nome della chiave. Ad esempio,my-key
.RING_NAME
: il nome del keyring. Ad esempio,my-keyring
.LOCATION
: la posizione della chiave. Ad esempio,us-central1
.PROJECT_NUMBER
: il numero del tuo progetto Google Cloud. Puoi trovare il numero del progetto nella pagina Welcome della console Google Cloud o eseguendo il seguente comando:export PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format="value(projectNumber)"
Se l'agente di servizio dispone del ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter
, un flusso di lavoro nel progetto può criptare e decriptare i dati utilizzando la chiave CMEK. Se revochi questo ruolo o se disattivi o distruggi la chiave CMEK, non potrai accedere ai dati. In questo documento, consulta la sezione Disattivare Cloud KMS.
Attivare CMEK per un flusso di lavoro
Quando crei un flusso di lavoro o lo aggiorni in un secondo momento, puoi specificare la chiave Cloud KMS che il flusso di lavoro deve utilizzare per la crittografia dei dati.
Console
Nella console Google Cloud, vai alla pagina Flussi di lavoro.
Fai clic sul nome del flusso di lavoro da aggiornare.
Viene visualizzata la pagina Dettagli flussi di lavoro.
Fai clic su
Modifica.Seleziona Chiave Cloud KMS.
Seleziona un Tipo di chiave.
Puoi gestire le tue chiavi manualmente o utilizzare Autokey, che ti consente di generare keyring e chiavi on demand. Se l'opzione Autokey è disabilitata, significa che non è ancora integrata nel tipo di risorsa attuale.
Nell'elenco Seleziona una chiave Cloud KMS, seleziona o filtra per una chiave Cloud KMS.
(Facoltativo) Per inserire manualmente il nome della risorsa della chiave, nell'elenco Seleziona una chiave gestita dal cliente, fai clic su Inserisci chiave manualmente e inserisci il nome della risorsa della chiave nel formato specificato.
Se richiesto, concedi il ruolo
cloudkms.cyptoKeyEncrypterDecrypter
all'account di servizio Workflows con il ruoloworkflows.serviceAgent
.Fai clic su Avanti.
Per salvare le modifiche ed eseguire il deployment del flusso di lavoro aggiornato, fai clic su Esegui il deployment.
gcloud
gcloud workflows deploy WORKFLOW_NAME \ --source=SOURCE_FILE \ --kms-key=KEY \ --location LOCATION \ --service-account=SERVICE_ACCOUNT
Sostituisci quanto segue:
WORKFLOW_NAME
: il nome del flusso di lavoroSOURCE_FILE
: il file di origine del flusso di lavoro con un'estensioneyaml
per un file YAML o con un'estensionejson
per un file JSON; ad esempio,myWorkflow.yaml
.KEY
: l'ID risorsa della chiave nel formatoprojects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
. Puoi recuperare l'ID chiave.LOCATION
: la posizione del flusso di lavoroSERVICE_ACCOUNT
: l'account di servizio utilizzato dal tuo flusso di lavoro per accedere ad altri servizi Google Cloud, ad esempioSERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com
. Ti consigliamo vivamente di utilizzare un account di servizio con i privilegi minimi necessari per accedere alle risorse richieste. Se lasciato vuoto, viene utilizzato l'account di servizio predefinito. Per saperne di più, consulta Concedere un'autorizzazione dei flussi di lavoro per l'accesso alle risorse Google Cloud.
Tieni presente quanto segue:
- Le revisioni e le esecuzioni dei flussi di lavoro vengono criptate con la chiave specificata al momento del deployment. Le risorse criptate in precedenza con una chiave precedente rimangono criptate con quella chiave precedente. Se un flusso di lavoro viene modificato in un secondo momento e viene specificata una nuova chiave, la revisione del flusso di lavoro viene criptata con la nuova chiave e le eventuali esecuzioni successive utilizzeranno la nuova chiave.
- Le revisioni ed esecuzioni dei flussi di lavoro non CMEK precedentemente criptati rimangono non criptate.
- Se disattivi CMEK per una revisione del flusso di lavoro, tutte le esecuzioni successive vengono create senza crittografia CMEK. In questo documento, consulta Disattivare CMEK per un flusso di lavoro. Le revisioni e le esecuzioni dei flussi di lavoro esistenti rimangono criptate con le chiavi con cui sono state criptate in precedenza.
Verifica l'integrazione di Cloud KMS
Puoi verificare l'integrazione di CMEK visualizzando i metadati di un flusso di lavoro.
Console
Nella console Google Cloud, vai alla pagina Flussi di lavoro.
Fai clic sul nome del flusso di lavoro da verificare.
Viene visualizzata la pagina Dettagli flussi di lavoro.
Fai clic sulla scheda Dettagli.
Il valore Crittografia mostra l'ID risorsa della chiave Cloud KMS utilizzata per proteggere il flusso di lavoro e la relativa esecuzione.
gcloud
gcloud workflows describe WORKFLOW_NAME \ --location=LOCATION
L'output dovrebbe essere simile al seguente:
createTime: '2022-08-10T19:57:58.233177709Z' cryptoKeyName: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME name: projects/PROJECT_NAME/locations/LOCATION/workflows/WORKFLOW_NAME revisionCreateTime: '2022-11-18T19:44:04.933633237Z' revisionId: 000009-8be serviceAccount: projects/PROJECT_NAME/serviceAccounts/SA_NAME@PROJECT_NAME.iam.gserviceaccount.com sourceContents: [...] state: ACTIVE updateTime: '2022-11-18T19:44:05.171793128Z'
Il valore cryptokeyName
è l'ID risorsa della chiave Cloud KMS utilizzata per proteggere il flusso di lavoro e la relativa esecuzione.
Disattivare CMEK per un flusso di lavoro
Puoi disattivare CMEK per un flusso di lavoro in modo che non utilizzi più la chiave Cloud KMS associata.
Console
Nella console Google Cloud, vai alla pagina Flussi di lavoro.
Fai clic sul nome del flusso di lavoro da aggiornare.
Viene visualizzata la pagina Dettagli flussi di lavoro.
Fai clic su
Modifica.Per deselezionare il pulsante di opzione Chiave Cloud KMS, seleziona Chiave di crittografia gestita da Google.
Fai clic su Avanti.
Per salvare le modifiche ed eseguire il deployment del flusso di lavoro aggiornato, fai clic su Esegui il deployment.
gcloud
gcloud workflows deploy WORKFLOW_NAME \ --source=SOURCE_FILE \ --clear-kms-key \ --service-account=SERVICE_ACCOUNT
In questo modo, CMEK viene disattivato per la revisione del flusso di lavoro corrente e le eventuali esecuzioni successive vengono create senza crittografia CMEK. Le revisioni e le esecuzioni dei flussi di lavoro esistenti rimangono criptate con le chiavi con cui sono state criptate in precedenza.
Disattivare Cloud KMS
Se vuoi revocare l'accesso ai dati per il tuo flusso di lavoro o le sue esecuzioni, puoi scegliere una delle seguenti opzioni per disattivare Cloud KMS:
Disattiva o elimina la versione chiave primaria della chiave di crittografia gestita dal cliente. La disattivazione di una versione della chiave CMEK sospende l'accesso a tutti i dati protetti da quella versione della chiave. L'eliminazione di una versione della chiave è la controparte permanente di questa azione. Entrambi influiscono solo sui flussi di lavoro e sulle loro esecuzioni associati alla chiave specifica. Non puoi creare nuove esecuzioni o visualizzare le risorse associate alla chiave disattivata o eliminata. Eventuali esecuzioni attive non andranno a buon fine con un messaggio di errore corrispondente.
Rimuovi il ruolo IAM
cloudkms.cryptoKeyEncrypterDecrypter
dall'agente di servizio Workflows. Ciò influisce su tutti i flussi di lavoro nel progetto Google Cloud che supportano la crittografia utilizzando CMEK. Non puoi creare nuovi flussi di lavoro ed esecuzioni integrati con CMEK o visualizzare risorse criptate con CMEK. Eventuali esecuzioni attive non andranno a buon fine con un messaggio di errore corrispondente.
Sebbene nessuna delle due operazioni garantisca la revoca immediata dell'accesso, le modifiche IAM in genere si propagano più rapidamente. Per ulteriori informazioni, consulta Coerenza delle risorse Cloud KMS e Propagazione della modifica di accesso.
Risoluzione dei problemi
Potresti riscontrare errori quando utilizzi Cloud KMS con Workflows. La tabella seguente descrive i diversi problemi e come risolverli.
Problema | Descrizione |
---|---|
L'autorizzazione cloudkms.cryptoKeyVersions.useToEncrypt è
stata negata |
La chiave Cloud KMS fornita non esiste o l'autorizzazione non è configurata correttamente.
Soluzione:
|
La versione della chiave non è attivata | La versione della chiave Cloud KMS fornita è stata disattivata.
Soluzione: riattiva la versione della chiave Cloud KMS. |
La regione del portachiavi non corrisponde alla risorsa da proteggere | La regione del keyring KMS fornita è diversa dalla regione del
flusso di lavoro.
Soluzione: utilizza un portachiavi Cloud KMS e un flusso di lavoro protetto della stessa regione. Tieni presente che possono trovarsi in progetti diversi. Per ulteriori informazioni, consulta Località Cloud KMS e Località dei flussi di lavoro. |
Il limite di quota di Cloud KMS è stato superato | Hai raggiunto il limite di quota per le richieste Cloud KMS.
Soluzione: limita il numero di chiamate Cloud KMS o aumenta il limite di quota. Per ulteriori informazioni, consulta Quote di Cloud KMS. |
Come viene gestito lo stato di una chiave non disponibile
Se per qualche motivo Cloud KMS non è disponibile, Workflows potrebbe non essere in grado di recuperare lo stato della chiave da Cloud KMS.
Se lo stato della chiave non è disponibile, il flusso di lavoro o la relativa esecuzione restituiranno un valore state: UNAVAILABLE
e dettagli correlati nel campo stateError
.
Se lo stato della chiave non è disponibile durante l'esecuzione di un flusso di lavoro (ad esempio, un'autorizzazione viene revocata durante un callback), si verifica un errore di runtime, che restituisce un valore state: FAILED
e dettagli correlati nel campo error
.
Prezzi
Questa integrazione non comporta costi aggiuntivi oltre alle operazioni sulle chiavi, che vengono fatturate al tuo progetto Google Cloud. Per informazioni sui prezzi attuali, consulta Prezzi di Cloud KMS.