
Escanea bases de datos PostgreSQL y issues de Jira en busca de PII usando regex, NER/ML y detección opcional con LLM autoalojado, con informes redactados y registro de auditoría.
Una herramienta de seguridad interna para descubrir Información de Identificación Personal (PII) en bases de datos PostgreSQL y proyectos de Jira
El Escáner de PII con IA es una herramienta integral enfocada en seguridad, diseñada para equipos de Seguridad de Aplicaciones y Privacidad con el fin de descubrir y catalogar PII. Admite dos objetivos de escaneo:
La detección utiliza una canalización de tres capas:
@mentions y direcciones de correo corporativasCRÍTICO: Esta herramienta está diseñada para uso interno únicamente dentro de un entorno seguro y controlado.
| Control de seguridad | Implementación |
|---|---|
| Prevención de exfiltración de datos | Sin llamadas a API de terceros; los endpoints de LLM deben ser autoalojados |
| Acceso con privilegios mínimos | Rol de base de datos de solo lectura sin acceso de escritura a los datos de la aplicación |
| Minimización de PII | Los hallazgos almacenan solo metadatos y muestras fuertemente redactadas |
| Registro de auditoría | Todos los escaneos se registran con detalles de quién/qué/cuándo/cómo |
| Registro seguro | Registros estructurados con redacción automática de campos de PII |
| Tránsito cifrado | SSL/TLS requerido para todas las conexiones a la base de datos |
| Verificación de webhooks | Validación de firma HMAC-SHA256 para eventos entrantes de Jira |
Use esto si desea escanear una base de datos PostgreSQL en busca de PII en las columnas.
# Clone the repository
cd PIIHunter
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Download spaCy NER model (~800MB)
python -m spacy download en_core_web_lg
Ejecuta esto como un superusuario de PostgreSQL:
CREATE ROLE pii_scanner_readonly WITH LOGIN PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO pii_scanner_readonly;
GRANT USAGE ON SCHEMA public, app_data TO pii_scanner_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public, app_data TO pii_scanner_readonly;
cp .env.example .env
# Fill in DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD
Crea el esquema security_pii donde se almacenan los resultados del escaneo. Ejecutar una vez:
python -m pii_scanner.cli init-schema
# Preview candidate columns (no data read)
python -m pii_scanner.cli discover
# Run PII detection
python -m pii_scanner.cli scan --sample-size 1000
# View results
python -m pii_scanner.cli report
python -m pii_scanner.cli test-connection
Use esto si desea escanear incidencias y comentarios de Jira en busca de exposición accidental de PII.
La instalación base (Paso 1 anterior) es necesaria primero. La configuración de la base de datos (Pasos 2–4) no es necesaria si solo desea el escaneo de Jira.
Consulta Jira bajo demanda para obtener actividad de las últimas N horas. No se necesita servidor.
Paso 1 — Instalación base (si aún no se ha realizado)
cd PIIHunter
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_lg
Paso 2 — Generar un token de API de Jira
https://id.atlassian.com → Security → API tokensPaso 3 — Configurar el entorno
cp .env.example .env
Edita .env y completa tus datos de Jira:
JIRA_URL=https://yourcompany.atlassian.net
[email protected]
JIRA_API_TOKEN=your_api_token_here
# Optional — leave empty to scan all projects
# JIRA_PROJECT_KEYS=ENG,OPS,SUPPORT
# Emails from these domains will NOT be flagged as PII
COMPANY_EMAIL_DOMAINS=yourcompany.com
Paso 4 — Probar la conexión
Verifica tus credenciales, lista los proyectos accesibles y obtiene una muestra de incidencias recientes:
python -m pii_scanner.cli jira test
Expected output:
Testing connection to https://yourcompany.atlassian.net...
Auth ✓ logged in as Jane Smith ([email protected])
Projects ✓ 3 accessible: ENG, OPS, SUPPORT
Project ENG ✓ accessible
Recent issues (no time filter):
ENG-101 Fix login timeout on mobile
ENG-100 Update password policy
Si esto falla, verifica tu token de API y que JIRA_EMAIL coincida con la cuenta para la que se generó el token.
Paso 5 — Ejecutar un escaneo
# Scan last 24 hours
python -m pii_scanner.cli jira scan
# Custom lookback window
python -m pii_scanner.cli jira scan --hours 48
Inicia un servidor HTTP que recibe eventos de Jira y los escanea al instante a medida que llegan. Requiere un endpoint accesible públicamente.
Paso 1 — Instalación base + configuración de la API REST (complete primero los pasos 1–4 de la Subsección A)
Paso 2 — Instalar las dependencias del webhook
pip install fastapi uvicorn
Paso 3 — Añadir la configuración del webhook a .env