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 connaissez bienGoogle 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 Run Functions, de Cloud Storage et de Protection des données sensibles.
Accorder des autorisations aux comptes de service
Votre première étape consiste à accorder des autorisations à deux comptes de service : le compte de service des fonctions Cloud Run et l'agent de service Cloud Data Loss Prevention.
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 :
- Administrateur DLP
- Agent de service de l'API DLP
Cliquez sur Enregistrer.
Accorder des autorisations à l'agent de service Cloud Data Loss Prevention
L'agent de service Cloud Data Loss Prevention est créé la première fois qu'il est nécessaire.
Dans Cloud Shell, créez l'agent de service Cloud Data Loss Prevention 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 l'agent de service Cloud Data Loss Prevention. 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.
- Sensitive Data Protection 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 :
gcloud storage buckets create gs://[YOUR_QUARANTINE_BUCKET] gcloud storage buckets create gs://[YOUR_SENSITIVE_DATA_BUCKET] gcloud storage buckets create 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 Run
Cette section explique le déploiement du script Python contenant les deux fonctions Cloud Run 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 Run Functions :
Sélectionnez le projet pour lequel vous avez activé Cloud Run Functions.
Cliquez sur Créer une fonction.
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 Run 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 Run 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 Run Functions :
Sélectionnez le projet pour lequel vous avez activé Cloud Run Functions.
Cliquez sur Créer une fonction.
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 Run 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 Run 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
cp
, en remplaçant[YOUR_QUARANTINE_BUCKET]
par le nom de votre bucket de zone de quarantaine :gcloud storage cp * gs://[YOUR_QUARANTINE_BUCKET]/
La protection des données sensibles 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.