Abilitazione delle chiavi di crittografia gestite dal cliente

Questa pagina descrive come criptare i contenuti archiviati nei repository con le chiavi di crittografia gestite dal cliente (CMEK).

Panoramica

Per impostazione predefinita, Google Cloud cripta automaticamente i dati quando sono inattivi utilizzando chiavi di proprietà di Google e gestite da Google. Se hai requisiti normativi o di conformità specifici relativi alle chiavi che proteggono i tuoi dati, puoi creare repository criptati con chiavi CMEK. I metadati relativi a un repository, ad esempio il nome del repository, sono criptati con la crittografia predefinita di Google.

Quando abiliti CMEK, i dati at-rest nei repository vengono criptati utilizzando una chiave che è possibile gestire all'interno di Cloud Key Management Service. Puoi controllare l'accesso alla chiave CMEK utilizzando Identity and Access Management. Se disabiliti temporaneamente o elimini definitivamente la chiave CMEK, non sarà possibile accedere ai dati criptati con quella chiave.

CMEK consente di controllare più aspetti del ciclo di vita e di gestire le chiavi, ma comporta anche costi aggiuntivi per il servizio Cloud KMS. Anche i repository Artifact Registry e altre risorse Google Cloud criptate con CMEK possono consumare la quota di Cloud KMS, a seconda del tipo di chiave utilizzato. Verifica di disporre di una quota sufficiente per abilitare la crittografia dei secret a livello di applicazione per le tue applicazioni e i tuoi flussi di lavoro.

Cloud KMS può essere eseguito nello stesso progetto Google Cloud di Artifact Registry o in un progetto separato in cui gestisci centralmente le chiavi per più progetti. Per supportare la separazione dei compiti e un maggiore controllo sull'accesso alle chiavi, ti consigliamo di creare e gestire le chiavi in un progetto separato che includa altre risorse Google Cloud.

Assegni una chiave CMEK durante la creazione di un repository. Non puoi modificare il meccanismo di crittografia di un repository esistente. Se disponi di un repository criptato con CMEK, non puoi cambiare il meccanismo di crittografia in crittografia predefinita di Google o assegnare una chiave Cloud KMS diversa per la crittografia.

Per ulteriori informazioni su CMEK in generale, incluso quando e perché abilitarla, consulta la documentazione di Cloud KMS.

Creazione di una chiave e concessione delle autorizzazioni

Le seguenti istruzioni spiegano come creare una chiave per un repository e concedere le autorizzazioni per criptare e decriptare i dati del repository con la chiave. Puoi utilizzare una chiave creata direttamente in Cloud KMS o una chiave gestita esternamente che rendi disponibile con Cloud External Key Manager.

  1. Nel progetto Google Cloud in cui vuoi gestire le chiavi:

    1. Abilita l'API Cloud KMS.

    2. Crea un keyring e una chiave utilizzando una delle seguenti opzioni:

      La località della chiave di Cloud KMS deve corrispondere alla località del repository del repository che cripterà.

  2. Se non hai creato un repository nel progetto Artifact Registry, l'account di servizio Artifact Registry non esiste ancora. Per creare l'account di servizio, esegui questo comando:

    gcloud beta services identity create --service=artifactregistry.googleapis.com --project=PROJECT
    

    Sostituisci PROJECT con l'ID del progetto in cui è in esecuzione Artifact Registry.

  3. Concedi il ruolo IAM Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) all'account di servizio Artifact Registry. Concedi questa autorizzazione sulla chiave che hai creato.

    Console

    1. Vai alla pagina Chiavi di crittografia.

      Apri la pagina di Cloud KMS

    2. Seleziona la chiave che hai creato.

    3. Concedi l'accesso all'account di servizio Artifact Registry:

      1. Seleziona MOSTRA RIQUADRO INFORMAZIONI.
      2. Fai clic su AGGIUNGI MEMBRO.
      3. Aggiungi l'account di servizio Artifact Registry. L'account di servizio è service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, dove PROJECT-NUMBER è il numero di progetto del progetto Google Cloud in cui è in esecuzione Artifact Registry.
      4. In Seleziona un ruolo, seleziona Cloud KMS > Autore crittografia/decrittografia CryptoKey Cloud KMS.
      5. Fai clic su SALVA.
    4. Ripeti il passaggio precedente per concedere l'accesso all'account che creerà i repository.

    5. Torna alla pagina Chiavi di crittografia e seleziona di nuovo la chiave.

    6. Seleziona MOSTRA RIQUADRO INFORMAZIONI. Dovresti visualizzare i ruoli nella colonna Ruolo/Membro.

    gcloud

    1. Esegui questo comando per concedere l'accesso all'account di servizio Artifact Registry:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY --location LOCATION --keyring=KEYRING \
             --member serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Dove

      • PROJECT è l'ID del progetto che contiene la chiave.
      • KEY è il nome della chiave.
      • LOCATION è la località principale. La località della chiave deve corrispondere alla località del repository del repository che cripterà.
      • KEYRING è il nome del keyring.
      • PROJECT-NUMBER è il numero di progetto del progetto Google Cloud che esegue Artifact Registry.
    2. Ripeti il passaggio precedente per concedere l'accesso all'account che creerà i repository.

    Per ulteriori informazioni su questo comando, consulta la documentazione gcloud kms keys add-iam-policy-binding.

Ora puoi creare un repository e specificare la chiave da utilizzare per la crittografia.

Rimozione dell'accesso in corso...

Esistono diversi modi per rimuovere l'accesso a un repository criptato con CMEK:

Ti consigliamo di revocare le autorizzazioni dall'account di servizio Artifact Registry prima di disabilitare o eliminare una chiave. Le modifiche alle autorizzazioni diventano coerenti in pochi secondi, quindi puoi osservare l'impatto della disattivazione o dell'eliminazione di una chiave.

Quando disabiliti o elimini la chiave di crittografia per un repository, perdi la possibilità di visualizzare o recuperare i dati degli artefatti. Tutti i dati degli artefatti archiviati nel repository diventano inaccessibili, inclusi gli artefatti creati, i dati binari arbitrari (blob) e manifest come un manifest Docker o un file di packument npm. Gli utenti con il ruolo Lettore o Visualizzatore Artifact Registry possono comunque visualizzare i metadati dell'artefatto, come il nome, la versione o il tag dell'artefatto.

Gli utenti con il ruolo Amministratore Artifact Registry o Proprietario possono eliminare il repository.

Criteri dell'organizzazione CMEK

Artifact Registry supporta i vincoli dei criteri dell'organizzazione che possono richiedere la protezione CMEK.

I criteri possono limitare le CryptoKey Cloud KMS utilizzabili per la protezione CMEK.

  • Quando l'API Artifact Registry si trova nell'elenco dei criteri Deny dei servizi del vincolo constraints/gcp.restrictNonCmekServices, Artifact Registry rifiuta di creare nuovi repository non protetti da CMEK.

  • Quando constraints/gcp.restrictCmekCryptoKeyProjects è configurato, Artifact Registry crea repository protetti da CMEK che sono protetti da una CryptoKey da un progetto, una cartella o un'organizzazione consentiti.

Pub/Sub supporta gli stessi vincoli. Quando attivi l'API Artifact Registry in un progetto Google Cloud, Artifact Registry prova a creare automaticamente un argomento Pub/Sub con l'ID argomento gcr utilizzando chiavi di proprietà di Google e gestite da Google. Quando l'API Pub/Sub si trova nell'elenco dei criteri Deny per il vincolo constraints/gcp.restrictNonCmekServices, Pub/Sub si rifiuta di creare l'argomento. Per creare l'argomento gcr con la crittografia CMEK, consulta le istruzioni di Pub/Sub per la crittografia degli argomenti.

Per ulteriori informazioni sulla configurazione dei criteri dell'organizzazione, vedi Criteri dell'organizzazione CMEK.

Che cosa succede dopo?