Chiffrer des données avec des clés de chiffrement gérées par le client

Ce document explique comment utiliser des clés de chiffrement gérées par le client (CMEK) pour chiffrer et contrôler les données au repos dans un service cloud via Cloud Key Management Service. Les clés CMEK sont intégrées à la personnalisation du code. Gemini Code Assist n'est pas compatible avec les clés Cloud EKM.

Ce document vous accompagne dans les tâches suivantes :

  • Apprenez à créer une clé CMEK.
  • Accordez des autorisations au compte de service Gemini Code Assist.
  • Créez un index de dépôt de code avec une clé CMEK.
  • Supprimez l'accès à un dépôt CMEK.

Par défaut, Gemini pour Google Cloud chiffre les contenus client au repos. Gemini gère le chiffrement sans intervention de votre part. Cette option est appelée chiffrement par défaut de Google.

Si vous souhaitez contrôler vos clés de chiffrement, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) dans Cloud KMS avec des services bénéficiant d'une intégration des CMEK, y compris Gemini. L'utilisation de clés Cloud KMS vous permet de contrôler leur niveau de protection, leur emplacement, leur calendrier de rotation, leurs autorisations d'utilisation et d'accès, ainsi que leurs limites cryptographiques. Grâce à Cloud KMS, vous pouvez également afficher les journaux d'audit et contrôler les cycles de vie des clés. Au lieu de laisser Google posséder et gérer les clés de chiffrement de clés (KEK) symétriques qui protègent vos données, c'est vous qui vous chargez de cette tâche dans Cloud KMS.

Une fois que vous avez configuré vos ressources avec des CMEK, l'accès à vos ressources Gemini est semblable à celui du chiffrement par défaut de Google. Pour en savoir plus sur les options de chiffrement, consultez Clés de chiffrement gérées par le client (CMEK).

Avant de commencer

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

    Activate Cloud Shell

  2. Dans votre environnement de shell, exécutez la commande gcloud components update pour vérifier que tous les composants de la gcloud CLI installés ont été mis à jour vers la dernière version. Pour cette étape, vous pouvez installer et initialiser la gcloud CLI, ou utiliser Cloud Shell.

    gcloud components update
    
  3. Créer une clé CMEK et accorder des autorisations

    Pour créer une clé CMEK et accorder des autorisations au compte de service Gemini Code Assist sur la clé, suivez ces étapes :

    1. Dans le projet Google Cloud où vous souhaitez gérer vos clés, procédez comme suit :

      1. Activez l'API Cloud Key Management Service.

      2. Créez un trousseau de clés et une clé à l'aide de l'une des options suivantes :

    2. Accordez le rôle IAM de chiffreur/déchiffreur de CryptoKeys (roles/cloudkms.cryptoKeyEncrypterDecrypter) au compte de service Gemini Code Assist. Accordez cette autorisation sur la clé que vous avez créée.

      Console

      1. Accédez à la page Gestion des clés.

        Accéder à la page de gestion des clés

      2. Sélectionnez la clé que vous avez créée.

      3. Accordez l'accès au compte de service Gemini Code Assist :

        1. Cliquez sur Ajouter un compte principal.
        2. Ajoutez le compte de service Gemini Code Assist. Le compte de service est désigné par service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.iam.gserviceaccount.com, où PROJECT_NUMBER correspond au numéro du projet Google Cloud dans lequel Gemini Code Assist est activé.
        3. Dans Sélectionner un rôle, sélectionnez Cloud KMS > Chiffreur/Déchiffreur de CryptoKeys Cloud KMS.
        4. Cliquez sur Enregistrer.
      4. Répétez l'étape précédente pour accorder l'accès au compte chargé de créer l'index du dépôt de code avec une clé CMEK.

      5. Revenez à la page Gestion des clés, puis sélectionnez à nouveau la clé.

      6. Sélectionnez Afficher le panneau d'informations. Des rôles doivent s'afficher dans la colonne Rôle/Membre.

      gcloud CLI

      1. Pour accorder l'accès au compte de service Gemini Code Assist, utilisez la commande kms keys add-iam-policy-binding dans un environnement de shell :

        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"
        

        Remplacez les éléments suivants :

        • KEY_NAME : nom de la clé.
        • PROJECT_ID : ID du projet contenant la clé.
        • LOCATION : emplacement de la clé.
        • KEYRING_NAME : nom du trousseau de clés.
        • PROJECT_NUMBER : numéro de projet du projet Google Cloud où Gemini Code Assist est activé.
      2. Répétez l'étape précédente pour accorder l'accès au compte chargé de créer l'index du dépôt de code avec une clé CMEK.

      Pour en savoir plus sur cette commande, consultez la documentation gcloud kms keys add-iam-policy-binding.

    Vous pouvez désormais créer un index de dépôt de code avec une clé CMEK en utilisant l'API et spécifier la clé à utiliser pour le chiffrement.

    Créer un index de dépôt de code avec une clé CMEK

    Pour créer un dépôt protégé par CMEK, effectuez l'une des opérations suivantes :

    gcloud CLI

    Exécutez la commande 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"
    

    Remplacez les éléments suivants :

    • CODE_REPOSITORY_INDEX_NAME : nom du nouvel index de dépôt de code que vous allez créer.
    • LOCATION : emplacement de la clé.
    • KEY_PROJECT_ID : ID du projet de la clé.
    • KEYRING_NAME : nom du trousseau de clés.
    • KEY_NAME : nom de la clé.

    API

    1. Créez un fichier JSON contenant les informations suivantes :

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

      Remplacez les éléments suivants :

      • KEY_PROJECT_ID : ID du projet de la clé
      • KEY_LOCATION : emplacement de la clé
      • KEYRING_NAME : nom du trousseau de clés
      • KEY_NAME : nom de la clé
    2. Utilisez une commande cURL pour appeler la méthode 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"

      Remplacez les éléments suivants :

      • JSON_FILE_NAME : chemin d'accès au fichier JSON que vous avez créé à l'étape précédente.
      • PROJECT_ID : ID du projet dans lequel créer le dépôt.
      • KEY_LOCATION : emplacement où créer le dépôt, qui doit correspondre à l'emplacement où se trouve la clé CMEK.
      • CODE_REPOSITORY_INDEX_NAME : nom du nouvel index de dépôt de code que vous allez créer. Exemple : zg-btf-0001.

    La réponse renvoie un ensemble d'entrées de journal.

    Supprimer l'accès à un dépôt CMEK

    Il existe plusieurs façons de supprimer l'accès à un dépôt chiffré par CMEK :

    Nous vous recommandons de révoquer les autorisations du compte de service Gemini Code Assist avant de désactiver ou de détruire une clé. Les modifications apportées aux autorisations étant cohérentes en quelques secondes, vous pouvez observer tout de suite les conséquences de la désactivation ou de la destruction d'une clé.