← Todas las utilidades

NSAdaMask

Versión 26.1 (build 393) Prueba 30 días
Índice

Qué es NSAdaMask

nsadamask es la utilidad de anonimización determinista multi-país de Nacarsoft para Adabas: sustituye datos personales por valores ficticios válidos y con el mismo formato (DNI, CPF, RUT, SSN, pasaporte, CIF, CUIT, IBAN, tarjetas, IP, MAC, matrículas…), de modo que los entornos de prueba y desarrollo cumplen la protección de datos sin romper las validaciones de las aplicaciones. Es determinista: el mismo valor original con la misma semilla (-seed) produce siempre el mismo reemplazo.

  • Crear entornos de test con datos realistas pero no reales.
  • Cumplir RGPD/LOPD en desarrollo sin reescribir validaciones.
  • Simular antes de aplicar (-simulate, activado por defecto) con informe por campo.

Los DBID, FNR, campos y rutas de los ejemplos son ficticios; use sus valores reales.

Casos de uso

1. Anonimizar un fichero de empleados para el entorno de test

./nsadamask -dbid 50 -fnr 15 -fields "AA:DNI,AB:NOMBRE" -country ES \
  -seed clave-ficticia-01 -simulate -outfile informe.csv

2. Aplicar el enmascaramiento tras validar la simulación

./nsadamask -dbid 50 -fnr 15 -fields "AA:DNI,AB:NOMBRE" -country ES \
  -seed clave-ficticia-01 -apply -commit-every 2000

3. Enmascarar solo un rango de ISN con selección Adabas

./nsadamask -dbid 50 -fnr 15 -fields "AC:EMAIL" -country ES \
  -seed clave-ficticia-01 -search "AA=[1000:1999]" -fromisn 1000 -toisn 1999 -simulate

4. Detectar candidatos con la heurística antes de enmascarar

./nsadamask -config esquema-ficticio.json -ddmname CLIENTES-FICTICIOS -analyze-config

5. Verificar la cardinalidad del reemplazo por campo

./nsadamask -dbid 50 -fnr 15 -fields "AA:DNI" -country ES \
  -seed clave-ficticia-01 -check -simulate

Referencia de comandos

Verificada contra ./nsadamask/build/nsadamask_rhel8 --help (39 parámetros).

Conexión y selección de registros

ParámetroDescripciónRequerido
-dbidID de la base de datos Adabas
-fnrNúmero del fichero a enmascarar (lo anula -ddmname con -config), salvo -ddmname
-ddmnameNombre lógico DDM del fichero desde el JSON de -configNo
-configFichero JSON de configuración con el esquema Adabas, con -ddmname
-searchSelección de registros con sintaxis Adabas (nombres cortos o DDM)No
-sortbyDescriptor/supdescriptor para lectura en orden lógicoNo
-fromisnISN inicial de lectura secuencialNo
-toisnISN final de lectura secuencialNo
-etidETID (External Transaction ID) de la conexiónNo
-partialreadLectura parcial (solo los campos consultados)No
-blocksizeTamaño de bloque de lectura Adabas (por defecto 65536)No
-multifetchTamaño de multifetch de lectura Adabas (por defecto 200)No
-recordbuffershiftDesplazamiento del búfer de registro (por defecto 100)No

Qué enmascarar

ParámetroDescripciónRequerido
-fieldsCampos a enmascarar: CORTO:TIPO[:PAIS] o NOMBRE_DDM:TIPO[:PAIS], separados por comas. Ej.: -fields "AA:DNI,BB:NOMBRE,CC:CPF". El país por campo anula -country (ISO 3166-1 alfa-2)
-countryPaís de diccionarios y validación de formato: ES, AR, US, BR, CL, MX (por defecto ES)No
-seedSemilla maestra del enmascaramiento determinista, para -apply
-skip-emptyOmite registros cuyos campos a enmascarar están vacíosNo
-skip-if-maskedOmite valores que ya no cumplen el formato del tipo (ya anonimizados; por defecto true)No

Modos: simulación, aplicación y análisis

ParámetroDescripciónRequerido
-simulateSimulación (por defecto true): informa qué cambiaría sin escribir nadaNo
-applyAplica: escribe los valores enmascarados en Adabas (requiere -seed y licencia válida)No
-checkInforma cardinalidad original frente a reemplazo por campoNo
-analyze-configAnaliza el JSON de -config (DDMs) y sugiere ficheros/campos candidatos (heurística, sin conexión)No
-commit-everyTransacción cada N registros en modo apply (por defecto 5000)No

Informe de simulación

ParámetroDescripciónRequerido
-outfileFichero de informe de simulación (CSV: ISN,campo,original,reemplazo)No
-outfile-max-mbAborta la simulación si el informe supera este tamaño en MB (0 = ilimitado)No
-write-factorMultiplicador de estimación del tiempo de escritura sobre el de lectura en simulación (por defecto 2)No

Diccionarios

ParámetroDescripciónRequerido
-dictdirDirectorio con diccionarios CSV anonimizados (un fichero por tipo, TIPO_PAIS.csv; por defecto dicts)No
-dictCorrespondencia explícita TIPO=ruta.csv (repetible)No
-dict-delimDelimitador CSV de diccionarios (por defecto autodetección ; o ,)No
-dict-headerOmite la primera línea de cada CSV de diccionario (cabecera)No
-gen-dictsEscribe los diccionarios integrados en el binario en -dictdir y saleNo
-show-dictMuestra los valores del diccionario integrado para un TIPO (repetible)No
-typesLista los tipos de enmascaramiento soportados (canónicos en inglés + alias en español) y saleNo

Diagnóstico, licencia y miscelánea

ParámetroDescripciónRequerido
-fdtMuestra las definiciones de campos FDT y saleNo
-debugActiva el registro de depuraciónNo
-silenceModo silencioso (sin banner)No
-licenseRuta del license.key firmado (por defecto license.key en el cwd o junto al binario)No
-license-fingerprintImprime la huella de licencia de esta máquina y saleNo
-versionMuestra la versiónNo

Incompatibilidades: -simulate y -apply son excluyentes (la simulación es el modo por defecto); -ddmname requiere -config; -apply requiere -seed.

Ejemplos comentados

# 1. Simular primero (recomendado): informa sin escribir nada
./nsadamask -dbid 50 -fnr 15 -fields "AA:DNI,AB:NOMBRE" -country ES \
  -seed clave-ficticia-01 -simulate -outfile informe.csv

# 2. Aplicar tras validar la simulación (requiere licencia firmada)
./nsadamask -dbid 50 -fnr 15 -fields "AA:DNI,AB:NOMBRE" -country ES \
  -seed clave-ficticia-01 -apply

# 3. Campo brasileño con país por campo (anula -country solo para CC)
./nsadamask -dbid 50 -fnr 15 -fields "AA:DNI,CC:CPF:BR" -country ES \
  -seed clave-ficticia-01 -simulate

# 4. Lectura parcial y rango ISN para un subconjunto grande
./nsadamask -dbid 50 -fnr 15 -fields "AC:EMAIL" -country ES \
  -seed clave-ficticia-01 -partialread -fromisn 1000 -toisn 5000 -simulate

# 5. Ver qué tipos existen y qué trae un diccionario integrado
./nsadamask -types
./nsadamask -show-dict NOMBRE -country ES

# 6. Sugerir candidatos desde el esquema sin conectarse a Adabas
./nsadamask -config esquema-ficticio.json -ddmname CLIENTES-FICTICIOS -analyze-config

Códigos de retorno

El manual no documenta tabla de códigos; comportamiento observado del binario (salidas 0 informativas y 1 en errores de parámetros, licencia o conexión, verificado en el código y con --help0):

CódigoSignificado
0Éxito (incluye salidas informativas: -version, -types, -fdt, -gen-dicts, -analyze-config)
1Error (parámetros, licencia inválida/ausente en -apply, conexión Adabas)

Preguntas frecuentes

¿Por qué debo simular antes de aplicar? -simulate (por defecto) genera el informe por campo —qué valores se reemplazarían— sin escribir en la base; solo tras validarlo se ejecuta -apply.

¿Por qué -apply es rechazado con trial? Aplicar cambios requiere licencia firmada en /opt/ns/licenses/nsadamask.key; sin ella la utilidad funciona en trial de 30 días limitado a simulación.

¿Cómo repito exactamente el mismo enmascaramiento? Reutilice la misma -seed: el mismo valor original produce siempre el mismo reemplazo. Con semillas distintas los resultados no son repetibles.

¿Qué hago si un campo no se enmascara? Revise la definición del fichero (-fdt) y el tipo indicado en -fields (-types lista los soportados); con -skip-if-masked los valores ya anonimizados se omiten por diseño.

También disponible en: en