Skip to content

Полноценный сервис для сканирования репозиториев на нескрытые секреты

Notifications You must be signed in to change notification settings

ILYXAAA/SecretsScanner

Repository files navigation

🔐 Secrets Scanner

Веб-приложение для автоматического поиска и анализа секретов (API ключей, токенов, паролей) в исходном коде репозиториев. Работет в связке с микросервисом, отвечающим за скачивание и сканирование репозиториев (с разметкой по severity при помощи модели-классификатора). https://github.com/ILYXAAA/SecretsScanner_service

Скриншоты

Главная image

Проект image

Мультисканирование image

Результаты сканирования image

Настройки image

🏗️ Архитектура

🧩 Основные компоненты

  • 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 токена для доступа к репозиториям

Процесс работы

1. Инициализация сканирования

Пользователь → Веб-интерфейс → Создание записи в БД → Микросервис
  • Создается запись скана со статусом pending
  • Отправляется запрос к микросервису с callback URL
  • При успехе (если найден репо+коммит) статус меняется на running

2. Выполнение сканирования

Микросервис → Скачивание+распаковка репозитория → Анализ файлов → Callback
  • Микросервис скачивает репозиторий или обрабатывает ZIP
  • Применяет правила обнаружения секретов
  • Фильтрует результаты через правила исключений, применяет модель-классификатор
  • Отправляет результаты через callback API

3. Обработка результатов

Callback API → Анализ предыдущих решений → Сохранение в БД
  • Поиск аналогичных секретов в предыдущих сканах
  • Автоматическое применение ранее принятых решений
  • Сохранение новых секретов с унаследованными статусами
  • Обновление статуса скана на "completed"

4. Анализ и управление

  • Веб-интерфейс для просмотра результатов с фильтрацией
  • Групповые операции изменения статусов
  • Экспорт отчетов в 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)

API интеграция

Микросервис API

  • /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

Первый запуск

  1. Установка зависимостей: pip install -r requirements.txt
  2. Запуск мастера настройки: python run.py
  3. Автоматическое создание структуры БД и администратора
  4. Настройка параметров подключения к микросервису

Масштабирование

  • Поддержка PostgreSQL
  • Асинхронная обработка длительных операций

About

Полноценный сервис для сканирования репозиториев на нескрытые секреты

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published