Créer une clé encapsulée

Cette page explique comment utiliser Cloud Key Management Service (Cloud KMS) pour créer une clé encapsulée que vous pouvez ensuite utiliser pour envoyer des requêtes deidentify et reidentify à l'API Cloud Data Loss Prevention de Sensitive Data Protection.

Le processus d'utilisation d'une clé cryptographique pour anonymiser et restaurer l'identification du contenu est appelé pseudonymisation (ou tokenisation). Pour obtenir des informations conceptuelles sur ce processus, consultez la page Pseudonymisation.

Pour obtenir un exemple montrant comment créer une clé encapsulée, tokeniser du contenu et restaurer l'identification du contenu tokenisé, consultez plutôt Anonymiser et désanonymiser du texte sensible.

Vous pouvez suivre la procédure décrite dans ce document en 5 à 10 minutes, sans compter les étapes Avant de commencer.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

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

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Sensitive Data Protection and Cloud KMS APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  9. Install the Google Cloud CLI.

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

  11. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  12. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the Sensitive Data Protection and Cloud KMS APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  16. Rôles requis

    Pour obtenir les autorisations nécessaires pour créer une clé AES encapsulée, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

    Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

    Créer un trousseau de clés et une clé

    Avant de commencer cette procédure, décidez où vous souhaitez que Sensitive Data Protection traite vos requêtes d'anonymisation et de restauration de l'identification. Lorsque vous créez une clé Cloud KMS, vous devez la stocker dans global ou dans la même région que celle que vous utiliserez pour vos requêtes Protection des données sensibles. Sinon, les requêtes Sensitive Data Protection échoueront.

    Vous trouverez la liste des emplacements compatibles dans la section Emplacements Sensitive Data Protection. Notez le nom de la région choisie (par exemple, us-west1).

    Cette procédure utilise global comme emplacement pour toutes les requêtes API. Si vous souhaitez utiliser une autre région, remplacez global par le nom de la région.

    1. Créez un trousseau de clés comme suit :

      gcloud kms keyrings create "dlp-keyring" \
          --location "global"
      
    2. Créez une clé :

      gcloud kms keys create "dlp-key" \
          --location "global" \
          --keyring "dlp-keyring" \
          --purpose "encryption"
      
    3. Répertoriez votre trousseau de clés et votre clé :

      gcloud kms keys list \
          --location "global" \
          --keyring "dlp-keyring"
      

      Vous obtenez le résultat suivant :

      NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key
      PURPOSE: ENCRYPT_DECRYPT
      ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
      PROTECTION_LEVEL: SOFTWARE
      LABELS:
      PRIMARY_ID: 1
      PRIMARY_STATE: ENABLED
      

      Dans ce résultat, PROJECT_ID correspond à l'ID de votre projet.

      La valeur de NAME correspond au nom complet de la ressource de votre clé Cloud KMS. Notez cette valeur, car les requêtes de suppression de l'identification et de restauration de l'identification l'exigent.

    Créer une clé AES encodée en base64

    Cette section explique comment créer une clé AES (Advanced Encryption Standard) et l'encoder en base64.

    1. Créez une clé AES 128, 192 ou 256 bits. La commande suivante utilise openssl pour créer une clé 256 bits dans le répertoire actuel :

      openssl rand -out "./aes_key.bin" 32
      

      Le fichier aes_key.bin est ajouté à votre répertoire actuel.

    2. Encodez la clé AES en tant que chaîne base64 :

      base64 -i ./aes_key.bin
      

      Un résultat semblable aux lignes suivantes doit s'afficher :

      uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
      

    Encapsuler la clé AES avec la clé Cloud KMS

    Cette section explique comment utiliser la clé Cloud KMS que vous avez créée dans Créer un trousseau et une clé pour encapsuler la clé AES encodée en base64 que vous avez créée dans Créer une clé AES encodée en base64.

    Pour encapsuler la clé AES, utilisez curl pour envoyer la requête suivante à la méthode projects.locations.keyRings.cryptoKeys.encrypt de l'API Cloud KMS :

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
        --request "POST" \
        --header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
        --header "content-type: application/json" \
        --data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
    

    Remplacez les éléments suivants :

    La réponse que vous obtenez de Cloud KMS est semblable à la réponse JSON suivante :

    {
      "name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
      "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
      "ciphertextCrc32c": "901327763",
      "protectionLevel": "SOFTWARE"
    }
    

    Dans ce résultat, PROJECT_ID correspond à l'ID de votre projet.

    Notez la valeur de ciphertext dans la réponse. Il s'agit de votre clé encapsulée.

    Étapes suivantes