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) pour vos ressources.

Pour en savoir plus sur les avantages particuliers liés à l'utilisation des clés CMEK avec les ressources Vertex AI, consultez la section suivante de ce guide. Pour plus d'informations sur le chiffrement CMEK en général, y compris quand et pourquoi l'activer, consultez la documentation de Cloud Key Management Service.

Ce guide décrit certains avantages liés à l'utilisation des clés CMEK avec les ressources Vertex AI et explique comment configurer un job d'entraînement pour qu'il utilise des clés CMEK.

Pour en savoir plus sur l'utilisation des clés CMEK pour Colab Enterprise, consultez la page Clés CMEK pour Colab Enterprise.

CMEK pour les ressources Vertex AI

Les sections suivantes décrivent les informations de base à connaître sur les clés CMEK pour les ressources Vertex AI avant de les configurer pour vos jobs.

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 AutoML ou personnalisée d'entraînement, votre code s'exécute sur une ou plusieurs instances de machine virtuelle (VM). géré par Vertex AI. Lorsque vous activez CMEK pour Vertex AI, 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 sur les VM
  • Toutes les données qui sont chargées par votre code
  • Toutes les données temporaires qui sont enregistrées sur le disque local par votre code
  • Modèles entraînés automatiquement
  • Fichiers multimédias (données) importés dans des ensembles de données multimédias.

En général, la clé CMEK ne chiffre pas les métadonnées associées à votre opération, telles que le nom et la région de la tâche, ou le nom à afficher d'un ensemble de données. Les métadonnées associées aux opérations sont toujours chiffrées à l'aide du mécanisme de chiffrement par défaut de Google.

Pour les ensembles de données, lorsqu'un utilisateur importe des données dans l'ensemble de données, les éléments de données et les annotations sont chiffrés par CMEK. Le nom à afficher de l'ensemble de données n'est pas chiffré avec le chiffrement CMEK.

Pour les modèles, les modèles stockés dans le système de stockage (par exemple, un disque) sont chiffrés avec CMEK. Tous les résultats d'évaluation du modèle sont chiffrés avec CMEK.

Pour les points de terminaison endpoints, tous les fichiers de modèle utilisés pour le déploiement de modèle dans le point de terminaison sont chiffrés par CMEK. Cela n'inclut pas les données en mémoire.

Pour la prédiction par lot, tous les fichiers temporaires (tels que les fichiers de modèle, les journaux, les disques de VM) utilisés pour exécuter le job de prédiction par lot sont chiffrés avec CMEK. Les résultats de la prédiction par lot sont stockés dans la destination fournie par l'utilisateur. Par conséquent, Vertex AI respecte la valeur par défaut de la configuration de chiffrement de la destination. Sinon, les résultats seront également chiffrés avec CMEK.

Pour l'étiquetage de données, tous les fichiers d'entrée (images, textes, vidéos, tabulaires), toutes les discussions temporaires (par exemple questions, commentaires) et toutes les sorties (résultats de libellé) sont chiffrés par CMEK. Les noms à afficher des spécifications d'annotation ne sont pas chiffrés avec le chiffrement CMEK.

Clés externes

Vous pouvez utiliser Cloud External Key Manager (Cloud EKM) pour créer des clés externes que vous gérez afin de chiffrer les données dans Google Cloud.

Lorsque vous utilisez une clé Cloud EKM, Google n'a aucun contrôle sur la disponibilité de votre clé gérée en externe. Si vous demandez l'accès à une ressource chiffrée avec une clé gérée en externe et que la clé n'est pas disponible, Vertex AI rejette la requête. Il peut s'écouler jusqu'à 10 minutes avant que vous ne puissiez accéder à la ressource une fois la clé disponible.

Pour plus d'informations sur l'utilisation des clés externes, consultez la section Cloud External Key Manager.

Utiliser CMEK avec d'autres produits Google Cloud

La configuration des clés CMEK pour les ressources Vertex AI ne permet pas de configurer automatiquement des clés CMEK pour les autres produits Google Cloud utilisés avec Vertex AI. Pour chiffrer des données dans d'autres produits Google Cloud avec CMEK, une configuration supplémentaire est requise. Exemple :

Ressources actuelles compatibles avec les CMEK

Les ressources Vertex AI actuelles traitées par CMEK sont les suivantes. La prise en charge de CMEK des fonctionnalités bêta est également au statut bêta.

Ressource Éléments chiffrés Liens vers la documentation
Ensemble de données
  • Toutes les données importées par l'utilisateur (par exemple le contenu textuel ou les vidéos) pour DataItems et Annotations.
  • Le contenu créé par l'utilisateur, tel que AnnotationSpecs ou ColumnSpecs.
Modèle
  • Fichiers de modèle importés.
  • Résultats de l'évaluation du modèle entraîné.
Point de terminaison
  • Tous les fichiers de modèle utilisés pour le déploiement du modèle sous le point de terminaison. Cela n'inclut pas les données en mémoire, mais le déploiement du modèle sera annulé automatiquement si la clé est désactivée.
CustomJob
  • Copie de votre code sur les VM utilisées pour exécuter l'opération.
  • Toutes les données qui sont chargées par votre code
  • Toutes les données temporaires qui sont enregistrées sur le disque local par votre code.
HyperparameterTuningJob
  • Copie de votre code sur les VM utilisées pour exécuter l'opération.
  • Toutes les données qui sont chargées par votre code
  • Toutes les données temporaires qui sont enregistrées sur le disque local par votre code.
TrainingPipeline
  • Copie de votre code sur les VM utilisées pour exécuter l'opération.
  • Toutes les données qui sont chargées par votre code
  • Toutes les données temporaires qui sont enregistrées sur le disque local par votre code.
  • Modèles entraînés automatiquement
BatchPredictionJob (à l'exception de prédiction par lot d'image AutoML)
  • Tous les fichiers temporaires (par exemple les fichiers de modèle, les journaux, les disques de VM) utilisés dans le job pour effectuer la tâche de prédiction par lot.
  • Si les résultats écrits de la BatchPrediction sont stockés dans la destination fournie par l'utilisateur, ils respectent la configuration de chiffrement de sa valeur par défaut. Sinon, il sera également chiffré avec CMEK.
ModelDeploymentMonitoringJob
  • Tous les fichiers temporaires (par exemple les fichiers d'ensembles de données d'entraînement, les journaux, les disques de VM) utilisés dans le job pour traiter le job de surveillance de déploiement de modèle.
  • Toutes les données utilisées pour la détection d'anomalies dans la surveillance.
  • Si la clé est désactivée, la tâche de surveillance de déploiement de modèle sera mise en pause.
PipelineJob
  • La tâche de pipeline et toutes ses sous-ressources.
MetadataStore
  • Tout le contenu du magasin de métadonnées.
TensorBoard
  • Toutes les données des journaux TensorBoard importés, y compris les valeurs scalaires, les histogrammes, les définitions de graphes, les images et le texte.
Featurestore
  • Le featurestore et l'ensemble du contenu du featurestore.
Index
  • Tous les fichiers de données utilisés pour les index Vector Search stockés dans Cloud Storage, Pub/Sub et la mémoire de stockage interne. Le type Index et IndexEndpoint doivent être créés avec la même clé.
IndexEndpoint
  • Tous les fichiers de données utilisés pour les index Vector Search stockés dans Cloud Storage, Pub/Sub et la mémoire de stockage interne. Le type Index et IndexEndpoint doivent être créés avec la même clé.
Environnement d'exécution Colab Enterprise
  • Le disque de démarrage et les disques de données de la VM de l'environnement d'exécution.

Compatibilité CMEK avec les pipelines de réglage de l'IA générative

La fonctionnalité CMEK est fournie dans le pipeline de réglage des modèles suivants :

  • text-bison for PaLM 2 (GPU)
  • BERT
  • T5
  • image-generation (GPU)

Limites

La compatibilité CMEK n'est pas fournie dans les cas suivants :

  • Prédiction par lot d'un modèle d'image AutoML (BatchPredictionJob)
  • Réglage des TPU

Configurer les CMEK pour vos ressources

Les sections suivantes décrivent comment créer un trousseau de clés et une clé dans Cloud Key Management Service, accorder des autorisations de chiffrement et de déchiffrement à Vertex AI pour votre clé, et créer des ressources utilisant des clés CMEK.

Avant de commencer

Dans ce guide, nous partons du principe que vous utilisez deux projets Google Cloud distincts pour configurer les clés CMEK associées aux données Vertex AI :

  • Un projet de gestion de votre clé de chiffrement (dénommé "projet Cloud KMS")
  • Un projet pour accéder aux données Vertex AI ou au résultat 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 Vertex AI 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 Vertex AI 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 de clés et une clé

Suivez le guide Cloud KMS sur la création de clés symétriques pour créer un trousseau de clés et une clé. Lorsque vous créez votre trousseau, spécifiez une région compatible avec les opérations Vertex AI en tant qu'emplacement du trousseau de clés. L'entraînement Vertex AI n'est compatible avec CMEK que lorsque votre ressource 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 des autorisations à Vertex AI

Pour utiliser CMEK pour vos ressources, vous devez autoriser Vertex AI à chiffrer et déchiffrer des données à l'aide de votre clé. Vertex AI utilise un agent de service géré par Google pour exécuter des opérations à l'aide de vos ressources. Ce compte de service est identifié par une adresse e-mail au format suivant :

service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com

Pour trouver le compte 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 à partir du numéro de projet de votre projet AI Platform, en remplaçant la variable AI_PLATFORM_PROJECT_NUMBER. Le compte de service porte également le nom Vertex AI Service Agent.

Accéder à la page IAM

Prenez note de l'adresse e-mail de ce compte de service et utilisez-la dans les étapes suivantes pour lui accorder l'autorisation de chiffrer et de déchiffrer des données à l'aide de votre clé. 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, cliquez sur Sécurité, puis sélectionnez Gestion des clés. Vous 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@gcp-sa-aiplatform.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@gcp-sa-aiplatform.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 des ressources avec la clé KMS

Lorsque vous créez une ressource compatible avec CMEK, vous pouvez spécifier votre clé comme l'un des paramètres de création.

Console

Lorsque vous créez une ressource compatible avec CMEK dans la section Vertex AI de Google Cloud Console, vous pouvez sélectionner votre clé sur la section "Général" ou "Options avancées" :

Section sur la sélection de clé de chiffrement pour une ressource

API REST et ligne de commande

Lorsque vous créez une ressource compatible, ajoutez un objet encryptionSpec à votre requête et définissez le champ encryptionSpec.kmsKeyName pour qu'il pointe vers votre ressource de clé.

Par exemple, lors de la création d'une ressource dataset, vous devez spécifier votre clé dans le corps de la requête:

 {
   "displayName": DATASET_NAME,
   "metadataSchemaUri": METADATA_URI,
   "encryptionSpec": {
     "kmsKeyName": "projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME"
   }
 }

Java

Lorsque vous créez une ressource compatible, définissez EncryptionSpec pour qu'il pointe vers votre ressource de clé. Pour en savoir plus, consultez la documentation de la bibliothèque cliente Vertex AI pour Java.

Node.js

Lorsque vous créez une ressource compatible, définissez le paramètre encryptionSpec pour qu'il pointe vers votre ressource de clé. Pour en savoir plus, consultez la documentation de la bibliothèque cliente Vertex AI pour Node.js.

Python

Lorsque vous créez une ressource compatible, définissez le paramètre encryption_spec pour qu'il pointe vers votre ressource de clé. Reportez-vous à la documentation sur le client Python pour Cloud AI Platform pour en savoir plus.

Étapes suivantes