Utiliser des clés de chiffrement gérées par le client (CMEK)

Par défaut, Google Cloud chiffre automatiquement les données au repos à l'aide de clés de chiffrement gérées par Google. Si vous avez des exigences réglementaires ou de conformité spécifiques concernant les clés qui protègent vos données, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK, Customer-Managed Encryption Keys) pour vos tâches d'entraînement.

Pour en savoir plus sur les avantages particuliers d'utiliser le chiffrement CMEK avec AI Platform Training, consultez la section suivante de ce guide. Pour plus d'informations sur le chiffrement CMEK en général, y compris quand et pourquoi les activer, consultez la documentation de Cloud Key Management Service.

Ce guide décrit certains avantages à utiliser CMEK avec AI Platform Training et explique comment configurer une tâche d'entraînement à cet effet.

Comprendre CMEK pour AI Platform Training

Les sections suivantes présentent des informations de base sur CMEK pour AI Platform Training que vous devez comprendre avant de configurer CMEK pour vos tâches d'entraînement.

Avantages du chiffrement CMEK

D'une manière générale, CMEK est particulièrement utile si vous avez besoin d'un contrôle total sur les clés utilisées pour chiffrer vos données. Avec CMEK, vous pouvez gérer vos clés dans Cloud KMS. Par exemple, vous pouvez désactiver des clés, les alterner ou définir un calendrier de rotation à l'aide de l'API Cloud KMS. Pour plus d'informations sur CMEK en général, y compris quand et pourquoi l'activer, consultez la documentation Cloud KMS.

Lorsque vous exécutez une tâche d'entraînement, votre code s'exécute sur une ou plusieurs instances de machine virtuelle (VM) gérées par AI Platform Training. Lorsque vous activez CMEK pour AI Platform Training, la clé que vous désignez, et non une clé gérée par Google, est utilisée pour chiffrer les données sur les disques de démarrage de ces VM. La clé CMEK chiffre les types de données suivants :

  • La copie de votre code d'entraînement sur les VM
  • Toutes les données qui sont chargées par votre code d'entraînement
  • Toutes les données temporaires qui sont enregistrées sur le disque local par votre code d'entraînement

La clé CMEK ne chiffre pas les métadonnées associées à votre tâche d'entraînement, telles que le nom et la région du projet. Les métadonnées associées aux tâches d'entraînement sont toujours chiffrées à l'aide du mécanisme de chiffrement par défaut de Google.

Utiliser CMEK avec d'autres produits Google Cloud

Configurer CMEK pour AI Platform Training n'implique pas de configurer automatiquement CMEK pour les autres produits Google Cloud utilisés avec AI Platform Training. Pour chiffrer des données dans d'autres produits Google Cloud avec CMEK, une configuration supplémentaire est requise. Exemple :

Limites

Vous ne pouvez pas utiliser CMEK avec AI Platform Training dans les situations suivantes :

  • Vous ne pouvez pas utiliser CMEK avec des tâches d'entraînement utilisant des TPU.
  • Si vous avez commencé à utiliser l'API Training and Prediction d'AI Platform en 2017 ou avant et que vous envoyez une tâche d'entraînement avec CMEK, vous pouvez rencontrer une erreur indiquant une incompatibilité avec un ancien mécanisme d'authentification. Dans ce cas, créez un projet Google Cloud ou sélectionnez un autre projet pour exécuter votre tâche AI Platform Training.

Configurer CMEK pour votre tâche d'entraînement

Les sections suivantes décrivent comment créer un trousseau et une clé dans Cloud Key Management Service, accorder des autorisations de chiffrement et de déchiffrement à AI Platform Training pour votre clé, et créer une tâche d'entraînement utilisant CMEK.

Avant de commencer

Ce guide suppose que vous utilisez deux projets Google Cloud distincts pour configurer CMEK pour l'entraînement :

  • Un projet de gestion de votre clé de chiffrement (dénommé "projet Cloud KMS")
  • Un projet pour accéder à AI Platform Training, gérer les données d'entraînement ou les résultats dans Cloud Storage et interagir avec tous les autres produits Google Cloud dont vous avez besoin pour votre cas d'utilisation (dénommé "projet AI Platform")

Cette configuration recommandée accepte la séparation des tâches.

Vous pouvez également utiliser un seul projet Google Cloud pour l'ensemble du guide. Pour ce faire, utilisez le même projet pour toutes les tâches suivantes qui se rapportent au projet Cloud KMS et les tâches qui se rapportent au projet AI Platform.

Configurer le projet Cloud KMS

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud KMS API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud KMS API.

    Enable the API

Configurer le projet AI Platform

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the AI Platform Training & Prediction API.

    Enable the API

Configurer Google Cloud CLI

L'utilisation de la CLI gcloud est obligatoire pour certaines étapes de ce guide et facultative pour d'autres.

Install the Google Cloud CLI, then initialize it by running the following command:

gcloud init

Créer un trousseau et une clé

Suivez le guide Cloud KMS sur la création de clés symétriques pour créer un trousseau et une clé. Lorsque vous créez votre trousseau, spécifiez une région compatible avec AI Platform Training en tant qu'emplacement du trousseau de clés. AI Platform Training n'accepte que les clés CMEK lorsque votre tâche d'entraînement et votre clé utilisent la même région. Vous ne devez pas spécifier d'emplacement birégional, multirégional ou mondial pour votre trousseau de clés.

Assurez-vous de créer votre trousseau et votre clé dans votre projet Cloud KMS.

Accorder les autorisations à AI Platform Training

Pour utiliser CMEK pour votre tâche d'entraînement, vous devez autoriser AI Platform Training à chiffrer et déchiffrer des données à l'aide de votre clé. AI Platform Training utilise un service un agent pour exécuter l'entraînement emplois. Cet agent de service est identifié par une adresse e-mail au format suivant :

service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

Pour trouver l'agent de service approprié pour votre projet AI Platform, accédez à la page IAM dans la console Google Cloud, puis recherchez le membre correspondant à ce format d'adresse e-mail, en remplaçant la variable AI_PLATFORM_PROJECT_NUMBER par le numéro de projet de votre projet AI Platform. L'agent de service dispose également Nommez-le Google Cloud ML Engine Service Agent.

Accéder à la page IAM

Notez l'adresse e-mail de cet agent de service, et utilisez-la dans le pour lui accorder l'autorisation de chiffrer et déchiffrer des données à l'aide de votre . Vous pouvez accorder l'autorisation à l'aide de Google Cloud Console ou de Google Cloud CLI :

console Google Cloud

  1. Dans la console Google Cloud, accédez à la page Clés de chiffrement et sélectionnez votre projet Cloud KMS.

    Accéder à la page Clés de chiffrement

  2. Cliquez sur le nom du trousseau de clés que vous avez créé dans une section précédente de ce guide pour accéder à la page Détails du trousseau de clés.

  3. Cochez la case correspondant à la clé que vous avez créée dans une section précédente de ce guide. Si un panneau d'informations portant le nom de votre clé n'est pas déjà ouvert, cliquez sur Afficher le panneau d'informations.

  4. Dans le panneau d'informations, cliquez sur Ajouter un membre pour ouvrir la boîte de dialogue Ajouter des membres à "KEY_NAME". Dans cette boîte de dialogue, procédez comme suit :

    1. Dans la zone Nouveaux membres, saisissez l'adresse e-mail du compte de service dont vous avez pris note dans la section précédente : service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com
    2. Dans la liste déroulante Sélectionner un rôle, cliquez sur Cloud KMS, puis sur le rôle Chiffreur/Déchiffreur de clé de chiffrement Cloud KMS.

    3. Cliquez sur Enregistrer.

gcloud

Exécutez la commande suivante :

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING_NAME \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Dans cette commande, remplacez les espaces réservés suivants :

  • KEY_NAME : nom de la clé que vous avez créée dans une section précédente de ce guide.
  • KEY_RING_NAME : trousseau de clés que vous avez créé dans une section précédente de ce guide.
  • REGION : région dans laquelle vous avez créé votre trousseau de clés.
  • KMS_PROJECT_ID : ID de votre projet Cloud KMS.
  • AI_PLATFORM_PROJECT_NUMBER : numéro de votre projet AI Platform, indiqué dans la section précédente dans l'adresse e-mail d'un compte de service.

Créer une tâche d'entraînement avec CMEK

Maintenant que vous avez accordé à AI Platform Training l'autorisation de chiffrer et de déchiffrer des données à l'aide de votre clé, vous pouvez créer une tâche d'entraînement qui chiffre les données temporaires à l'aide de cette clé. Lorsque vous créez une tâche d'entraînement, spécifiez le champ encryptionConfig dans le champ trainingInput de votre tâche.

L'exemple suivant montre comment effectuer cette opération à l'aide de la CLI gcloud. Vous ne pouvez pas créer de job d'entraînement avec CMEK dans la console Google Cloud pour le moment.

L'exemple suppose que vous disposez d'une application d'entraînement sur votre système de fichiers local dans un répertoire nommé trainer avec un module nommé task.

  1. Créez un fichier de configuration config.yaml contenant les éléments suivants :

    trainingInput:
      encryptionConfig:
        kmsKeyName: projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

    Dans le fichier de configuration, remplacez les espaces réservés suivants :

    • KMS_PROJECT_ID : ID de votre projet Cloud KMS.
    • KEY_RING_NAME : nom de votre trousseau de clés.
    • KEY_NAME : nom de votre clé.
  2. Pour créer la tâche d'entraînement, exécutez la commande suivante :

    gcloud ai-platform jobs submit training JOB_ID \
      --config=config.yaml \
      --job-dir=JOB_DIR \
      --module-name=trainer.task \
      --package-path=trainer \
      --python-version=3.7 \
      --region=REGION \
      --runtime-version=2.11 \
      --scale-tier=basic
    

    Dans cette commande, remplacez les espaces réservés suivants :

    • JOB_ID : nom que vous avez choisi pour la tâche.
    • JOB_DIR : chemin d'accès à un répertoire Cloud Storage dans lequel votre application d'entraînement doit être importée. Votre tâche d'entraînement peut également utiliser ce répertoire pendant l'entraînement pour enregistrer le résultat, par exemple. Pour plus de commodité, choisissez un répertoire dans un bucket Cloud Storage de votre projet AI Platform.

    • REGION : région où vous avez créé votre trousseau de clés et où vous prévoyez de créer la tâche d'entraînement.

    La commande, si elle aboutit, génère le résultat suivant :

    Job [JOB_ID] submitted successfully.
    Your job is still active. You may view the status of your job with the command
    
      $ gcloud ai-platform jobs describe JOB_ID
    
    or continue streaming the logs with the command
    
      $ gcloud ai-platform jobs stream-logs JOB_ID
    jobId: JOB_ID
    state: QUEUED
    

    Vous pouvez désormais surveiller votre tâche d'entraînement.

Outre les champs region et encryptionConfig, vous pouvez personnaliser la configuration de votre tâche d'entraînement en fonction de vos besoins. Vous pouvez même utiliser un conteneur personnalisé pour l'entraînement.

Étape suivante