
Durchsucht PostgreSQL-Datenbanken und Jira-Issues nach PII mithilfe von Regex, NER/ML und optionaler selbstgehosteter LLM-Erkennung, mit redigierten Berichten und Audit-Protokollierung.
Ein internes Sicherheitstool zum Auffinden von personenbezogenen Daten (PII) in PostgreSQL-Datenbanken und Jira-Projekten
Der AI PII Scanner ist ein umfassendes, sicherheitsorientiertes Tool, das für Application-Security- und Privacy-Teams entwickelt wurde, um PII zu entdecken und zu katalogisieren. Es unterstützt zwei Scan-Ziele:
Die Erkennung verwendet eine dreischichtige Pipeline:
@mentions und Firmen-E-Mail-AdressenKRITISCH: Dieses Tool ist für den internen Gebrauch innerhalb einer sicheren, kontrollierten Umgebung konzipiert.
| Sicherheitskontrolle | Implementierung |
|---|---|
| Verhinderung von Datenexfiltration | Keine Drittanbieter-API-Aufrufe; LLM-Endpunkte müssen selbst gehostet werden |
| Least-Privilege-Zugriff | Schreibgeschützte Datenbankrolle ohne Schreibzugriff auf Anwendungsdaten |
| PII-Minimierung | Befunde speichern nur Metadaten und stark geschwärzte Stichproben |
| Audit-Trail | Alle Scans werden mit Wer/Was/Wann/Wie-Details protokolliert |
| Sichere Protokollierung | Strukturierte Logs mit automatischer Schwärzung von PII-Feldern |
| Verschlüsselte Übertragung | SSL/TLS erforderlich für alle Datenbankverbindungen |
| Webhook-Verifizierung | HMAC-SHA256-Signaturvalidierung für eingehende Jira-Ereignisse |
Verwenden Sie dies, wenn Sie eine PostgreSQL-Datenbank spaltenübergreifend auf PII scannen möchten.
# 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
Führen Sie dies als PostgreSQL-Superuser aus:
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
Erstellt das Schema security_pii, in dem die Scan-Ergebnisse gespeichert werden. Einmalig ausführen:
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
Verwenden Sie dies, wenn Sie Jira-Issues und -Kommentare auf versehentliche PII-Offenlegung scannen möchten.
Die Basisinstallation (Schritt 1 oben) ist zuerst erforderlich. Die Datenbankeinrichtung (Schritte 2–4) ist nicht erforderlich, wenn Sie nur Jira scannen möchten.
Fragt Jira bei Bedarf nach Aktivitäten der letzten N Stunden ab. Kein Server erforderlich.
Schritt 1 — Basisinstallation (falls noch nicht geschehen)
cd PIIHunter
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_lg
Schritt 2 — Jira-API-Token generieren
https://id.atlassian.com → Security → API tokensSchritt 3 — Umgebung konfigurieren
cp .env.example .env
Bearbeite .env und trage deine Jira-Details ein:
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
Schritt 4 — Verbindung testen
Überprüft Ihre Anmeldedaten, listet zugängliche Projekte auf und ruft eine Stichprobe aktueller Issues ab:
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
Wenn dies fehlschlägt, überprüfe deinen API-Token und ob JIRA_EMAIL mit dem Konto übereinstimmt, für das der Token generiert wurde.
Schritt 5 — Einen Scan ausführen
# Scan last 24 hours
python -m pii_scanner.cli jira scan
# Custom lookback window
python -m pii_scanner.cli jira scan --hours 48
Startet einen HTTP-Server, der Jira-Ereignisse empfängt und sie sofort bei ihrem Eintreffen scannt. Erfordert einen öffentlich erreichbaren Endpunkt.
Schritt 1 — Basisinstallation + REST-API-Einrichtung (zuerst die Schritte 1–4 aus Unterabschnitt A abschließen)
Schritt 2 — Webhook-Abhängigkeiten installieren
pip install fastapi uvicorn
Schritt 3 — Webhook-Konfiguration zu .env hinzufügen
# Secret used to verify requests genuinely come from Jira
JIRA_WEBHOOK_SECRET=your_webhook_secret
JIRA_WEBHOOK_PORT=8080
Schritt 4 — Starten des Webhook-Servers
python -m pii_scanner.cli jira webhook
# Custom port
python -m pii_scanner.cli jira webhook --port 9090