Utilizzo delle chiavi di crittografia gestite dal cliente

Per impostazione predefinita, Workflows cripta i dati archiviati inattivi. Google Cloud gestisce e gestisce questa crittografia predefinita per conto tuo senza altre azioni da parte tua.

Se hai requisiti normativi o di conformità specifici relativi alle chiavi che proteggono i tuoi dati, puoi utilizzare chiavi di crittografia gestite dal cliente (CMEK) per Workflows. Il flusso di lavoro e i dati at-rest associati sono tramite una chiave di crittografia a cui solo tu puoi accedere e a cui puoi accedere controllare e gestire con Cloud Key Management Service (Cloud KMS).

Cosa è protetto con CMEK

Quando esegui il deployment di un flusso di lavoro, puoi specificare una chiave Cloud KMS. Questa chiave viene utilizzato per criptare il flusso di lavoro e le sue esecuzioni:

  • Un flusso di lavoro richiede un file di origine che contiene un flusso di lavoro valido definizione di Kubernetes. Questo file di origine è criptato usando la chiave.

  • Un'esecuzione del flusso di lavoro esegue l'attuale definizione del flusso di lavoro (uno specifico revisione del flusso di lavoro). Utilizzando la chiave associata alla revisione del flusso di lavoro in deployment, il flusso di lavoro compilato, nonché qualsiasi esecuzione archiviata di input, output e runtime siano criptati. Sono inclusi argomenti di esecuzione, risultati, errori ed eccezioni; consegnato Eventi Eventarc; e di callback e HTTP.

Prima di iniziare

Prima di utilizzare CMEK in Workflows, completa i seguenti passaggi:

  1. Abilita le API.

    Console

    1. Enable the Cloud KMS and Workflows APIs.

      Enable the APIs

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      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.

    2. Aggiorna i componenti di gcloud.
      gcloud components update
      
    3. Abilita le API Cloud KMS e Workflows per il progetto in cui verranno archiviate le tue chiavi di crittografia.
      gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
      
  2. Cloud KMS produce Cloud Audit Logs quando le chiavi sono abilitate, disabilitato o utilizzato dalle risorse Workflows per criptare e decriptare e i dati di Google Cloud. Accertati che la registrazione è abilitata per l'API Cloud KMS nel tuo progetto e che hai deciso quali autorizzazioni e ruoli specifici del logging si applicano al tuo caso d'uso. Per maggiori informazioni le informazioni, vedi Informazioni sugli audit log di Cloud KMS.

Crea un keyring e una chiave di Cloud KMS

Puoi creare un nuovo keyring o utilizzarne uno esistente. All'interno del keyring, puoi aggiungere una nuova chiave o utilizzarne una esistente.

  1. Crea un keyring.

  2. Crea una chiave per un keyring specificato.

Recupera l'ID risorsa per una chiave Cloud KMS

L'ID risorsa per una chiave Cloud KMS è obbligatorio quando abiliti CMEK per un flusso di lavoro. In questo documento, vedi Abilita CMEK per un flusso di lavoro.

Console

  1. Nella console Google Cloud, vai alla pagina Gestione chiavi.

    Vai a Gestione delle chiavi

  2. Fai clic sul keyring che contiene la chiave.

  3. Per la chiave di cui stai recuperando l'ID risorsa, fai clic su Altro.

  4. Fai clic su Copia nome risorsa.

    L'ID risorsa per la chiave viene copiato negli appunti. Il suo formato è simile al seguente:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    
  5. Una chiave contiene zero o più versioni della chiave. L'ID risorsa di una chiave "versione" corrisponde all'ID della chiave, seguito da una barra (/), più l'ID versione. Elenco tutte le versioni di una chiave:

    1. Fai clic sul nome della chiave.
    2. Per una versione specifica, fai clic su Altro.
    3. Fai clic su Copia nome risorsa.

gcloud

  1. Elenca tutte le chiavi in un determinato keyring:

    gcloud kms keys list --keyring RING_NAME --location LOCATION
    

    Sostituisci quanto segue:

    • RING_NAME: il nome del keyring
    • LOCATION: 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
    
  2. Una chiave ha zero o più versioni della chiave. L'ID risorsa di una versione della chiave è l'ID della chiave, più una barra (/) e l'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 l'agente di servizio Workflows il Autore crittografia/decrittografia CryptoKey Cloud KMS il ruolo Identity and Access Management (IAM) per poter accedere a Cloud KMS chiave:

Console

Quando abiliti CMEK per un flusso di lavoro tramite la console, ti viene chiesto di concedi il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS al servizio . Per ulteriori informazioni, in questo documento vedi Abilita CMEK per un flusso di lavoro.

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 tuo progetto Google Cloud numero. Puoi trovare il numero del tuo progetto nella Ti diamo il benvenuto della console Google Cloud o eseguendo questo comando:

    export PROJECT=$(gcloud info --format='value(config.project)')
    gcloud projects describe ${PROJECT} --format="value(projectNumber)"
    

A condizione che l'agente di servizio disponga di roles/cloudkms.cryptoKeyEncrypterDecrypter , un flusso di lavoro nel tuo progetto può criptare e decriptare i relativi dati utilizzando chiave. Se revochi questo ruolo o se disabiliti o elimini la chiave CMEK, verrà non è possibile accedere ai dati. In questo documento, vedi Disabilita Cloud KMS.

Abilita CMEK per un flusso di lavoro

Quando crei un flusso di lavoro dopo averlo aggiornato, puoi specificare la chiave Cloud KMS per la crittografia dei dati.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic sul nome del flusso di lavoro da aggiornare.

    Viene visualizzata la pagina Dettagli flussi di lavoro.

  3. Clic Modifica:

  4. Seleziona Chiave di crittografia gestita dal cliente (CMEK).

  5. Nell'elenco Seleziona una chiave gestita dal cliente, seleziona o filtra per una Chiave Cloud KMS.

  6. (Facoltativo) Per inserire manualmente il valore nome risorsa della chiave, nell'elenco Seleziona una chiave gestita dal cliente, fai clic su Inserisci chiave manualmente e inserisci il nome risorsa della chiave nel nel formato specificato.

  7. Se richiesto, concedi il ruolo cloudkms.cyptoKeyEncrypterDecrypter alla Account di servizio Workflows con workflows.serviceAgent ruolo.

  8. Fai clic su Avanti.

  9. 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 lavoro
  • SOURCE_FILE: il file di origine del flusso di lavoro con un yaml un'estensione di file YAML o json per un file JSON; ad esempio myWorkflow.yaml.
  • KEY: ID risorsa della chiave nel formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Puoi recuperare l'ID chiave.

  • LOCATION: posizione del flusso di lavoro

  • SERVICE_ACCOUNT: l'account di servizio nel flusso di lavoro per accedere ad altri servizi Google Cloud; ad esempio SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com. Me Consigliamo vivamente di utilizzare un account di servizio con i privilegi minimi necessari per accedere alle risorse richieste. Se viene lasciato vuoto, l'account di servizio predefinito è in uso. Per ulteriori informazioni, vedi Concedi l'autorizzazione dei flussi di lavoro per l'accesso alle risorse Google Cloud.

Tieni presente quanto segue:

  • Le revisioni e le esecuzioni del flusso di lavoro vengono criptate con la chiave specificata l'orario del deployment; le risorse precedentemente criptate con una chiave precedente criptati con la chiave precedente. Se in seguito un flusso di lavoro viene modificato e chiave specifica, la revisione del flusso di lavoro viene criptata con la nuova chiave e tutte le esecuzioni successive utilizzeranno la nuova chiave.
  • Le revisioni ed esecuzioni dei flussi di lavoro con crittografia non CMEK in precedenza non rimangono criptato.
  • Se disabiliti CMEK per una revisione del flusso di lavoro, tutte le esecuzioni successive verranno creato senza la crittografia CMEK. In questo documento, vedi Disabilita CMEK per un flusso di lavoro. Revisioni dei flussi di lavoro e rimangono criptate con le chiavi che erano usate in precedenza criptato.

Verifica l'integrazione di Cloud KMS

Puoi verificare l'integrazione CMEK visualizzando i metadati per un flusso di lavoro.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic sul nome del flusso di lavoro da verificare.

    Viene visualizzata la pagina Dettagli flussi di lavoro.

  3. Fai clic sulla scheda Dettagli.

    Il valore Crittografia mostra l'ID risorsa di Cloud KMS chiave utilizzata per proteggere il flusso di lavoro e la sua 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 di Cloud KMS chiave utilizzata per proteggere il flusso di lavoro e la sua esecuzione.

Disabilita CMEK per flusso di lavoro

Puoi disattivare CMEK per un flusso di lavoro in modo che non utilizzi più Chiave Cloud KMS.

Console

  1. Nella console Google Cloud, vai alla pagina Flussi di lavoro.

    Vai a Flussi di lavoro

  2. Fai clic sul nome del flusso di lavoro da aggiornare.

    Viene visualizzata la pagina Dettagli flussi di lavoro.

  3. Clic Modifica:

  4. Per cancellare il pulsante di opzione Chiave di crittografia gestita dal cliente (CMEK), Seleziona Chiave di crittografia gestita da Google.

  5. Fai clic su Avanti.

  6. 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

Questa operazione disabilita CMEK per la revisione corrente del flusso di lavoro e per eventuali successive vengono create senza la crittografia CMEK. Flusso di lavoro esistente le revisioni e le esecuzioni rimangono criptate con le chiavi con cui erano criptato in precedenza.

Disabilita Cloud KMS

Se desideri revocare l'accesso ai dati al tuo flusso di lavoro o alle relative esecuzioni, puoi eseguire una delle seguenti operazioni per disabilitare Cloud KMS:

  • Disattiva o elimina la versione della chiave primaria del tuo e la chiave di crittografia gestita dal cliente. La disattivazione della versione di una chiave CMEK comporta la sospensione l'accesso a tutti i dati protetti da quella versione della chiave. L'eliminazione della versione di una chiave la controparte permanente di questa azione. Entrambe influiscono solo sui flussi di lavoro esecuzioni del flusso di lavoro associate alla chiave specifica. Non puoi creare nuove esecuzioni o visualizzare le risorse associate chiave eliminata o eliminata. Tutte le esecuzioni attive non riusciranno e genereranno un errore corrispondente per creare un nuovo messaggio email.

  • Revoca il cloudkms.cryptoKeyEncrypterDecrypteril ruolo IAM Agente di servizio Workflows. Ciò influisce su tutti i flussi di lavoro Progetto Google Cloud che supporta la crittografia tramite CMEK. Non puoi creare nuovi flussi di lavoro ed esecuzioni integrati con CMEK o visualizzare risorse criptate con CMEK. Qualsiasi esecuzione attiva non andrà a buon fine e .

Sebbene nessuna delle due operazioni garantisca la revoca istantanea dell'accesso, In genere le modifiche IAM si propagano più velocemente. Per ulteriori informazioni, consulta Coerenza delle risorse di Cloud KMS e Propagazione delle modifiche dell'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 è rifiutato La chiave Cloud KMS fornita non esiste oppure l'autorizzazione non è configurata correttamente.

Soluzione:

La versione della chiave non è abilitata La versione della chiave Cloud KMS fornita è stata disabilitata.

Soluzione: riattivala. la versione della chiave Cloud KMS.

La regione del keyring non corrisponde alla risorsa da proteggere La regione fornita per il keyring KMS è diversa da quella del un flusso di lavoro di machine learning.

Soluzione: utilizza un keyring di Cloud KMS e della stessa regione. (Tieni presente che possono essere in diverse projects.) Per ulteriori informazioni, vedi località Cloud KMS e Località dei flussi di lavoro.

Limite quota di Cloud KMS superato È stato raggiunto il limite di quota per le richieste Cloud KMS.

Soluzione: limita il numero di chiamate Cloud KMS o aumenta il limite della quota. Per ulteriori informazioni, vedi Quote di Cloud KMS.

Come viene gestito uno 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, verrà restituito il flusso di lavoro o la sua esecuzione. un valore state: UNAVAILABLE e i relativi dettagli nel campo stateError.

Se lo stato della chiave non è disponibile durante l'esecuzione di un flusso di lavoro (ad ad esempio se un'autorizzazione viene revocata durante un callback), si verifica un errore di runtime, che restituisce un valore state: FAILED e i dettagli correlati nel campo error.

Prezzi

Questa integrazione non comporta costi aggiuntivi oltre alle operazioni chiave, fatturati nel tuo progetto Google Cloud. Per i prezzi attuali per le informazioni, consulta la pagina sui prezzi di Cloud KMS.