En este instructivo, se muestra cómo implementar un sistema automatizado de cuarentena y clasificación de datos con Cloud Storage y otros productos de Google Cloud. En el instructivo, se da por hecho que estás familiarizado con Google Cloud y la programación básica de shell.
En cada organización, las personas a cargo de la protección de datos como tú se enfrentan a una cantidad creciente de datos, que se deben proteger y tratar de manera adecuada. La cuarentena y la clasificación de datos pueden ser complicadas y demandar mucho tiempo, especialmente, si abarcan cientos o miles de archivos por día.
¿Qué sucedería si pudieras subir cada archivo a su ubicación de cuarentena para que se clasifique de manera automática y se mueva a la ubicación correcta en función del resultado de la clasificación? En este instructivo, se muestra cómo implementar ese sistema mediante Cloud Functions, Cloud Storage y Cloud Data Loss Prevention.
Objetivos
- Crear depósitos de Cloud Storage para usar como parte de la canalización de cuarentena y clasificación
- Crear un tema y una suscripción de Pub/Sub para notificarte cuando se complete el procesamiento de archivos
- Crear una función simple de Cloud Functions que invoque la API de DLP cuando se suban los archivos
- Subir algunos archivos de muestra al bucket de cuarentena para invocar la función de Cloud Functions. La función utiliza la API de DLP para inspeccionar y clasificar los archivos a fin de moverlos al bucket correcto
Costos
En este instructivo, se usan componentes facturables de Google Cloud, incluidos los siguientes:
- Cloud Storage
- Cloud Functions
- Cloud Data Loss Prevention
Puedes utilizar la calculadora de precios para realizar una estimación de costos según el uso previsto.
Antes de comenzar
-
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.
Otorga permisos a las cuentas de servicio
El primer paso es otorgar permisos a dos cuentas de servicio: la cuenta de Cloud Functions y la de Cloud DLP.
Otorga permisos a la cuenta de servicio predeterminada de App Engine
En la consola de Google Cloud, abre la página IAM y administración y selecciona el proyecto que creaste:
Busca la cuenta de servicio de App Engine. Esta cuenta tiene el formato
[PROJECT_ID]@appspot.gserviceaccount.com
. Reemplaza[PROJECT_ID]
por el ID del proyecto.Selecciona el ícono de edición edit junto a la cuenta de servicio.
Agrega las siguientes funciones:
- Cloud DLP > Administrador de DLP
- Agente de servicio de la API de DLP (debes filtrar esta función para ubicarlo)
Haz clic en Guardar.
Otorga permisos a la cuenta de servicio de Protección de datos sensibles
El agente de servicio de Cloud DLP se crea la primera vez que es necesario.
En Cloud Shell, crea el agente de servicio de Cloud DLP mediante una llamada a
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"}}'
--compressedReemplaza
PROJECT_ID
por el ID del proyecto.En la consola de Google Cloud, abre la página IAM y administración y selecciona el proyecto que creaste:
Selecciona la casilla de verificación Incluir asignaciones de funciones proporcionadas por Google
Busca la cuenta de servicio Agente de servicio de Cloud DLP. Esta cuenta tiene el formato
service-[PROJECT_NUMBER]@dlp-api.iam.gserviceaccount.com
. Reemplaza[PROJECT_NUMBER]
por el nombre del proyecto.Selecciona el ícono de edición edit junto a la cuenta de servicio.
Agrega la función Proyecto > Lector y haz clic en Guardar.
Cómo compilar la canalización de cuarentena y clasificación
En esta sección, compilarás la canalización de cuarentena y clasificación que se muestra en el siguiente diagrama.
Los números en la canalización corresponden a los siguientes pasos:
- Sube archivos a Cloud Storage.
- Invoca una función de Cloud Functions.
- Cloud DLP inspecciona y clasifica los datos.
- El archivo se mueve al bucket correspondiente.
Crea depósitos de Cloud Storage
Sigue las instrucciones que se describen en los lineamientos para nombrar depósitos y crea tres depósitos con nombres únicos, que usarás en este instructivo:
- Depósito 1: Reemplaza
[YOUR_QUARANTINE_BUCKET]
por un nombre único. - Depósito 2: Reemplaza
[YOUR_SENSITIVE_DATA_BUCKET]
por un nombre único. - Depósito 3: Reemplaza
[YOUR_NON_SENSITIVE_DATA_BUCKET]
por un nombre único.
Console
En la consola de Google Cloud, abre el navegador de Cloud Storage:
Haz clic en Crear bucket.
En el cuadro de texto Nombre del depósito, ingresa el nombre que seleccionaste para
[YOUR_QUARANTINE_BUCKET]
y, luego, haz clic en Crear.Repite estos pasos para los depósitos
[YOUR_SENSITIVE_DATA_BUCKET]
y[YOUR_NON_SENSITIVE_DATA_BUCKET]
.
gcloud
Abre Cloud Shell:
Crea los tres depósitos con los siguientes comandos:
gsutil mb gs://[YOUR_QUARANTINE_BUCKET] gsutil mb gs://[YOUR_SENSITIVE_DATA_BUCKET] gsutil mb gs://[YOUR_NON_SENSITIVE_DATA_BUCKET]
Crea un tema y una suscripción de Pub/Sub
Console
Abre la página Temas de Pub/Sub
Haga clic en Crear tema.
En el cuadro de texto, ingresa un nombre del tema.
Selecciona la casilla de verificación Agregar una suscripción predeterminada.
Haz clic en Crear tema.
gcloud
Abre Cloud Shell:
Crea un tema y reemplaza
[PUB/SUB_TOPIC]
por el nombre que elijas:gcloud pubsub topics create [PUB/SUB_TOPIC]
Crea una suscripción y reemplaza
[PUB/SUB_SUBSCRIPTION]
por el nombre que elijas:gcloud pubsub subscriptions create [PUB/SUB_SUBSCRIPTION] --topic [PUB/SUB_TOPIC]
Crea una función de Cloud Functions
En esta sección, se detallan los pasos para implementar la secuencia de comandos de Python que contiene dos funciones de Cloud Functions.
- Una función invocada cuando se sube un objeto a Cloud Storage
- Una función invocada cuando se recibe un mensaje en la cola de Pub/Sub
La secuencia de comandos de Python que usas para completar este instructivo se encuentra en un repositorio de GitHub. Para crear la primera función de Cloud Functions, debes habilitar las API correctas.
Para habilitar las API, sigue estos pasos:
- Si trabajas en la consola, cuando hagas clic en Crear función, verás una guía sobre cómo habilitar las API que necesitas para usar Cloud Functions.
- Si trabajas en la CLI de gcloud, debes habilitar de forma manual las siguientes API:
- API de Artifact Registry
- API de Eventarc
- API de Cloud Run Admin
Crea la primera función
Console
Abre la página Descripción general de Cloud Functions:
Selecciona el proyecto para el que quieres habilitar Cloud Functions.
Haga clic en Crear función.
En el cuadro Nombre de la función, reemplaza el nombre predeterminado por
create_DLP_job
.En el campo Activador, selecciona Cloud Storage.
En el campo Tipo de evento, selecciona Finalizar/Crear.
En el campo Depósito, haz clic en Explorar, selecciona el bucket de cuarentena marcando el bucket en la lista desplegable y, luego, haz clic en Seleccionar.
Haga clic en Guardar.
Haz clic en Siguiente.
En Entorno de ejecución, selecciona Python 3.7.
En Código fuente, marca Edición directa.
Reemplaza el texto en el cuadro main.py por el contenido del siguiente archivo
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/main.py
.Reemplaza lo siguiente:
[PROJECT_ID_DLP_JOB & TOPIC]
: es el ID del proyecto que aloja tu función de Cloud Functions y tema de Pub/Sub.[YOUR_QUARANTINE_BUCKET]
es el nombre del bucket al que subirás los archivos que se procesarán.[YOUR_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que moverás los archivos sensibles[YOUR_NON_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que subirás los archivos que se procesarán.[PUB/SUB_TOPIC]
: es el nombre del tema de Pub/Sub que creaste antes.
En el cuadro de texto Punto de entrada, reemplaza el texto predeterminado por lo siguiente:
create_DLP_job
.Reemplace el texto en el cuadro de texto requirements.txt por el contenido del siguiente archivo:
https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp-classification-python/requirements.txt.
Haz clic en Implementar.
La marca de verificación verde ubicada junto a la función indica que la implementación se realizó correctamente.
gcloud
Abre la sesión de Cloud Shell y clona el repositorio de GitHub que contiene el código y algunos archivos de datos de muestra:
Cambia los directorios a la carpeta a la que se clonó el repositorio.
cd ~dlp-cloud-functions-tutorials/gcs-dlp-classification-python/
Realiza los siguientes reemplazos en el archivo main.py.
[PROJECT_ID_DLP_JOB & TOPIC]
: es el ID del proyecto que aloja tu función de Cloud Functions y tema de Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: es el nombre del bucket al que subirás los archivos que se procesarán.[YOUR_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que moverás los archivos sensibles[YOUR_NON_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que subirás los archivos que se procesarán.[PUB/SUB_TOPIC
: es el nombre del tema de Pub/Sub que creaste antes.
Para implementar la función, reemplaza
[YOUR_QUARANTINE_BUCKET]
por el nombre del bucket:gcloud functions deploy create_DLP_job --runtime python37 \ --trigger-resource [YOUR_QUARANTINE_BUCKET] \ --trigger-event google.storage.object.finalize
Comprueba que la función se haya implementado de forma correcta:
gcloud functions describe create_DLP_job
Un estado similar al siguiente indica que la implementación se realizó de forma correcta:
status: READY timeout: 60s
Cuando la función de Cloud Functions se haya implementado correctamente, pasa a la siguiente sección a fin de crear la segunda función.
Cómo crear la segunda función
Console
Abre la página Descripción general de Cloud Functions:
Selecciona el proyecto para el que quieres habilitar Cloud Functions.
Haga clic en Crear función.
En el cuadro Nombre de la función, reemplaza el nombre predeterminado por
resolve_DLP
.En el campo Activador, selecciona Pub/Sub.
En el campo Selecciona un tema de Cloud Pub/Sub, busca el tema de Pub/Sub que creaste antes.
Haz clic en Guardar
Haz clic en Siguiente
En Entorno de ejecución, selecciona Python 3.7.
En Código fuente, selecciona Editor directo.
En el cuadro de texto Punto de entrada, reemplaza el texto predeterminado por
resolve_DLP
.Reemplaza el texto en el cuadro main.py por el contenido del siguiente archivo: https://github.com/GoogleCloudPlatform/dlp-cloud-functions-tutorials/blob/master/gcs-dlp- clasificación-python/main.py. Realiza los siguientes reemplazos
[PROJECT_ID_DLP_JOB & TOPIC]
: es el ID del proyecto que aloja tu función de Cloud Functions y tema de Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: es el nombre del bucket al que subirás los archivos que se procesarán.[YOUR_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que moverás los archivos sensibles[YOUR_NON_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que subirás los archivos que se procesarán.[PUB/SUB_TOPIC
: es el nombre del tema de Pub/Sub que creaste antes.
Haga clic en Implementar.
La marca de verificación verde ubicada junto a la función indica que la implementación se realizó correctamente.
gcloud
Abre (o vuelve a abrir) la sesión de Cloud Shell y clona el repositorio de GitHub que contiene el código y algunos archivos de datos de muestra:
Cambia los directorios por la carpeta con el código de Python:
cd gcs-dlp-classification-python/
Realiza los siguientes reemplazos en el archivo
main.py
:[PROJECT_ID_DLP_JOB & TOPIC]
: es el ID del proyecto que aloja tu función de Cloud Functions y tema de Pub/Sub.[YOUR_QUARANTINE_BUCKET]
: es el nombre del bucket al que subirás los archivos que se procesarán.[YOUR_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que moverás los archivos sensibles[YOUR_NON_SENSITIVE_DATA_BUCKET]
: es el nombre del bucket al que subirás los archivos que se procesarán.[PUB/SUB_TOPIC
: es el nombre del tema de Pub/Sub que creaste antes.
Implementa la función y reemplaza
[PUB/SUB_TOPIC]
por tu tema de Pub/Sub:gcloud functions deploy resolve_DLP --runtime python37 --trigger-topic [PUB/SUB_TOPIC]
Comprueba que la función se haya implementado de forma correcta:
gcloud functions describe resolve_DLP
Un estado similar al siguiente indica que la implementación se realizó de forma correcta:
status: READY timeout: 60s
Cuando la función de Cloud Functions se haya implementado correctamente, pasa a la siguiente sección.
Cómo subir archivos de muestra al bucket de cuarentena
El repositorio de GitHub asociado con este artículo incluye archivos de datos de muestra. La carpeta contiene algunos archivos con datos sensibles y otros archivos sin datos sensibles. Los datos sensibles se clasifican como tal si tienen uno o más valores INFO_TYPES
:
US_SOCIAL_SECURITY_NUMBER EMAIL_ADDRESS PERSON_NAME LOCATION PHONE_NUMBER
Los tipos de datos que se usan para clasificar los archivos de muestra se definen en la constante INFO_TYPES
en el archivo main.py
, que se establece inicialmente en 'FIRST_NAME,PHONE_NUMBER,EMAIL_ADDRESS,US_SOCIAL_SECURITY_NUMBER'
.
Si todavía no clonaste el repositorio, abre Cloud Shell y clona el repositorio de GitHub que contiene el código y algunos archivos de datos de muestra:
Cambia las carpetas para los archivos de datos de muestra:
cd ~/dlp-cloud-functions-tutorials/sample_data/
Copia los archivos de datos de muestra en el bucket de cuarentena mediante el comando
gsutil
y reemplaza[YOUR_QUARANTINE_BUCKET]
por el nombre de tu bucket de cuarentena:gsutil -m cp * gs://[YOUR_QUARANTINE_BUCKET]/
Cloud DLP inspecciona y clasifica cada archivo subido al bucket de cuarentena y los mueve al bucket de destino en función de la clasificación.
En Cloud Storage Console, abre la página del navegador de Storage:
Selecciona uno de los depósitos de destino que creaste anteriormente y revisa los archivos subidos. También revisa los demás depósitos que creaste.
Limpia
Una vez que completes el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.
Borra el proyecto
- 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.
¿Qué sigue?
- Intenta configurar valores de tipos de datos válidos diferentes para
INFO_TYPES
. - Obtén más información sobre la inspección de almacenamiento y bases de datos para datos sensibles con Cloud DLP.
- Obtén más información sobre Cloud Functions.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.