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 pour Gemini Code Assist. 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.

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. Dans l'un des environnements de développement suivants, configurez la gcloud CLI :

    Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  2. Dans l'environnement de développement où vous avez configuré la gcloud CLI, exécutez la commande gcloud components update pour vous assurer d'avoir mis à jour tous les composants installés de gcloud vers la dernière version.

    gcloud components update
    

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 dans lequel vous souhaitez gérer vos clés, procédez comme suit :

    1. Activez l'API Cloud Key Management Service.

    2. Créez le trousseau de clés et la clé directement dans Cloud KMS.

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

    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." \
          --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

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