Crittografare i dati con chiavi di crittografia gestite dal cliente

Questo documento mostra come utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per criptare e controllare i dati archiviati in un servizio cloud tramite Cloud Key Management Service. CMEK è integrato con la personalizzazione del codice Gemini Code Assist non supporta l'utilizzo di chiavi Cloud EKM.

In questo documento imparerai a:

  • Scopri come creare una chiave CMEK.
  • Concedi le autorizzazioni al service account Gemini Code Assist.
  • Crea un indice del repository di codice con una CMEK.
  • Rimuovi l'accesso a un repository CMEK.

Per impostazione predefinita, Gemini in Google Cloud cripta i contenuti inattivi dei clienti. Gemini 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 servizi integrati con CMEK, tra cui Gemini. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il livello di protezione, la posizione, la pianificazione della rotazione, l'utilizzo e le autorizzazioni di accesso e i limiti crittografici. L'utilizzo di Cloud KMS consente anche di visualizzare i log di controllo e controllare i cicli di vita delle chiavi. Anziché essere di proprietà di Google e gestite da Google, le chiavi di crittografia delle chiavi (KEK) simmetriche che proteggono i tuoi dati sono controllate e gestite da te in Cloud KMS.

Dopo aver configurato le risorse con le chiavi CMEK, l'esperienza di accesso alle risorse Gemini è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).

Prima di iniziare

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

    Activate Cloud Shell

  2. Nell'ambiente shell, esegui il comando gcloud components update per assicurarti di aver aggiornato tutti i componenti installati di gcloud CLI all'ultima versione. Per questo passaggio, puoi installare e inizializzare gcloud CLI oppure puoi utilizzare Cloud Shell.

    gcloud components update
    
  3. Crea una chiave CMEK e concedi le autorizzazioni

    Per creare una chiave CMEK e concedere all'account di servizio Gemini Code Assist le autorizzazioni sulla chiave, esegui le seguenti attività:

    1. Nel progetto Google Cloud in cui vuoi gestire le chiavi, procedi come segue:

      1. Abilita l'API Cloud Key Management Service.

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

    2. Concedi il ruolo IAM Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) all'account di servizio Gemini Code Assist. Concedi questa autorizzazione per la chiave che hai creato.

      Console

      1. Vai a Gestione delle chiavi.

        Vai a Gestione chiavi

      2. Seleziona la chiave che hai creato.

      3. Concedi l'accesso al service account Gemini Code Assist:

        1. Fai clic su Aggiungi entità.
        2. Aggiungi il service account Gemini Code Assist. L'account di servizio è service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.iam.gserviceaccount.com, dove PROJECT_NUMBER è il numero di progetto del progetto Google Cloud in cui è abilitato Gemini Code Assist.
        3. In Seleziona un ruolo, seleziona Cloud KMS > Autore crittografia/decrittografia CryptoKey Cloud KMS.
        4. Fai clic su Salva.
      4. Ripeti il passaggio precedente per concedere l'accesso all'account che creerà l'indice del repository di codice con una chiave di crittografia gestita dal cliente.

      5. Torna alla pagina Gestione chiavi e seleziona di nuovo la chiave.

      6. Seleziona Mostra riquadro informazioni. Dovresti visualizzare i ruoli nella colonna Ruolo/Membro.

      Interfaccia a riga di comando gcloud

      1. Per concedere l'accesso all'account di servizio Gemini Code Assist, in un ambiente shell, utilizza il comando kms keys add-iam-policy-binding:

        gcloud kms keys add-iam-policy-binding KEY_NAME \
            --project=PROJECT_ID \
            --location=LOCATION \
            --keyring=KEYRING_NAME \
            --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \
            --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
        

        Sostituisci quanto segue:

        • KEY_NAME: il nome della chiave.
        • PROJECT_ID: l'ID del progetto che contiene la chiave.
        • LOCATION: la posizione della chiave.
        • KEYRING_NAME: il nome del keyring.
        • PROJECT_NUMBER: il numero di progetto del progetto Google Cloud con Gemini Code Assist abilitato.
      2. Ripeti il passaggio precedente per concedere l'accesso all'account che creerà l'indice del repository di codice con una chiave di crittografia gestita dal cliente.

      Per saperne di più su questo comando, consulta la documentazione di gcloud kms keys add-iam-policy-binding.

    Ora puoi creare un indice del repository di codice con CMEK utilizzando l'API e specificare la chiave da utilizzare per la crittografia.

    Crea un indice del repository di codice con una CMEK

    Per creare un nuovo repository con protezione CMEK, esegui una delle seguenti operazioni:

    Interfaccia a riga di comando gcloud

    Utilizza il comando gemini code-repository-indexes create:

    gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
        --location=LOCATION \
        --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
    

    Sostituisci quanto segue:

    • CODE_REPOSITORY_INDEX_NAME: il nome del nuovo indice del repository di codice che creerai.
    • LOCATION: la posizione della chiave.
    • KEY_PROJECT_ID: l'ID progetto della chiave.
    • KEYRING_NAME: il nome del keyring.
    • KEY_NAME: il nome della chiave.

    API

    1. Crea un file JSON contenente le seguenti informazioni:

        {
          "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
        }
      

      Sostituisci quanto segue:

      • KEY_PROJECT_ID: l'ID progetto della chiave
      • KEY_LOCATION: la posizione della chiave
      • KEYRING_NAME: il nome delle chiavi automatizzate
      • KEY_NAME: il nome della chiave
    2. Utilizza un comando cURL per chiamare il metodo projects.locations.codeRepositoryIndexes.create:

      curl -X POST --data-binary @JSON_FILE_NAME \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -H "Content-Type: application/json" \
          "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

      Sostituisci quanto segue:

      • JSON_FILE_NAME: il percorso del file JSON che hai creato nel passaggio precedente.
      • PROJECT_ID: l'ID del progetto in cui creare il repository.
      • KEY_LOCATION: la località in cui creare il repository, che deve corrispondere alla località in cui esiste la chiave CMEK.
      • CODE_REPOSITORY_INDEX_NAME: il nome del nuovo indice del repository di codice che creerai. Ad esempio, zg-btf-0001.

    La risposta restituisce un insieme di voci di log.

    Rimuovere l'accesso a un repository CMEK

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

    Ti consigliamo di revocare le autorizzazioni dall'account di servizio Gemini Code Assist prima di disattivare o eliminare una chiave. Le modifiche alle autorizzazioni sono coerenti in pochi secondi, quindi puoi osservare gli effetti della disattivazione o dell'eliminazione di una chiave.