Utilizzo delle chiavi di crittografia gestite dal cliente

Questo argomento mostra come proteggere le immagini container di cui è stato eseguito il deployment Servizi Cloud Run che utilizzano Cloud KMS chiavi di crittografia gestite dal cliente (CMEK). Puoi utilizzare questo funzionalità per proteggere i container importati da Cloud Run con una chiave CMEK a riposo.

Tieni presente quanto segue:

  • I metadati del file, ad esempio il percorso del file, non sono criptati.
  • Metadati del servizio Cloud Run, ad esempio il nome o l'ambiente non viene criptato usando la chiave fornita, ma con una chiave di proprietà di Google e gestita da Google.
  • In fase di runtime, la memoria e i contenuti del file non sono criptati.
  • Se una chiave CMEK viene disabilitata, le nuove istanze di Le revisioni di Cloud Run utilizzando la chiave non verranno avviate.
  • Se una chiave CMEK è disabilitata, il deployment di una nuova revisione Cloud Run non riuscirà, a meno che non venga utilizzata una nuova chiave valida.

Perché la chiave CMEK è sotto il tuo controllo e non è controllata Google, nessuno, neanche Google, può accedere ai dati protetti da questi di crittografia quando le chiavi vengono disabilitate o eliminate.

L'utilizzo di CMEK genera audit log. Consulta Informazioni sugli audit log e sui messaggi di errore per i dettagli.

Quote di Cloud KMS e Cloud Run

Puoi impostare la CMEK su uno dei livelli di protezione disponibili per indicare come vengono eseguite le operazioni crittografiche. Quando usi CMEK in Cloud Run, i tuoi progetti possono consumare richieste crittografiche di Cloud KMS quotas. Ad esempio, i repository criptati con CMEK possono utilizzare queste quote per ogni caricamento o download.

Operazioni di crittografia e decriptazione l'utilizzo delle chiavi CMEK influisce sulle quote di Cloud KMS in questi modi:

  • Per le chiavi CMEK software generate in Cloud KMS, nessuna La quota di Cloud KMS viene utilizzata.
  • Per le chiavi CMEK hardware, a volte chiamate Cloud HSM di crittografia, le operazioni di crittografia e decriptazione vengono conteggiate Quote di Cloud HSM nel progetto che contiene la chiave.
  • Per le chiavi CMEK esterne, a volte chiamate Cloud EKM di crittografia, le operazioni di crittografia e decriptazione vengono conteggiate Quote di Cloud EKM nel progetto che contiene la chiave.

Per ulteriori informazioni, vedi Quote di Cloud KMS.

Comportamento di scalabilità automatica influenzato da CMEK

La scalabilità automatica prevista per i tuoi L'utilizzo della gestione dal cliente può incidere sul servizio Cloud Run chiavi di crittografia. Ad esempio, la latenza per l'avvio di nuove istanze può aumentare a causa dei ritardi nel contattare i sistemi di gestione delle chiavi esterni durante la operations.

La seguente tabella mostra i possibili cambiamenti nel comportamento dovuti all'uso di Chiavi CMEK:

Operazione correlata a CMEK Comportamento di scalabilità automatica
Chiave disabilitata/eliminata/revocata Le nuove istanze non verranno avviate.
Impossibile contattare il gestore di chiavi esterno Se è possibile ritentare la richiesta della chiave, nessuna istanza verrà arrestata durante i nuovi tentativi e non verrà avviata alcuna nuova istanza. Lo scale out può apparire più lento del previsto.
Se non è possibile ritentare la richiesta della chiave, non viene avviata alcuna nuova istanza e dopo un certo periodo di attesa le istanze in esecuzione vengono arrestate.
Quota KMS superata Se questa quota viene superata, vengono registrati RESOURCE_EXHAUSTED errori e le nuove istanze non verranno avviate. Per risolvere questo problema, puoi richiedere una quota aggiuntiva.

Prima di iniziare

Consenti a Cloud Run di accedere a una chiave

Per utilizzare CMEK per Cloud Run, segui questi passaggi:

  1. Configura Artifact Registry per utilizzare CMEK.

  2. Utilizzo della guida rapida di Docker di Artifact Registry come riferimento, per creare un repository Docker eseguendo il push di un'immagine.

  3. Utilizza una chiave simmetrica Cloud KMS esistente oppure crea una nuova chiave simmetrica.

  4. Per consentire a Cloud Run di accedere alla chiave, concedi la classe all'agente di servizio Cloud Run Ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS:

    Console

    1. Vai alla pagina Chiavi di crittografia.

    2. Fai clic sul keyring della chiave per aprire la relativa pagina di elenco.

    3. Seleziona la chiave e, nella scheda Autorizzazioni a destra, fai clic su Aggiungi entità.

    4. Nel campo Nuove entità, copia il file Cloud Run l'indirizzo email dell'agente di servizio. Ha il seguente suffisso:

      PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    5. Nel campo Seleziona un ruolo, seleziona Autore crittografia/decrittografia CryptoKey Cloud KMS.

    6. Fai clic su Salva.

    gcloud

    Utilizza il seguente gcloud kms :

    gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring=KEYRING \
    --location=LOCATION) \
    --member serviceAccount:PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
    --role='roles/cloudkms.cryptoKeyEncrypterDecrypter'

    Sostituisci

    • KEY_NAME con il nome della chiave.
    • KEYRING con il nome del tuo keyring.
    • LOCATION con il nome della tua regione.
    • PROJECT_NUMBER Con il numero del progetto che vuoi il deployment del servizio Cloud Run.

    Devi disporre dell'autorizzazione per amministrare le risorse Cloud KMS nel Progetto Google Cloud per concedere il ruolo IAM roles/cloudkms.cryptoKeyEncrypterDecrypter. Solo membri IAM con il proprietario (roles/owner) o l'amministratore Cloud KMS (roles/cloudkms.admin) possono concedere o revocare l'accesso alle risorse Cloud KMS.

Configura CMEK per un servizio Cloud Run

Qualsiasi modifica alla configurazione porta la creazione di una nuova revisione. Anche le revisioni successive ricevono automaticamente di questa configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un'istanza servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila il servizio iniziale pagina delle impostazioni come preferisci, poi fai clic su Container, volumi, networking, sicurezza per espandere pagina di configurazione del servizio.

  4. Fai clic sulla scheda Sicurezza.

    immagine

    • In Crittografia:
        .
      1. Seleziona Chiave di crittografia gestita dal cliente (CMEK).
      2. Nel menu Seleziona una chiave gestita dal cliente, scegli una delle le seguenti opzioni:
        • Seleziona Cambia progetto se devi utilizzare una chiave di un altro progetto. Puoi fare riferimento a una chiave di un altro progetto se il tuo un account di servizio può accedere alla chiave per le operazioni di crittografia e decriptazione.

        • Seleziona Inserisci chiave manualmente per inserire il secret di un progetto. utilizzando il seguente formato: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.

        Per copiare e incollare il nome risorsa da un altro progetto già esistente, accesso a:

        • Vai alla pagina Chiavi di crittografia.
        • Fai clic sul keyring
        • Seleziona il nome del keyring scelto e fai clic su Azioni.
        • Seleziona Copia nome risorsa dal menu e incollalo nel Campo Nome risorsa della chiave del passaggio precedente.

      3. Nel menu Azione di revoca della chiave, scegli una delle le seguenti opzioni:
        • Impedisci nuova istanza di container: nessuna nuova istanza viene avviata dopo CMEK la revoca della chiave.

        • Arresta il prima possibile: non verranno avviate nuove istanze ed esistenti di istanze gestite dopo la revoca della chiave CMEK.

        • Ritardo arresto personalizzato: specifica il numero di ore prima dell'evento di Google Cloud.

  5. Fai clic su Crea o Esegui il deployment.

gcloud

Per impostare una chiave su un servizio, utilizza uno dei seguenti comandi:

gcloud run deploy SERVICE \
--image IMAGE_URL \
--key KEY \
--post-key-revocation-action-type KEY_REVOCATION_ACTION
--encryption-key-shutdown-hours SHUTDOWN_HOURS
gcloud run services update SERVICE --key KEY
--post-key-revocation-action-type KEY_REVOCATION_ACTION
--encryption-key-shutdown-hours SHUTDOWN_HOURS

Sostituisci

  • SERVICE con il nome del tuo servizio.
  • IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • KEY con il nome completo della chiave nel seguente formato: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.
  • KEY_REVOCATION_ACTION con shut-down o prevent-new, a seconda delle tue preferenze di revoca della chiave.
  • SHUTDOWN_HOURS con il numero di ore di ritardo prima dell'evento viene chiuso dopo la revoca.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna le seguenti annotazioni CMEK con i valori desiderati:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/encryption-key: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
            run.googleapis.com/post-key-revocation-action-type: KEY_REVOCATION_ACTION
            run.googleapis.com/encryption-key-shutdown-hours: SHUTDOWN_HOURS
          name: REVISION

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • PROJECT_NAME con il nome del progetto a cui era la chiave in cui è stato creato.
    • LOCATION con la località in cui è stata creata la chiave. Deve corrisponde alla località del servizio Cloud Run.
    • KEYRING_NAME con il nome del keyring.
    • KEY_NAME con il nome della chiave.
    • KEY_REVOCATION_ACTION con shut-down o prevent-new, a seconda delle tue preferenze di revoca della chiave.
    • SHUTDOWN_HOURS con il numero di ore di ritardo prima dell'evento viene chiuso dopo la revoca.
    • REVISION con un nuovo nome di revisione o eliminala (se presente). Se fornisci un nuovo nome per la revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non deve superare i 63 caratteri
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Visualizzazione delle impostazioni di sicurezza

Per visualizzare le impostazioni di sicurezza attuali del tuo Servizio Cloud Run:

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.

  3. Fai clic sulla scheda Revisioni.

  4. Nel riquadro dei dettagli a destra, l'impostazione di sicurezza è elencato nella scheda Sicurezza.

gcloud

  1. Utilizza questo comando:

    gcloud run services describe SERVICE
  2. Individua l'impostazione di sicurezza nel configurazione.

Testa la revoca CMEK

  1. Esegui questo comando per confermare che il servizio è accessibile:

    curl SERVICE_URL
    

    Sostituisci SERVICE_URL con l'URL del servizio. Puoi trovarlo in nell'interfaccia utente della console dopo il deployment: viene visualizzato l'URL del container accanto al testo URL:.

  2. Disabilita la versione della chiave

  3. Attendi il numero di SHUTDOWN_HOURS specificato. In caso contrario specifica riattiva la chiave e modifica o eseguire nuovamente il deployment del servizio impostando il valore minimo di un'ora.

  4. Dopo aver atteso la durata di SHUTDOWN_HOURS impostata, esegui di nuovo seguente e conferma che il servizio non è più accessibile:

curl SERVICE_URL

Informazioni sugli audit log e sui messaggi di errore

Se sei responsabile del monitoraggio degli audit log, una delle attività potrebbe essere quella di e verificherai le operazioni CMEK nel tuo servizio Cloud Run. In questo caso, non è un problema di comprensione degli audit log correlati.

Se sei responsabile di risolvere e correggere gli errori di runtime per servizio Cloud Run, potrebbe essere necessario risolvere gli errori relativi a CMEK e registrato durante il funzionamento del servizio Cloud Run.

Le sezioni seguenti forniscono le informazioni necessarie per le attività precedenti.

Audit log

Gli audit log KMS forniscono un audit trail per ogni eseguita con una chiave. Per i servizi Cloud Run abilitati per CMEK, Cloud Run aggiunge un contesto del chiamante specifico di Cloud Run nel dettaglio il motivo per cui il sistema ha eseguito l'accesso alla chiave del cliente. La tabella seguente elenca i contesti che potrebbero essere visualizzati negli audit log:

Motivo dell'accesso alla chiave Descrizione
Decrypting CMEK-encrypted layer during container clone start. Registrato ogni volta che viene avviata una nuova istanza.
Encrypting a newly created data-encryption-key w/ the customer-managed-encryption-key. Registrato durante il deployment di un servizio abilitato CMEK, dove la chiave CMEK è sottoposta a wrapping da una chiave KMS.
Decrypting an existing encrypted data-encryption-key, under the same customer-managed-encryption-key, to be used to encrypt container contents. Registrato all'avvio di una nuova istanza, che richiede la decriptazione dell'immagine.
Performing an encrypt operation on dummy data to check the customer-managed-encryption-key status and access. Registrato quando viene eseguito un controllo di convalida della chiave, eseguito periodicamente.
Performing a decrypt operation on dummy data to check the customer-managed-encryption-key status and access. Registrato quando viene eseguito un controllo di convalida della chiave, eseguito periodicamente.

Per dettagli sul formato e sui contenuti degli audit log, consulta Log di controllo di KMS.

Messaggi di errore

Tieni presente che i messaggi di errore forniti da un gestore di chiavi esterno vengono trasmessi direttamente ai log di Cloud Run per il tuo servizio.

Nella tabella seguente sono elencati i messaggi di errore relativi a CMEK che potresti visualizzare, insieme con descrizioni e possibili rimedi.

Messaggio Descrizione
User's service account does not have CMEK decrypter permission. Service account: %s Rimedio: consentire al servizio di accedere alla chiave.
User's KMS operation quota has been exceeded. CMEK key: %s Il servizio abilitato per CMEK ha superato le quote KMS. Rimedio: richiedi una quota KMS maggiore
User's CMEK key has been disabled. CMEK key: %s La chiave CMEK è stata revocata. Rimedio: modifica la chiave CMEK del servizio ed esegui di nuovo il deployment del servizio.
User's CMEK key has been destroyed. CMEK key: %s La chiave CMEK è stata eliminata. Rimedio: modifica la chiave CMEK del servizio ed esegui di nuovo il deployment del servizio.
User's CMEK key has been scheduled for deletion. CMEK Key: %s È stata pianificata l'eliminazione della chiave CMEK. Rimedio: modifica la chiave CMEK del servizio ed esegui di nuovo il deployment del servizio.

Passaggi successivi