Que-es-el-DDM-Itequia

Com generar una estratègia de DDM a la teva empresa

A l’hora de definir una política de seguretat per a una aplicació, un dels reptes més freqüents és limitar l’accés no autoritzat a la informació confidencial.

Per exemple, potser vols que el teu personal de Màrqueting tingui accés complet a tota la informació sobre els clients, ja siguin fixos o potencials, però que el teu departament de finances només pugui accedir a la informació pertinent als cobraments o als teus directius només puguin buscar els seus dades de contacte.

Si mai has treballat amb SQL Server a Microsoft, segurament has hagut de definir la informació a què tenen accés els teus diferents departaments o la capacitat que tinguin per editar-los.

Avui dia, aquestes tècniques es coneixen com a Data Masking. Una tècnica especialment útil i accessible a tota mena d’empreses gràcies a Dynamic Data Masking.

Què és el DDM?  

El Dynamic Data Masking (d’aquí les sigles DDM) és una tècnica per protegir la informació sensible d’ulls no desitjats. Et permet especificar l’extensió de les dades a què pot accedir un usuari sense els permisos necessaris.

L’avantatge del DDM és que es pot aplicar en qualsevol moment, fins i tot amb una aplicació que ja estigui en funcionament, sense necessitat de canviar cap configuració o ordre d’acció existent.

Quines dades hauria d’amagar a ulls externs? 

Els quatre tipus de dades més comunes que t’interessa mantenir en secret solen ser:

Personally Identifiable Information (PII) 

Les dades que es poden emprar per identificar determinats perfils. Inclou noms complets o números de documents personals (DNI, carnet de conduir i Seguretat Social, entre d’altres).

Protected Health Information (PHI) 

Les dades recollides pels proveïdors de serveis de salut, privats o públics, per identificar els tractaments necessaris. Inclou informació de seguretat, demogràfica, resultats de test i historials mèdics.

Payment Card Information 

La informació que donem a les botigues online en fer una compra des de la web. Recau dins de la Payment Card Industry Data Security Standard (PCIDSS) per garantir la seguretat de les dades del titular de la targeta.

Propietat Intel·lectual (IP) 

La informació relacionada amb invents, plans de negoci, dissenys i plans de construcció. Tenen moltíssim valor per a una empresa i s’han de protegir contra robatoris i accés no autoritzat.

Quines alternatives tenim a aquesta exposició?

En realitat, hi ha tres tipus molt habituals per emmascarar dades dins de les biblioteques de dades:

  • Static Data Masking: Es crea una versió duplicada de les dades que contingui informació parcial o completament emmascarada. Ambdues versions es mantenen en emplaçaments diferents.
  • On the fly Data Masking: modifica la informació sensible durant la transferència entre diferents ambients per assegurar que arriba segura al receptor. Més recomanada per a empreses que operen sota Continuous Integration.
  • Dynamic Data Masking, de què ja hem parlat abans.

Una de les solucions que recomanaríem en el cas que el motor de la base de dades utilitzat per l’aplicació sigui SQL Server (molt habitual en tot tipus de sectors) seria l’ús de l’Emmascarament Dinàmic de Dades disponible a SQL Server a les seves versions SQL Server 2016 (13.x) i posteriors com Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics.

Formato-de-Datos-con-DDM-Itequia

Com habilitem el DDM en una columna? 

Per habilitar aquesta característica només cal definir una màscara en funció del tipus de dada de la columna.

Aquesta màscara es crea a la pròpia definició de la columna a T-SQL aplicant una funció que torna un valor emmascarat en lloc del valor real de la columna:

Funció
Tipus de DadaDescripcióT-SQL definició Columna
Default()
 
TotsAplica un valor per defecte a totes les columnes, segons el tipus de dada:
Cadena à xxx Numèrics à 0 Data i Hora: 01.01.1900 00:00:00
Telèfon varchar(20) MASKED WITH (FUNCTION = ‘default()’)  
Email() 
Cadena 
 
Mostra la primera lletra del valor afegint el patró següent: 
{P}xxxx@XXX.com
Email varchar(100) MASKED WITH (FUNCTION = ’email()’)  
Partial
 
Cadena Mostra els N primers caràcters i els N últims aplicant un farciment:
Rxxxxxxxo 
Cognoms varchar(100) MASKED WITH (FUNCTION = ‘partial(1, “xxxxxx”, 1)’)
Random
 
Numeric Mostra un valor aleatori dins d’un intervalSalariBrut decimal (18,2) MASKED WITH (FUNCTION = ‘random(1,999999)’) 
Datetime 
(1)
  
Data i Hora Emmascara la part del dia que es requereixi:
Any à datetime (“Y”) 
Mes à datetime (“M”) 
Dia à datetime (“D”) 
Hora à datetime (“h”) 
Minut à datetime (“m”) 
Segon à datetime (“s”) 
 
(1) Només disponible a SQL Server 2022 
DataNaixement ADD MASKED WITH (FUNCTION = ‘datetime(“M”)’) 

Gestió de Permisos  

DDM disposa de l’opció d’atorgar diferents nivells de permisos de visualització dels valors no emmascarats amb diferents granularitats: Base de Dades, Schema, Taula i fins i tot de columna:

NivellT-SQL 
Base de Dades GRANT UNMASK TO {Usuario}; 
Schema GRANT UNMASK ON SCHEMA::{Schema} TO {Usuario} 
Taula GRANT UNMASK ON {Schema.Tabla} TO {Usuario};   
Columna GRANT UNMASK ON {Schema.Tabla}(Columna) TO {Usuario} 
  • Cal tenir en compte que el permís UNMASK no atorga permisos de Lectura per si sol, l’usuari haurà de tenir també el permís de SELECT per poder visualitzar qualsevol valor, així com remarcar que un usuari sense permís d’UNMASK però si UPDATE podria actualitzar-ne una columna emmascarada.

Com apliquem el DDM a Azure?

Al portal d’Azure, dins del menú d’opcions de l’administració d’una base de dades SQL Server, disposem de l’opció emmascarament dinàmic de dades. Ens permet realitzar de forma molt simple l’administració de les màscares per a qualsevol columna existent, sense haver de conèixer la sintàxi T-SQL que hem vist anteriorment:

Como-Activar-DDM-en-Azure-Itequia
  • (1) Opció d’administració del DDM dins de la base de dades a Azure.
  • (2) Acció per crear una màscara a qualsevol de les columnes existents.
  • (3) Columnes suggerides com a candidates per emmascarar amb opció a crear una màscara per a elles.

En prémer l’acció (2) ‘Agregar màscara’, Azure ens presentarà una pantalla on podrem crear la màscara seleccionant prèviament el Schema, Taula i Columna. L’acció (3) presentarà la mateixa pantalla preseleccionant els valors anteriors a partir de la columna suggerida.

A la pantalla finalment ens presentaran la llista de formats disponibles en funció del tipus de dada de la columna:

Listado-de-Formatos-de-DDM-Microsoft-Itequia

Tipus de Format predefinits d’emmascarament a Azure: 

Tipus de Format Tipus de DadaPantalla
Valor PredeterminatTotsFormato-Predeterminado-de-DDM-en-Microsoft-Itequia
Targeta de Crèdit CadenaDatos-de-Tarjeta-de-Credito-Enmascarados-Itequia
Correu electrònicCadenaRegla-de-Ocultación-de-Correo-Electrónico-en-Azure-Itequia
Rang aleatori NumèricRegla-Para-Rango-Aleatorio-en-Azure-Itequia
Cadena personalitzadaCadenaComo-Ocultar-Una-Cadena-Personalizada-con-DDM-Itequia

Com es posa un DDM en acció?

Observem un exemple de DDM amb tots els exemples que hem descrit a la taula anterior.

En primer lloc, creem la taula d’Empleats; emmascarant les diferents columnes que hem vist:

Ejemplo-de-Tabla-de-Empleados-con-DDM-Itequia

Un usuari amb permís de SELECT i UNMASK sobre aquesta taula obtindria els següents valors:

Vision-con-Permisos-de-Tabla-con-DDM-Activo-Itequia

En canvi, un usuari amb permís de SELECT, però sense permís d’UNMASK obtindria les mateixes files, però amb els valors emmascarats a cadascuna de les columnes definides amb màscara dinàmica, aplicant a cada columna la funció d’emmascarament establerta:

Vision-Parcial-con-Permiso-SELECT-de-Tabla-de-Empleados-Itequia

Aquí us deixem el mateix exemple descrit en text amb les parts més importants destacades

CREATE TABLE Empleats ( 

    EmpleatID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 

    Nom varchar(50) MASKED WITH (FUNCTION = 'partial(1, "xx", 1)') NULL, 

    Cognoms    varchar(50) MASKED WITH (FUNCTION = 'partial(1, "xxxxxx", 1)') NULL, 

    Telefon     varchar(12) MASKED WITH (FUNCTION = 'default()') NULL, 

    Email        varchar(50) MASKED WITH (FUNCTION = 'email()') NOT NULL, 

    SalariBrut decimal(18,2) MASKED WITH (FUNCTION = 'random(1, 999999)') NULL 

); 

INSERT INTO Empleats (Nom, Cognoms, Telefon, Email, SalariBrut) 

VALUES    

('Antonio', 'González López', '612999888', 'antonio.gonzalez@contoso.es', 2000),   

('Juan', 'Valdés Rovira', '612444555', 'juan.valdes@contoso.com', 2500),   

('Luis', 'Torres Sánchez', '612333222', 'luis.torres@contoso.net', 3000) 

CREATE USER MaskingTestUser WITHOUT LOGIN;   

GRANT SELECT ON SCHEMA::dbo TO MaskingTestUser;

EXECUTE AS USER = 'MaskingTestUser';   

SELECT * FROM dbo.Empleados 

CREATE TABLE Empleats  

( 

UsuariID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 

Nom varchar(50) NULL, 

Cognoms varchar(50) NULL, 

Telefon varchar(12) NULL, 

Email varchar(50) NOT NULL, 

DataNaixement datetime NULL, 

IBAN varchar(50) NULL, 

SalariBrut decimal(18,2) NULL 

); 

INSERT INTO Empleats (Nom, Cognoms, Telefon, Email, DataNaixement, IBAN, SalariBrut) 

VALUES    

('Antonio', 'González López', '612999888', 'antonio.gonzalez@contoso.es', '1990-07-11', 'ES0220958524201618721727', 2000),   

('Juan', 'Valdés Rovira', '612444555', 'juan.valdes@contoso.com', '1980-01-29', 'ES6320804148384145618563', 2500),   

('Luis', 'Torres Sánchez', '612333222', 'luis.torres@contoso.net', '1985-06-15', 'ES9201826168304876446786', 3000)

Quins beneficis dóna el DDM?

Per acabar, podem comentar alguns avantatges del DDM que hem vist al llarg de l’article:

  • Minimitza l’exposició d’informació sensible a usuaris sense permís
  • Millora la configuració de bases de dades amb informació protegida en eliminar la manipulació de la mateixa
  • Ofereix ocultació parcial o completa de dades textuals i numèriques amb funcions aleatòries
  • Reforça les polítiques de protecció de dades a la teva empresa, incentivant la responsabilitat individual i grupal dels teus treballadors
  • Ofereix agilitat i transparència a la gestió de la teva aplicació mantenint les dades intactes

També és important aclarir que l’emmascarament dinàmic utilitzat de manera aïllada no garanteix totalment la protecció de la informació confidencial. És recomanable emprar eines per administrar adequadament els permisos a la base de dades aplicant sempre el principi d’atorgar els mínims permisos requerits, habilitant altres mecanismes de seguretat com l’Auditoria i el Xifratge.

Si vols conèixer més sobre com aprofitar les teves tècniques de DDM dins de les suites de Microsoft, contacta amb nosaltres.

Francisco Valcarreras – Senior Product Owner at Itequia