
Scansiona database PostgreSQL e issue Jira alla ricerca di PII utilizzando regex, NER/ML e rilevamento opzionale tramite LLM self-hosted, con report redatti e audit logging.
Uno strumento di sicurezza interno per individuare Informazioni di Identificazione Personale (PII) in database PostgreSQL e progetti Jira
L'AI PII Scanner è uno strumento completo, orientato alla sicurezza, progettato per i team di Application Security e Privacy per individuare e catalogare le PII. Supporta due target di scansione:
Il rilevamento utilizza una pipeline a tre livelli:
@mentions e indirizzi email aziendaliCRITICO: Questo strumento è progettato per uso interno esclusivo all'interno di un ambiente sicuro e controllato.
| Controllo di sicurezza | Implementazione |
|---|---|
| Prevenzione dell'esfiltrazione dei dati | Nessuna chiamata API di terze parti; gli endpoint LLM devono essere self-hosted |
| Accesso con privilegi minimi | Ruolo database in sola lettura senza accesso in scrittura ai dati dell'applicazione |
| Minimizzazione delle PII | I risultati memorizzano solo metadati e campioni pesantemente redatti |
| Audit trail | Tutte le scansioni registrate con dettagli su chi/cosa/quando/come |
| Logging sicuro | Log strutturati con redazione automatica dei campi PII |
| Transito cifrato | SSL/TLS richiesto per tutte le connessioni al database |
| Verifica dei webhook | Validazione della firma HMAC-SHA256 per gli eventi Jira in ingresso |
Usa questa procedura se vuoi scansionare un database PostgreSQL per individuare PII nelle colonne.
# 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
Esegui questo come superutente 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 lo schema security_pii in cui vengono memorizzati i risultati della scansione. Esegui una volta:
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
Usa questa opzione se vuoi scansionare issue e commenti di Jira per individuare esposizioni accidentali di PII.
L'installazione di base (Passo 1 sopra) è richiesta per prima. La configurazione del database (Passi 2–4) non è richiesta se vuoi solo la scansione di Jira.
Esegue il polling di Jira su richiesta per l'attività nelle ultime N ore. Nessun server necessario.
Passo 1 — Installazione di base (se non è già stata eseguita)
cd PIIHunter
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_lg
Passaggio 2 — Genera un token API di Jira
https://id.atlassian.com → Security → API tokensPassaggio 3 — Configura l'ambiente
cp .env.example .env
Modifica .env e inserisci i tuoi dettagli 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
Passo 4 — Verifica la connessione
Verifica le tue credenziali, elenca i progetti accessibili e recupera un campione delle issue recenti:
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
Se questo fallisce, controlla il tuo token API e che JIRA_EMAIL corrisponda all'account per cui è stato generato il token.
Passaggio 5 — Esegui una scansione
# Scan last 24 hours
python -m pii_scanner.cli jira scan
# Custom lookback window
python -m pii_scanner.cli jira scan --hours 48
Avvia un server HTTP che riceve gli eventi Jira e li analizza istantaneamente non appena arrivano. Richiede un endpoint pubblicamente raggiungibile.
Passaggio 1 — Installazione base + configurazione REST API (completare prima i passaggi 1–4 della Sottosezione A)
Passaggio 2 — Installare le dipendenze del webhook
pip install fastapi uvicorn
Passo 3 — Aggiungi la configurazione del webhook a .env
# Secret used to verify requests genuinely come from Jira
JIRA_WEBHOOK_SECRET=your_webhook_secret
JIRA_WEBHOOK_PORT=8080
Passo 4 — Avvia il server webhook