Ce tutoriel explique comment implémenter un système de classification et de mise en quarantaine automatique des données à l'aide de Cloud Storage et d'autres produits Google Cloud. Le tutoriel suppose que vous maîtrisez Google Cloud et la programmation shell de base.
Dans toutes les entreprises, les délégués à la protection des données, comme vous, font face à une quantité de données de plus en plus importante, qui doivent être protégées et traitées correctement. La mise en quarantaine et la classification de ces données peuvent être compliquées et chronophages, en particulier lorsqu'elles portent sur des centaines ou des milliers de fichiers par jour.
Que diriez-vous si vous pouviez prendre chaque fichier, l'importer à un emplacement de la zone de quarantaine, le faire classer automatiquement et le déplacer à l'emplacement approprié en fonction du résultat de la classification ? Ce tutoriel explique comment mettre en œuvre un tel système à l'aide de Cloud Functions, de Cloud Storage et de Cloud Data Loss Prevention.
Objectifs
- Créer des buckets Cloud Storage dans le pipeline de zone de quarantaine et de classification.
- Créer un sujet Pub/Sub et un abonnement pour vous avertir lorsque le traitement du fichier est terminé.
- Créer une fonction Cloud Functions simple qui appelle l'API DLP lors de l'importation de fichiers.
- Importer des exemples de fichiers dans le bucket de la zone de quarantaine pour appeler la fonction Cloud Functions. La fonction utilise l'API DLP pour inspecter et classifier les fichiers avant de les déplacer dans le bucket approprié.
Coûts
Ce tutoriel utilise des composants Google Cloud facturables, notamment :
- Cloud Storage
- Cloud Functions
- Cloud Data Loss Prevention
Vous pouvez utiliser le Simulateur de coût pour générer une estimation du coût en fonction de votre utilisation prévue.
Avant de commencer
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Storage,Cloud Build Cloud Build, and Cloud Data Loss Prevention APIs.
Accorder des autorisations aux comptes de service
Votre première étape consiste à accorder des autorisations à deux comptes de service : le compte de service Cloud Functions et le compte de service Cloud DLP.
Accorder des autorisations au compte de service par défaut App Engine
Dans la console Google Cloud, ouvrez la page "IAM et administration" et sélectionnez le projet que vous avez créé :
Recherchez le compte de service App Engine. Ce compte est au format
[PROJECT_ID]@appspot.gserviceaccount.com
. Remplacez[PROJECT_ID]
par votre ID de projet :Sélectionnez l'icône de modification edit à côté du compte de service.
Ajoutez les rôles suivants :
- Cloud DLP > Administrateur DLP
- Agent de service de l'API DLP (vous devez filtrer ce rôle pour le localiser)
Cliquez sur Enregistrer.
Accorder des autorisations au compte de service de protection des données sensibles
L'agent de service Cloud DLP est créé la première fois qu'il est nécessaire.
Dans Cloud Shell, créez l'agent de service Cloud DLP en appelant
InspectContent
:curl --request POST
"https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/us-central1/content:inspect"
--header "X-Goog-User-Project: PROJECT_ID"
--header "Authorization: Bearer $(gcloud auth print-access-token)"
--header 'Accept: application/json'
--header 'Content-Type: application/json'
--data '{"item":{"value":"google@google.com"}}'
--compressedRemplacez
PROJECT_ID
par votre ID du projetDans la console Google Cloud, ouvrez la page IAM et administration et sélectionnez le projet que vous avez créé :
Cochez la case Inclure les attributions de rôles fournies par Google.
Recherchez le compte de service Agent de service Cloud DLP. Ce compte est au format
service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com
. Remplacez[PROJECT_NUMBER]
par votre numéro de projet.Sélectionnez l'icône de modification edit à côté du compte de service.
Ajoutez le rôle Projet > Lecteur, puis cliquez sur Enregistrer.
Créer le pipeline de zone de quarantaine et de classification
Cette section décrit comment créer le pipeline de zone de quarantaine et de classification présenté dans le diagramme suivant.
Les chiffres dans ce pipeline correspondent aux étapes suivantes :
- Vous importez des fichiers dans Cloud Storage.
- Vous appelez une fonction Cloud Functions.
- Cloud DLP inspecte et classifie les données.
- Le fichier est déplacé vers le bucket approprié.
Créer des buckets Cloud Storage
En suivant les instructions décrites dans les Consignes relatives aux noms des buckets, créez trois buckets nommés de manière unique que vous utiliserez tout au long de ce tutoriel :
- Bucket 1 : remplacez
[YOUR_QUARANTINE_BUCKET]
par un nom unique. - Bucket 2 : remplacez
[YOUR_SENSITIVE_DATA_BUCKET]
par un nom unique. - Bucket 3 : remplacez
[YOUR_NON_SENSITIVE_DATA_BUCKET]
par un nom unique.
Console
Dans la console Google Cloud, ouvrez le navigateur Cloud Storage :
Cliquez sur Créer un bucket.
Dans la zone de texte Nom du Bucket, entrez le nom que vous avez sélectionné pour
[YOUR_QUARANTINE_BUCKET]
, puis cliquez sur Créer.Répétez cette procédure pour les buckets
[YOUR_SENSITIVE_DATA_BUCKET]
et[YOUR_NON_SENSITIVE_DATA_BUCKET]
.
gcloud
Ouvrez Cloud Shell.
Créez trois compartiments à l'aide des commandes suivantes :
gsutil mb gs://[YOUR_QUARANTINE_BUCKET] gsutil mb gs://[YOUR_SENSITIVE_DATA_BUCKET] gsutil mb gs://[YOUR_NON_SENSITIVE_DATA_BUCKET]
Créer un sujet et un abonnement Pub/Sub
console
Ouvrez la page Sujets Pub/Sub :
Cliquez sur Create topic (Créer un sujet).
Dans la zone de texte, saisissez un nom de sujet.
Cochez la case Ajouter un abonnement par défaut.
Cliquez sur Créer un sujet.
gcloud
Ouvrez Cloud Shell.
Créez un sujet en remplaçant
[PUB/SUB_TOPIC]
par le nom de votre choix :gcloud pubsub topics create [PUB/SUB_TOPIC]
Créez un abonnement en remplaçant
[PUB/SUB_SUBSCRIPTION]
par le nom de votre choix :gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]
Créer les fonctions Cloud Functions
Cette section explique le déploiement du script Python contenant les deux fonctions Cloud Functions suivantes :
- Une fonction appelée lorsqu'un objet est importé sur Cloud Storage.
- Une fonction appelée lorsqu'un message est reçu dans la file d'attente Pub/Sub.
Le script Python que vous utilisez pour suivre ce tutoriel est contenu dans un dépôt GitHub. Pour créer la première fonction Cloud, vous devez activer les API appropriées.
Pour activer les API, procédez comme suit :
- Si vous travaillez dans la console, un guide sur l'activation des API nécessaires à l'utilisation de Cloud Functions s'affiche lorsque vous cliquez sur Créer une fonction.
- Si vous travaillez dans gcloud CLI, vous devez activer manuellement les API suivantes :
- API Artifact Registry
- API Eventarc
- API Cloud Run Admin
Créer la première fonction
Console
Ouvrez la page Présentation de Cloud Functions :
Sélectionnez le projet pour lequel vous avez activé Cloud Functions.
Cliquez sur Create function.
Dans la zone Function name (Nom de la fonction), remplacez le nom par défaut par
create_DLP_job
.Dans le champ Déclencheur, sélectionnez Cloud Storage.
Dans le champ Event type (Type d'événement), sélectionnez Finalize/Create (Finaliser/Créer).
Dans le champ Bucket, cliquez sur Parcourir, sélectionnez le bucket de votre zone de quarantaine en le sélectionnant dans la liste déroulante, puis cliquez sur Sélectionner.
Cliquez sur Enregistrer.
Cliquez sur Suivant.
Sous Environnement d'exécution, sélectionnez Python 3.7.
Sous Code source, sélectionnez Éditeur intégré.
Remplacez le texte de la zone main.py par le contenu du fichier
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py
suivant.Remplacez les éléments suivants :
[PROJECT_ID_DLP_JOB & TOPIC]
: ID du projet qui héberge votre fonction Cloud et votre sujet Pub/Sub.[YOUR_QUARANTINE_BUCKET]
est le nom du bucket dans lequel vous allez importer les fichiers à traiter.[YOUR_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez déplacer les fichiers sensibles.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez importer les fichiers à traiter.[PUB/SUB_TOPIC]
: nom du sujet Pub/Sub que vous avez créé précédemment.
Dans la zone de texte Point d'entrée, remplacez le texte par défaut par ce qui suit :
create_DLP_job
.Remplacez le texte de la zone de texte requirements.txt par le contenu du fichier suivant :
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.
Cliquez sur Déployer.
Une coche verte à côté de la fonction indique un déploiement réussi.
gcloud
Ouvrez une session Cloud Shell et clonez le dépôt GitHub contenant le code et les exemples de fichiers de données :
Remplacez les répertoires par le dossier dans lequel le dépôt a été cloné :
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
Effectuez les remplacements suivants dans le fichier main.py.
[PROJECT_ID_DLP_JOB & TOPIC]
: ID du projet qui héberge votre fonction Cloud et votre sujet Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: nom du bucket dans lequel vous allez importer les fichiers à traiter.[YOUR_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez déplacer les fichiers sensibles.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez importer les fichiers à traiter.[PUB/SUB_TOPIC
: nom du sujet Pub/Sub que vous avez créé précédemment.
Déployez la fonction en remplaçant
[YOUR_QUARANTINE_BUCKET]
par votre nom de bucket :gcloud functions deploy create_DLP_job --runtime python37 \ --trigger-resource [YOUR_QUARANTINE_BUCKET] \ --trigger-event google.storage.object.finalize
Confirmez que la fonction a bien été déployée :
gcloud functions describe create_DLP_job
Un déploiement réussi est indiqué par un état "ready" présenté comme ci-dessous :
status: READY timeout: 60s
Une fois la fonction Cloud Functions déployée, passez à la section suivante pour créer la deuxième fonction Cloud Functions.
Créer la deuxième fonction
Console
Ouvrez la page Présentation de Cloud Functions :
Sélectionnez le projet pour lequel vous avez activé Cloud Functions.
Cliquez sur Create function.
Dans la zone Function Name (Nom de la fonction), remplacez le nom par défaut par
resolve_DLP
.Dans le champ Déclencheur, sélectionnez Pub/Sub.
Dans le champ Sélectionner un sujet Cloud Pub/Sub, recherchez le sujet Pub/Sub que vous avez créé précédemment.
Cliquez sur Enregistrer.
Cliquez sur Next (Suivant).
Sous Environnement d'exécution, sélectionnez Python 3.7.
Sous Code source, sélectionnez Éditeur intégré.
Dans la zone de texte Point d'entrée, remplacez le texte par défaut par
resolve_DLP
.Remplacez le texte dans la zone main.py par le contenu du fichier suivant: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py. Effectuez les remplacements suivants :
[PROJECT_ID_DLP_JOB & TOPIC]
: ID du projet qui héberge votre fonction Cloud et votre sujet Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: nom du bucket dans lequel vous allez importer les fichiers à traiter.[YOUR_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez déplacer les fichiers sensibles.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez importer les fichiers à traiter.[PUB/SUB_TOPIC
: nom du sujet Pub/Sub que vous avez créé précédemment.
Cliquez sur Déployer.
Une coche verte à côté de la fonction indique un déploiement réussi.
gcloud
Ouvrez (ou rouvrez) une session Cloud Shell et clonez le dépôt GitHub contenant le code et les exemples de fichiers de données :
Remplacez les répertoires par le dossier contenant le code Python :
cd gcs-dlp-classification-python/
Effectuez les remplacements suivants dans le fichier
main.py
:[PROJECT_ID_DLP_JOB & TOPIC]
: ID du projet qui héberge votre fonction Cloud et votre sujet Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: nom du bucket dans lequel vous allez importer les fichiers à traiter.[YOUR_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez déplacer les fichiers sensibles.[YOUR_NON_SENSITIVE_DATA_BUCKET]
: nom du bucket dans lequel vous allez importer les fichiers à traiter.[PUB/SUB_TOPIC
: nom du sujet Pub/Sub que vous avez créé précédemment.
Déployez la fonction en remplaçant
[PUB/SUB_TOPIC]
par votre thème Pub/Sub :gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
Confirmez que la fonction a bien été déployée :
gcloud functions describe resolve_DLP
Un déploiement réussi est indiqué par un état "ready" présenté comme ci-dessous :
status: READY timeout: 60s
Une fois la fonction Cloud Functions déployée, passez à la section suivante.
Importer des exemples de fichiers dans le bucket de zone de quarantaine
Le dépôt GitHub associé à cet article inclut des exemples de fichiers de données. Le dossier contient deux types de fichiers : les fichiers contenant des données sensibles et ceux contenant des données non sensibles. Les données sensibles sont classées comme contenant une ou plusieurs des valeurs INFO_TYPES
suivantes :
US_SOCIAL_SECURITY_NUMBER EMAIL_ADDRESS PERSON_NAME LOCATION PHONE_NUMBER
Les types de données qui sont utilisés pour classer les exemples de fichiers sont définis dans les constantes INFO_TYPES
du fichier main.py
, qui est initialement défini sur 'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'
.
Si vous n'avez pas encore cloné le dépôt, ouvrez Cloud Shell et clonez le dépôt GitHub contenant le code et les exemples de fichiers de données :
Remplacez les dossiers par les exemples de fichiers de données :
cd ~/dlp-cloud-functions-tutorials/sample_data/
Copiez les exemples de fichiers de données dans le bucket de zone de quarantaine à l'aide de la commande
gsutil
, en remplaçant[YOUR_QUARANTINE_BUCKET]
par le nom de votre bucket de zone de quarantaine :gsutil -m cp * gs://[YOUR_QUARANTINE_BUCKET]/
Cloud DLP inspecte et classe chaque fichier importé dans le bucket de zone de quarantaine et le déplace dans le bucket cible approprié en fonction de sa classification.
Dans la console Cloud Storage, ouvrez la page du navigateur de Cloud Storage :
Sélectionnez l'un des buckets cibles que vous avez créés précédemment et consultez les fichiers importés. Consultez également les autres buckets que vous avez créés.
Effectuer un nettoyage
Une fois le tutoriel terminé, vous pouvez procéder au nettoyage des ressources que vous avez créées afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.
Supprimer le projet
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Étapes suivantes
- Essayez de définir différentes valeurs de type de données valides pour
INFO_TYPES
. - Découvrez comment inspecter le stockage et les bases de données pour les données sensibles à l'aide de l'API Cloud Data Loss Prevention.
- Découvrez Cloud Functions.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.