197 lines
7.2 KiB
Markdown
197 lines
7.2 KiB
Markdown
# UEBA Confidence Model
|
||
|
||
Документ описывает защитный слой интерпретации UEBA Score v1 в AWatch-rus.
|
||
|
||
Важно: этот слой не меняет scoring, weights, thresholds или severity. Он
|
||
объясняет, насколько можно доверять рассчитанному severity в текущем срезе.
|
||
|
||
## Зачем нужен слой уверенности
|
||
|
||
UEBA Score отвечает на вопрос:
|
||
|
||
```text
|
||
Насколько сильна обнаруженная аномалия?
|
||
```
|
||
|
||
Confidence отвечает на другой вопрос:
|
||
|
||
```text
|
||
Насколько достаточно данных, чтобы доверять выводу?
|
||
```
|
||
|
||
Поэтому `critical` не означает автоматически подтвержденный инцидент. При
|
||
низкой уверенности корректная трактовка:
|
||
|
||
```text
|
||
Высокая аномалия обнаружена, но требуется ручная проверка данных.
|
||
```
|
||
|
||
## Severity
|
||
|
||
Severity остается частью UEBA Score v1:
|
||
|
||
| Score | Severity | Смысл |
|
||
| --- | --- | --- |
|
||
| `0-14` | `normal` | Существенная аномалия не выявлена |
|
||
| `15-39` | `low` | Низкий риск, наблюдение |
|
||
| `40-69` | `medium` | Требуется внимание |
|
||
| `70-84` | `high` | Требуется ручная проверка |
|
||
| `85-100` | `critical` | Срочная ручная проверка |
|
||
|
||
Severity не подтверждает нарушение само по себе.
|
||
|
||
## Confidence
|
||
|
||
Поддерживаемые уровни:
|
||
|
||
| Confidence | Смысл |
|
||
| --- | --- |
|
||
| `high` | Данные свежие, покрытие достаточное, сигналы согласованы |
|
||
| `medium` | Есть частичные пропуски или ограниченное подтверждение |
|
||
| `low` | Покрытие ниже порога, отсутствуют источники или evidence |
|
||
| `unknown` | Данных недостаточно для оценки уверенности |
|
||
|
||
## Confidence Contributors
|
||
|
||
Модель учитывает шесть факторов:
|
||
|
||
| Фактор | Что проверяется |
|
||
| --- | --- |
|
||
| `agent_coverage` | Доля ожидаемых рабочих мест со свежей телеметрией |
|
||
| `data_freshness` | Свежесть данных по ожидаемым узлам |
|
||
| `telemetry_completeness` | Наличие Worktime, приложений и классификации |
|
||
| `evidence_presence` | Наличие evidence metadata или screenshots |
|
||
| `history_depth` | Глубина baseline и число samples |
|
||
| `signal_consistency` | Есть ли независимые подтверждающие сигналы |
|
||
|
||
Если хотя бы один критичный contributor находится в `low`, общий confidence
|
||
становится `low`. Это сделано намеренно: лучше потребовать ручную проверку,
|
||
чем выдать высокий score за подтвержденный инцидент.
|
||
|
||
## Classification
|
||
|
||
Classification не заменяет severity. Она показывает, как интерпретировать
|
||
severity с учетом confidence.
|
||
|
||
| Classification | Смысл |
|
||
| --- | --- |
|
||
| `confirmed_risk` | Риск как сигнал подтвержден достаточным качеством данных |
|
||
| `likely_risk` | Риск вероятен, но подтверждение неполное |
|
||
| `needs_investigation` | Высокий score есть, но уверенность недостаточна |
|
||
| `insufficient_data` | Данных недостаточно даже для уверенной оценки риска |
|
||
|
||
`confirmed_risk` не означает автоматически подтвержденный ИБ-инцидент, DLP
|
||
событие или нарушение сотрудника. Это только подтверждение качества risk signal.
|
||
|
||
## API
|
||
|
||
`GET /api/ueba` возвращает дополнительные поля:
|
||
|
||
```json
|
||
{
|
||
"severity": "critical",
|
||
"score": 100,
|
||
"confidence": "low",
|
||
"confidence_score": 0.8,
|
||
"classification": "needs_investigation",
|
||
"classification_reason": "agent_coverage:coverage_below_target",
|
||
"confidence_reasons": [
|
||
"agent_coverage:coverage_below_target"
|
||
],
|
||
"evidence_status": "not_available"
|
||
}
|
||
```
|
||
|
||
Полный объект `risk` также содержит:
|
||
|
||
- `confidence_level`;
|
||
- `classification`;
|
||
- `classification_reason`;
|
||
- `confidence_reasons`;
|
||
- `confidence_contributors`;
|
||
- `evidence_status`.
|
||
|
||
## Risk Narrative
|
||
|
||
Risk Narrative получает поля:
|
||
|
||
```json
|
||
{
|
||
"confidence": "low",
|
||
"classification": "needs_investigation"
|
||
}
|
||
```
|
||
|
||
При `low` или `unknown` confidence Risk Narrative должен говорить о ручной
|
||
проверке и полноте данных, а не о подтвержденном нарушении.
|
||
|
||
## Action Center
|
||
|
||
Если UEBA confidence низкий или classification равен `needs_investigation`,
|
||
Action Center добавляет действие:
|
||
|
||
```text
|
||
Проверить полноту данных
|
||
```
|
||
|
||
Это действие не исправляет данные автоматически и не меняет scoring. Оно
|
||
адресует оператору необходимость проверить покрытие, свежесть и completeness
|
||
до жестких управленческих выводов.
|
||
|
||
## Интерпретация для ролей
|
||
|
||
### Руководитель
|
||
|
||
Корректно:
|
||
|
||
```text
|
||
Система видит критичную аномалию, но уверенность низкая. Сначала проверяем
|
||
полноту данных, затем принимаем управленческое решение.
|
||
```
|
||
|
||
Некорректно:
|
||
|
||
```text
|
||
Critical означает доказанное нарушение.
|
||
```
|
||
|
||
### ИБ
|
||
|
||
Корректно:
|
||
|
||
```text
|
||
Critical + low confidence = приоритет ручного triage, не подтвержденный incident.
|
||
```
|
||
|
||
Некорректно:
|
||
|
||
```text
|
||
Critical UEBA автоматически является DLP/SIEM incident.
|
||
```
|
||
|
||
### Эксплуатация
|
||
|
||
Корректно:
|
||
|
||
```text
|
||
При low confidence сначала проверяются agent coverage, freshness и missing
|
||
telemetry.
|
||
```
|
||
|
||
## Ограничения
|
||
|
||
- Confidence layer не использует ML или LLM.
|
||
- Confidence layer не меняет score, severity, thresholds или weights.
|
||
- Confidence layer не подтверждает ИБ-инциденты автоматически.
|
||
- pfSense readiness остается `contract_only`, если нет фактического ingestion.
|
||
|
||
## Acceptance Interpretation
|
||
|
||
Для Pilot/Demo Freeze v1 правильная трактовка:
|
||
|
||
```text
|
||
Severity показывает силу аномалии.
|
||
Confidence показывает качество данных.
|
||
Classification показывает, можно ли делать вывод или нужен ручной разбор.
|
||
```
|