¿Ha pensado alguna vez cómo puede proteger los datos sensibles de su aplicación? Una forma de hacerlo es mediante el uso del data masking, que es el proceso de ocultar los datos sensibles para evitar el acceso no autorizado o la exposición no deseada. En esta entrada de blog, hablaremos sobre cómo integrar el enmascaramiento de datos en una canalización CI/CD utilizando Azure DevOps como ejemplo.


Hay varias razones por las que es importante integrar el data masking en proceso de DevOps a través de un software de CI/CD:


1. Proteger los datos sensibles: El data masking ayuda a proteger los datos sensibles, como la información personal (PII, PHI) o la información comercial confidencial, del acceso o la exposición a no autorizados o no deseada. Puede asegurarse de que los datos confidenciales se enmascaran correctamente en todos los entornos, incluidos los de desarrollo, preproducción, testing y producción.


2. Cumplir la normativa: Dependiendo de tu sector y ubicación, puede que tengas que cumplir con diferentes normativas (GPDR en la UE, HIPAA en EEUU o PIPEDA en Canadá o si quieres saber más, este artículo es interesante (https://securityscorecard.com/blog/countries-with-gdpr-like-data-privacy-laws) que exigen la protección de datos sensibles. Integrando el data masking en el pipeline de CI/CD, puedes asegurarte de que estás cumpliendo con estos requisitos en todos los entornos.


3. Eliminar errores involuntarios: Al incorporar un proceso automático, elimina cualquier posibilidad de error manual que pudiera darse en los procesos de masking manuales, donde la intervención humana puede provocar estos errores y sus consiguientes costes asociados.


4. Eliminar esperas innecesarias: la incorporación de este tipos de procesos dentro de un pipeline de CI/CD, garantizará la provisión de los datos en tiempo y forma, eliminando esperas en la realización de tests o en la necesidad de estos datos por los equipos de QA.


Paso 1: Identificar los datos que deben enmascararse


El primer paso para integrar un proceso de data masking en su proceso CI/CD es determinar qué datos deben enmascararse. Esto suele incluir información personal como nombres, direcciones y números de la seguridad social, así como cualquier información empresarial confidencial que no deba compartirse con partes no autorizadas.


Una vez que sepas qué datos hay que enmascarar, tienes que averiguar dónde están almacenados dentro de tu aplicación. Puede ser en una base de datos, en un archivo de configuración o en la propia aplicación.


Paso 2: Elegir una herramienta de enmascaramiento de datos


Existen muchas herramientas de data masking, tanto de código abierto como de pago. Algunos ejemplos son Anonymizer, Mask My Data o Dataguise entre otros. A la hora de elegir una herramienta de enmascaramiento de datos, ten en cuenta factores como la compatibilidad con tu proceso CI/CD, tu aplicación, tiempos de ejecución y transformación, el coste y los tipos de datos que puede enmascarar.


Paso 3: Configurar la herramienta de enmascaramiento de datos


Una vez que haya elegido una herramienta de data masking, intégrela con su herramienta de CI/CD utilizando algunos endpoints de la API y especifique los datos que deben enmascararse durante la ejecución del pipeline.


En este caso, utilizaremos Gigantics para crear fácilmente un conjunto de datos anónimos que se utilizarán para ejecutar pruebas en un pipeline de CI/CD con Azure DevOps.


Utilizando la interfaz de Gigantics, crearemos una URL única con una clave de API de un conjunto de datos que contengan datos realistas. Simplemente copie la URL e invóquela desde su archivo de configuración del pipeline del CI/CD.


Paso 4: Integración en su proceso CI/CD


Tendrá que añadir un paso que ejecute la herramienta de data masking como parte de su pipeline. En Azure DevOps, esto puede hacerse normalmente desde la terminal de nuestra máquina que llame a la herramienta de data making con los parámetros adecuados.


Por ejemplo, aquí hay una canalización de Azure DevOps que carga un conjunto de datos anonimizados en una base de datos mysql y ejecuta algunas pruebas.


trigger:
  - master

pool:
  vmImage: ubuntu-latest

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: '14.x'
    displayName: 'Install Node.js'

  - script: |
      sudo /etc/init.d/mysql start
      sudo /etc/init.d/mysql start
      mysql -e 'CREATE DATABASE employees_test;' -uroot -proot
      mysql -e 'SHOW DATABASES;' -uroot -proot
    displayName: Start mysql database

  - script:
      curl -k https://<GIGANTICS_URL>/dataset/<APIKEY> | mysql -uroot -proot
      employees_test
    displayName: Load test dataset from Gigantics

  - script: |
      npm install
      npm run build
      npm test
    displayName: 'npm install & unit tests'
    workingDirectory: 'client/'

  - script: |
      (npm start &)
      ./node_modules/.bin/cypress run
    displayName: 'run cypress tests'
    workingDirectory: 'client/'

En este ejemplo, este YAML de Azure DevOps se ejecuta cada vez que un desarrollador empuja su rama de github. Cuando esto ocurre se genera un contenedor docker con ubuntu, mysql y node. Inicializamos mysql y creamos una base de datos vacía donde se cargarán los datos de prueba desde Gigantics. Una vez cargado el conjunto de datos anonimizados desde Gigantics, se ejecutan las pruebas, en este caso utilizamos el framework Cypress para realizar las pruebas.


Posteriormente, el pipeline continuaría según los requerimientos de cada cliente. Este pipeline está diseñado para Azure, pero se puede extrapolar a cualquier herramienta de CI/CD ya que los datos de Gigantics se traen simplemente utilizando el comando curl.


Paso 5: Probar el proceso de enmascaramiento de datos


Después de integrar la herramienta de enmascaramiento de datos en su pipeline CI/CD, es importante probar el proceso para asegurarse de que funciona correctamente. Para ello, ejecute una compilación de prueba de su pipeline CI/CD y compruebe la salida del paso de data masking para asegurarse que los datos se enmascaran correctamente.


También debe probar la aplicación para asegurarse que funciona correctamente con los datos enmascarados. Esto puede implicar la ejecución de pruebas con los datos enmascarados o la verificación manual donde la aplicación se comporte como se espera con los datos enmascarados.


Al probar a fondo el proceso de data masking, puede asegurarse que funciona correctamente y que los datos confidenciales están debidamente protegidos.


Paso 6: Supervisar y mantener el proceso de enmascaramiento de datos


Es importante supervisar periódicamente el proceso de data masking para asegurarse que funciona correctamente y enmascara los datos correctos. Esto puede implicar comprobar la salida de la herramienta de data masking para asegurarse que los datos enmascarados son correctos, así como supervisar la aplicación para asegurarse que funciona correctamente con los datos enmascarados.


Al integrar un proceso de data masking en su proceso CI/CD, puede garantizar que los datos confidenciales se enmascaran correctamente en todos los entornos, lo que ayuda a protegerlos de accesos no autorizados o su exposición no deseada.


En conclusión, integrar el data masking en un pipeline de CI/CD es una buena forma de garantizar que los datos confidenciales estén debidamente protegidos en todos los entornos. Siguiendo los pasos descritos en esta entrada del blog, puede integrar eficazmente una herramienta de data masking en su canalización.