
Сканирует базы данных PostgreSQL и задачи Jira на наличие PII с использованием regex, NER/ML и опционального обнаружения через self-hosted LLM, с отчётами с редактированием и журналированием аудита.
Внутренний инструмент безопасности для обнаружения персональных данных (PII) в базах данных PostgreSQL и проектах Jira
AI PII Scanner — это комплексный инструмент, ориентированный на безопасность, предназначенный для команд Application Security и Privacy для обнаружения и каталогизации PII. Он поддерживает две цели сканирования:
Обнаружение использует трёхуровневый конвейер:
@mentions и корпоративных адресов электронной почтыВАЖНО: этот инструмент предназначен для внутреннего использования в защищённой контролируемой среде.
| Средство контроля безопасности | Реализация |
|---|---|
| Предотвращение утечки данных | Никаких сторонних вызовов API; конечные точки LLM должны быть самостоятельно размещены |
| Доступ с минимальными привилегиями | Роль базы данных только для чтения без доступа на запись к данным приложения |
| Минимизация PII | Находки хранят только метаданные и сильно отредактированные выборки |
| Журнал аудита | Все сканирования регистрируются с деталями кто/что/когда/как |
| Безопасное логирование | Структурированные логи с автоматическим редактированием полей PII |
| Шифрование при передаче | SSL/TLS обязателен для всех подключений к базе данных |
| Проверка вебхуков | Проверка подписи HMAC-SHA256 для входящих событий Jira |
Используйте это, если вы хотите просканировать базу данных PostgreSQL на предмет PII по столбцам.
# 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
Выполните это от имени суперпользователя 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
Создаёт схему security_pii, в которой хранятся результаты сканирования. Запустите один раз:
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
Используйте это, если вы хотите сканировать задачи и комментарии Jira на предмет случайного раскрытия PII.
Сначала требуется базовая установка (шаг 1 выше). Настройка базы данных (шаги 2–4) не требуется, если вы хотите только сканирование Jira.
Опрашивает Jira по запросу на предмет активности за последние N часов. Сервер не нужен.
Шаг 1 — Базовая установка (если ещё не выполнена)
cd PIIHunter
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_lg
Шаг 2 — Создайте API-токен Jira
https://id.atlassian.com → Security → API tokensШаг 3 — Настройте окружение
cp .env.example .env
Отредактируйте .env и заполните свои данные 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
Шаг 4 — Проверка подключения
Проверяет ваши учётные данные, выводит список доступных проектов и получает выборку последних задач:
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
Если это не сработает, проверьте свой API-токен и что JIRA_EMAIL соответствует аккаунту, для которого был создан токен.
Шаг 5 — Запуск сканирования
# Scan last 24 hours
python -m pii_scanner.cli jira scan
# Custom lookback window
python -m pii_scanner.cli jira scan --hours 48
Запускает HTTP-сервер, который принимает события Jira и мгновенно сканирует их по мере поступления. Требуется общедоступная конечная точка.
Шаг 1 — Базовая установка + настройка REST API (сначала выполните шаги 1–4 Подраздела A)
Шаг 2 — Установка зависимостей webhook
pip install fastapi uvicorn
Шаг 3 — Добавьте конфигурацию вебхука в .env
# Secret used to verify requests genuinely come from Jira
JIRA_WEBHOOK_SECRET=your_webhook_secret
JIRA_WEBHOOK_PORT=8080
Шаг 4 — Запуск сервера вебхуков
python -m pii_scanner.cli jira webhook