https://github.com/downstize/security-events-suite
Система генерации и обработки событий с формированием инцидентов по заданным шаблонам. Построена на ASP.NET Core и включает два микросервиса: генератор событий и процессор инцидентов.
https://github.com/downstize/security-events-suite
aspnet-core docker dotnet6 entity-framework-core microservices rest-api
Last synced: 28 days ago
JSON representation
Система генерации и обработки событий с формированием инцидентов по заданным шаблонам. Построена на ASP.NET Core и включает два микросервиса: генератор событий и процессор инцидентов.
- Host: GitHub
- URL: https://github.com/downstize/security-events-suite
- Owner: Downstize
- License: mit
- Created: 2025-04-14T19:58:14.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-14T20:10:55.000Z (about 1 year ago)
- Last Synced: 2025-06-24T22:48:49.941Z (12 months ago)
- Topics: aspnet-core, docker, dotnet6, entity-framework-core, microservices, rest-api
- Language: C#
- Homepage:
- Size: 3.33 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SecurityEventsSuite.sln
Awesome Lists containing this project
README
# Security Events Suite
## 📌 Описание проекта
Security Events Suite — это система для генерации и обработки событий, которая используется для создания и хранения инцидентов на основе поступающих данных (например, событий системы безопасности от камер или датчиков).
В системе реализованы два сервиса:
- **Generator Service**
Генерирует события автоматически в случайные интервалы (примерно в диапазоне [время предыдущего события; время предыдущего события + 2 секунды]). Также имеет REST API (Swagger) для ручного создания событий. Каждый раз при генерации события сервис отправляет его через HTTP в Processor Service.
- **Processor Service**
Принимает события через REST API (Swagger), проверяет их согласно заранее заданным шаблонам и создает на их основе инциденты. Инциденты сохраняются в базе данных. Логика обработки реализована с использованием двух шаблонов:
- **Шаблон №1 (простой):** Если получено событие с `Event.Type = 1`, то сразу создаётся инцидент типа 1.
- **Шаблон №2 (составной):** Если получено событие с `Event.Type = 2` и затем в течение 20 секунд (не позже) поступает событие с `Event.Type = 1`, то создаётся инцидент типа 2; если подтверждение не поступает — создаётся инцидент типа 1 на основе события типа 2.
- **Шаблон №3 (составной):** Если получено событие с `Event.Type = 3` и затем в течение 60 секунд (не позже) появляется подтверждение (через создание инцидента типа 2 или поступление события типа 1), то создаётся инцидент типа 3; если подтверждения нет — на основе события типа 3 создаётся инцидент типа 1.
## Технологии
- **Backend:** ASP.NET Core (.NET 6), Entity Framework Core
- **База данных:** PostgreSQL
- **Сервисы:** Generator и Processor (реализованы как отдельные ASP.NET Core API приложения с BackgroundService)
- **Контейнеризация:** Docker, Docker Compose
## Доступ к сервисам
| Сервис | URL Swagger |
|-------------------|----------------------------------------------|
| **Processor** | [http://localhost:5129/swagger/index.html](http://localhost:5129/swagger/index.html) |
| **Generator** | [http://localhost:7018/swagger/index.html](http://localhost:7018/swagger/index.html) |
---
## 🛠️ Запуск проекта
### 1️⃣ **Клонирование репозитория**
```sh
git clone https://github.com/Downstize/security-events-suite.git
cd SecurityEventsSuite
```
### 2️⃣ **Запуск через Docker**
```sh
docker-compose up --build
```
---
Docker Compose поднимет контейнеры для PostgreSQL, Generator Service и Processor Service.
### 3. Тестирование
- Для ручного создания события откройте Swagger UI по адресу [http://localhost:7018/swagger/index.html](http://localhost:7018/swagger/index.html) (Generator Service) и отправьте запрос на создание события (например, с типом 2 или 3).
- Для просмотра полученных инцидентов зайдите в Processor Service через Swagger [http://localhost:5129/swagger/index.html](http://localhost:5129/swagger/index.html).
## Архитектура и рабочий процесс
1. **Генерация событий (Generator Service):**
- Сервис запускает фоновую задачу, которая генерирует события автоматически с случайными интервалами (до 2 секунд).
- Через REST API (Swagger) можно вручную создать событие с нужным типом.
- При генерации событие отсылается HTTP-запросом в Processor Service.
2. **Обработка событий (Processor Service):**
- При получении события сервис анализирует его тип.
- При событии типа 1 сразу создаётся инцидент типа 1.
- При событии типа 2 запускается ожидание подтверждения в течение 20 секунд. Если в течение этого времени поступает событие типа 1, то создаётся инцидент типа 2, иначе — по таймауту создаётся инцидент типа 1.
- При событии типа 3 запускается ожидание подтверждения в течение 60 секунд. Если подтверждение поступает (через появление события типа 1 или создание инцидента типа 2) в течение 60 секунд, то создаётся инцидент типа 3, иначе — инцидент типа 1.
- Инциденты сохраняются в базе данных вместе со списком событий, на основе которых они были созданы.
## 📂 Структура проекта
```
SecurityEventsSuite/
├── Processor/ # Processor Service (ASP.NET Core API)
│ ├── Controllers/ # API контроллеры Processor
│ ├── Data/ # EF Core контекст базы и миграции
│ ├── Models/ # Модели (Event, Incident, Enums)
│ ├── Services/ # Логика обработки событий и создания инцидентов
│ ├── Program.cs # Входная точка Processor
│ └── appsettings.json # Конфигурация Processor
│
├── Generator/ # Generator Service (ASP.NET Core API)
│ ├── Controllers/ # API контроллеры Generator
│ ├── Models/ # Модель Event и перечисления
│ ├── Services/ # Генерация событий (фоновые задачи, REST API)
│ ├── Program.cs # Входная точка Generator
│ └── appsettings.json # Конфигурация Generator
│
├── docker-compose.yml # Конфигурация Docker Compose
└── README.md # Документация проекта
```
## 🛠 Разработчик
- **Вячеслав** - Backend/Архитектура
---
## 📝 Лицензия
Этот проект распространяется под лицензией MIT.