Веб-приложение для автоматического поиска и анализа секретов (API ключей, токенов, паролей) в исходном коде репозиториев. Работет в связке с микросервисом, отвечающим за скачивание и сканирование репозиториев (с разметкой по severity при помощи модели-классификатора). https://github.com/ILYXAAA/SecretsScanner_service
- Frontend: Веб-интерфейс на FastAPI + Jinja2 templates
- Backend: RESTful API с базой данных SQLite/PostgreSQL
- Микросервис: Внешний сервис для сканирования репозиториев
- База данных: Многотабличная структура для проектов, сканов и найденных секретов
- FastAPI: Основной веб-фреймворк
- SQLAlchemy: ORM для работы с базой данных
- Jinja2: Шаблонизатор для HTML
- Passlib + bcrypt: Хеширование паролей
- jose[jwt]: JWT токены для аутентификации
- HTTPX: HTTP клиент для взаимодействия с микросервисом
- Cryptography: Шифрование конфиденциальных данных
- Добавление репозиториев Azure DevOps/Git
- Валидация URL репозиториев
- Автоматическое обновление связанных сканов при изменении имени проекта
- Удаленное сканирование: По commit/branch/tag с автоматическим резолвингом
- Локальное сканирование: Загрузка ZIP архива для анализа
- Мультисканирование: Сканирование нескольких репозиториев
- Автоматическая категоризация по типам секретов (API ключи, токены, пароли)
- Классификация по уровню угрозы
High/Potential - Трекинг статуса секретов
Confirmed/Refuted/No status - Наследование решений от предыдущих сканов для аналогичных секретов
- Обработка false-positive
- Система комментариев и аудита изменений
- Кастомные правила обнаружения секретов
- Правила исключения false-positive
- Фильтры по расширениям и именам файлов
- Настройка PAT токена для доступа к репозиториям
Пользователь → Веб-интерфейс → Создание записи в БД → Микросервис
- Создается запись скана со статусом
pending - Отправляется запрос к микросервису с
callback URL - При успехе (если найден репо+коммит) статус меняется на
running
Микросервис → Скачивание+распаковка репозитория → Анализ файлов → Callback
- Микросервис скачивает репозиторий или обрабатывает
ZIP - Применяет правила обнаружения секретов
- Фильтрует результаты через правила исключений, применяет модель-классификатор
- Отправляет результаты через
callback API
Callback API → Анализ предыдущих решений → Сохранение в БД
- Поиск аналогичных секретов в предыдущих сканах
- Автоматическое применение ранее принятых решений
- Сохранение новых секретов с унаследованными статусами
- Обновление статуса скана на "completed"
- Веб-интерфейс для просмотра результатов с фильтрацией
- Групповые операции изменения статусов
- Экспорт отчетов в HTML/JSON
- Система аудита всех действий пользователей
Projects
- Информация о репозиториях
- Связь с пользователями через
created_by
Scans
- История всех сканирований
- Статусы: pending, running, completed, failed, timeout
- Метаданные: commit, количество файлов, время выполнения
Secrets
- Найденные секреты с контекстом
- Статусы обработки и система исключений
- Аудит действий пользователей
Users
- Аутентификация и авторизация
- Роли: обычные пользователи и администратор
- Композитные индексы для быстрого поиска похожих секретов
- Индексы по scan_id, severity, type для фильтрации
- Пагинация результатов для больших наборов данных
- JWT токены с настраиваемым временем жизни
- Secure cookies для хранения токенов
- Автоматическое удаление невалидных токенов
- Middleware проверки токенов для всех защищенных маршрутов
- Административные функции только для роли admin
- API ключи для межсервисного взаимодействия
- Санитизация всех пользовательских входных данных
- Валидация и экранирование URL
- Создание/удаление пользователей (только admin)
- Смена паролей с валидацией
- Просмотр журнала активности
- Автоматические бэкапы по расписанию
- Настраиваемый период хранения
- Ручное создание бэкапов
- Мониторинг статуса системы бэкапов
- Проверка доступности микросервиса
- Автоматическое обнаружение зависших сканов (timeout)
/scan- удаленное сканирование/local_scan- загрузка ZIP файлов/multi_scan- мульти-сканирование/health- проверка доступности- Настройка правил через REST API
DATABASE_URL=sqlite:///./database/secrets_scanner.db
USERS_DATABASE_URL=sqlite:///./Auth/users.db
APP_HOST=127.0.0.1
APP_PORT=8000
MICROSERVICE_URL=http://127.0.0.1:8001
API_KEY=your_api_key
SECRET_KEY=your_secret_key- Установка зависимостей:
pip install -r requirements.txt - Запуск мастера настройки:
python run.py - Автоматическое создание структуры БД и администратора
- Настройка параметров подключения к микросервису
- Поддержка PostgreSQL
- Асинхронная обработка длительных операций




