Harden DetMir DLP production runtime
CI / Rust checks (push) Canceled after 0s
CI / Docs and registry checks (push) Canceled after 0s
CI / Smoke checks (push) Canceled after 0s
Coverage / Coverage baseline (push) Canceled after 0s
Security / Cargo audit (push) Canceled after 0s
Security / Cargo deny (push) Canceled after 0s
Security / Secret pattern check (push) Canceled after 0s
Security / Dependency review (push) Canceled after 0s

- default DetMir DLP runtime to core_only/disabled with load-guard protection

- add fail-closed placeholder validation and runtime-scoped artifact checks

- document operator re-enable flow for light profile and guard rollback

- update prod docs, env examples, and Ansible DLP defaults
This commit is contained in:
igor04091968
2026-07-01 00:05:23 +03:00
parent 1149f5dfbd
commit fe87c85a31
26 changed files with 3053 additions and 220 deletions
+80 -18
View File
@@ -26,19 +26,38 @@ logical host id остаётся `SHARKON2025`. Подробный post-restore
`653b22b0fbf29a22f7de42ade7b689490b1de16fa07e785e4e0efd3078e7a3bc`.
- Бэкап предыдущего binary на сервере:
`/usr/local/bin/detmir-portal.bak.20260625T045640Z`.
- Runtime mode после phase 1 deploy:
`DETMIR_PORTAL_DLP_MODULE_ENABLED=false`.
- Runtime mode после 2026-06-30 prod hardening:
server-side DLP runtime зафиксирован в `core_only/disabled`.
Portal DLP UI/API module может оставаться включённым для чтения исторического
SQLite/evidence-среза, но это не означает запуск DLP collectors/exporters.
- Server-side optional DLP runtime control:
`AW_DLP_ENABLED=false|true` и `DETMIR_DLP_ENABLED=false|true`.
- Current resource profile: `AW_DLP_ENABLED=false`,
`AW_DLP_PROFILE=core_only`; возврат в `light` выполняется только вручную
после проверки нагрузки.
- Runtime control/statistics script:
`scripts/detmir_dlp_runtime_control.sh` / live
`/usr/local/bin/detmir-dlp-runtime-control`.
- Live DLP runtime state after 2026-06-25 controlled disable:
`AW_DLP_ENABLED=false`, `AW_DLP_INFLUX_ENABLED=false`;
active/enabled DLP units: `0/0`.
- DLP runtime state after 2026-06-30 prod hardening:
`AW_DLP_ENABLED=false`, `AW_DLP_PROFILE=core_only`,
`AW_DLP_INFLUX_ENABLED=false`; optional DLP units should be
`inactive/disabled`. `detmir-dlp-load-guard.timer` remains enabled and active
as protection for any later operator re-enable.
- Reason: DLP runtime materially increases Proxmox VM/LXC, InfluxDB, Grafana,
ClickHouse and AW server load. In production DetMir it is currently kept
disabled, but remains a documented optional module that can be enabled later.
ClickHouse and AW server load. In production DetMir the safe default is
`core_only`; `light` is a reconnectable profile, not the automatic default.
- Auto-disable guard:
`scripts/detmir_dlp_load_guard.sh` / live
`/usr/local/bin/detmir-dlp-load-guard`. При перегрузе переводит DLP в
`core_only` через runtime-control и пишет evidence в
`/var/lib/activitywatch/health/dlp-light-guard-state.json`.
- DLP warehouse sync для портала:
`scripts/detmir_dlp_warehouse_sync.sh` / live
`/usr/local/bin/detmir-dlp-warehouse-sync`. Доставляет локальный SQLite
snapshot на portal host для UEBA/DLP views без heavy DLP hot path.
- Loki CT is intentionally excluded from the current DetMir production resource
profile. It must not be returned by routine deploy/recovery while the goal is
to keep Proxmox VM/LXC load low.
- Health после деплоя: `/healthz` возвращал `status=ok`.
- Readiness после деплоя: `/readyz` возвращал `status=ready`.
@@ -84,9 +103,11 @@ logical host id остаётся `SHARKON2025`. Подробный post-restore
- DLP evidence, screenshots, endpoint signals, case review и forensics
enrichment требуют больше CPU/IO/сетевых операций, чем Workforce core.
Вывод: DLP/evidence/forensics enrichment уже вынесен из обязательного hot path
phase 1 через `DETMIR_PORTAL_DLP_MODULE_ENABLED=false`, но полная оптимизация
тяжелого snapshot/prewarm остается отдельной инженерной задачей.
Вывод: DLP/evidence/forensics enrichment вынесен из обязательного hot path.
Phase 1 делал это через `DETMIR_PORTAL_DLP_MODULE_ENABLED=false`; текущий
lightweight-профиль оставляет DLP-status/UEBA-сигналы включенными без тяжелого
evidence/case/exporter path. Полная оптимизация тяжелого snapshot/prewarm
остается отдельной инженерной задачей.
## Целевая граница после переработки
@@ -154,23 +175,45 @@ AW_DLP_ENABLED=true|false
DETMIR_DLP_ENABLED=true|false
```
Default остается `true`, чтобы существующее поведение не менялось без явного
решения администратора. Для ускоренного Workforce/operator режима допускается
`DETMIR_PORTAL_DLP_MODULE_ENABLED=false`; в этом режиме портал:
DetMir production default после 2026-06-30 hardening:
`AW_DLP_ENABLED=false` / `AW_DLP_PROFILE=core_only`. Portal DLP module may stay
enabled for historical/security views, but server-side DLP collectors/exporters
remain off. В этом режиме портал:
- не читает DLP incident/case/review/audit файлы в основном report/operator
path;
- отключает security-events backend внутри snapshot, не меняя сохраненные
ClickHouse credentials;
- возвращает disabled-state для DLP evidence API;
- не считает отсутствие DLP ошибкой Workforce core.
- использует только уже имеющийся лёгкий DLP-срез для UEBA и статуса;
- не включает evidence/case/exporters/Loki/Influx-heavy path;
- не считает отсутствие heavy DLP ошибкой Workforce core.
Ansible-параметр поставки:
Ansible-параметр поставки для старого disabled-профиля:
```yaml
detmir_portal_dlp_module_enabled_override: false
```
Для текущего safe production профиля:
```yaml
detmir_portal_dlp_module_enabled_override: true
aw_dlp_profile: "core_only"
aw_dlp_enabled: false
aw_dlp_influx_enabled: false
aw_dlp_light_collector_enabled: false
aw_dlp_light_guard_enabled: true
```
Возврат в `light` выполняется только после resource check:
```bash
sudo AW_DLP_DISABLED_REASON=operator_reenable_after_resource_check \
/usr/local/bin/detmir-dlp-runtime-control set-profile light
sudo sed -i \
-e 's/^AW_DLP_ENABLED=.*/AW_DLP_ENABLED=true/' \
-e 's/^AW_DLP_PROFILE=.*/AW_DLP_PROFILE=light/' \
/etc/activitywatch/aw-server.env
```
Отдельный `detmir-portal-evidence` сервис не отключается этим флагом и остается
самостоятельным контуром evidence/API при наличии отдельной конфигурации.
@@ -189,6 +232,7 @@ Hayabusa/Velociraptor boundary:
Server-side optional DLP runtime описан отдельно:
- [DLP_OPTIONAL_RUNTIME_RU.md](DLP_OPTIONAL_RUNTIME_RU.md).
- [DLP_RESOURCE_PROFILES_RU.md](DLP_RESOURCE_PROFILES_RU.md).
При `AW_DLP_ENABLED=false`:
@@ -197,10 +241,27 @@ Server-side optional DLP runtime описан отдельно:
- `detmir-check`, `check-aw-full` и `check-aw-data` не считают DLP buckets
обязательными;
- `detmir-readiness` не требует DLP Influx write и DLP systemd units;
- DLP profile changes use
`/usr/local/bin/detmir-dlp-runtime-control set-profile <profile>` and keep a
rollback snapshot for `/usr/local/bin/detmir-dlp-runtime-control rollback`;
- перед отключением и после отключения собираются JSON-срезы в
`/var/lib/activitywatch/health/dlp-runtime-history/`, latest-срез остается в
`/var/lib/activitywatch/health/dlp-runtime-state.json`.
При `AW_DLP_PROFILE=light`:
- `activitywatch-dlp-aggregator.timer` собирает только ограниченный набор DLP
events в локальный SQLite warehouse;
- `detmir-dlp-warehouse-sync.timer` доставляет этот warehouse на portal host
атомарным snapshot;
- UEBA может учитывать `dlp_warn`/`dlp_fail` без запуска Loki/Influx-heavy path;
- `detmir-dlp-load-guard.timer` автоматически переводит профиль в `core_only`
при превышении порогов load/RAM/iowait;
- тяжёлые DLP units (`aw-dlp-influx-exporter`, report/syslog/webhook/CEF,
policy engine, case management, evidence API) должны оставаться выключенными.
- если `detmir-dlp-load-guard.timer` видит повторный перегруз, он автоматически
возвращает DLP runtime в `core_only`.
Live disable evidence 2026-06-25:
- `dlp-health-check` returned `ok=true`, `dlp:mode=disabled`;
@@ -307,6 +368,7 @@ curl -sS --max-time 5 http://10.10.10.2:8720/healthz
- Не удалять DLP collectors и warehouse ради ускорения портала.
- Не включать heavy DLP или Velociraptor server runtime автоматически при
обычном deploy без ресурсного решения.
- Не включать Loki CT автоматически при обычном deploy/recovery DetMir.
- Не менять UI/API несовместимо: новые поля должны быть additive.
- Не заявлять completed DLP decoupling до live deploy и browser/API smoke.
- Не позиционировать AWatch-rus как сертифицированную DLP/SIEM/EDR/СЗИ.
+67 -9
View File
@@ -1,14 +1,37 @@
# Optional DLP runtime for DetMir
Цель: DLP-контур должен отключаться управляемо, без ложных аварий в health/readiness и без автоматического подъема heavy-пайплайна, когда задача контура - снизить нагрузку на InfluxDB, Grafana и ClickHouse.
Цель: DLP-контур должен оставаться подключаемым, но production default для
DetMir сейчас `core_only/disabled`. Возврат в лёгкий режим выполняется вручную
после resource check; при перегрузе guard снова переводит DLP в `core_only`.
Ресурсные профили и rollback-процедура описаны отдельно:
[DLP_RESOURCE_PROFILES_RU.md](DLP_RESOURCE_PROFILES_RU.md).
## Что отключается
Текущий production-профиль DetMir после 2026-06-30 prod hardening -
`core_only/disabled`:
- `AW_DLP_ENABLED=false`;
- `AW_DLP_PROFILE=core_only`;
- `AW_DLP_INFLUX_ENABLED=false`;
- optional DLP timers/services inactive/disabled;
- `detmir-dlp-load-guard.timer` остаётся enabled/active как защита на случай
последующего operator re-enable;
- heavy DLP units, Influx exporter, evidence/case/report/integration units и
Loki остаются выключенными.
Автоотключение выполняет `detmir-dlp-load-guard`: при превышении порогов
load/RAM/iowait он переводит DLP в `core_only` через
`detmir-dlp-runtime-control set-profile core_only`. После стабилизации контур
возвращается вручную командой `set-profile light`.
Штатный runtime off включает:
- `AW_DLP_ENABLED=false` на AW server;
- `DETMIR_DLP_ENABLED=false` в управляющем DetMir contour check;
- `DETMIR_PORTAL_DLP_MODULE_ENABLED=false` для portal UI/API DLP-модуля;
- portal UI/API DLP-модуль может оставаться включённым для исторического
SQLite/evidence-среза; это не запускает server-side DLP runtime;
- остановку DLP timers/services:
- `aw-dlp-influx-exporter.timer`;
- `activitywatch-dlp-aggregator.timer`;
@@ -137,10 +160,31 @@ AW_DLP_ENABLED=false check-aw-full
## Возврат DLP
Для DetMir предпочтительно возвращать не весь DLP сразу, а лёгкий профиль.
Перед этим проверить load/RAM/iowait на Proxmox/AW/Influx/Grafana/ClickHouse.
```bash
sudo sed -i 's/^AW_DLP_ENABLED=.*/AW_DLP_ENABLED=true/' /etc/activitywatch/aw-server.env
sudo /usr/local/bin/detmir-dlp-runtime-control enable
sudo systemctl restart aw-worktime-api.service || true
sudo AW_DLP_DISABLED_REASON=operator_reenable_after_resource_check \
/usr/local/bin/detmir-dlp-runtime-control set-profile light
sudo sed -i \
-e 's/^AW_DLP_ENABLED=.*/AW_DLP_ENABLED=true/' \
-e 's/^AW_DLP_PROFILE=.*/AW_DLP_PROFILE=light/' \
-e 's/^AW_DLP_INFLUX_ENABLED=.*/AW_DLP_INFLUX_ENABLED=false/' \
/etc/activitywatch/aw-server.env
```
Если профиль ухудшил состояние контура:
```bash
sudo /usr/local/bin/detmir-dlp-runtime-control rollback
```
`on_demand` и `full` включаются только вручную после отдельного resource
preflight:
```bash
sudo /usr/local/bin/detmir-dlp-runtime-control set-profile on_demand
sudo /usr/local/bin/detmir-dlp-runtime-control set-profile full
```
Для portal:
@@ -187,13 +231,27 @@ production DetMir без отдельного ресурсного решени
В inventory/group vars:
```yaml
aw_dlp_profile: "core_only"
aw_dlp_enabled: false
aw_dlp_disabled_reason: "operator_disabled_to_reduce_influx_grafana_clickhouse_load"
aw_dlp_disabled_since: "2026-06-25"
detmir_portal_dlp_module_enabled_override: false
aw_dlp_influx_enabled: false
aw_dlp_light_collector_enabled: false
aw_dlp_light_guard_enabled: true
detmir_portal_dlp_module_enabled_override: true
```
При `aw_dlp_enabled: false` playbook пишет `AW_DLP_ENABLED=false`, не включает DLP service/timer runtime и не должен возвращать DLP Influx exporter/aggregator в active state.
Для временного operator re-enable в `light`:
```yaml
aw_dlp_profile: "light"
aw_dlp_enabled: true
aw_dlp_influx_enabled: false
aw_dlp_light_collector_enabled: true
aw_dlp_light_guard_enabled: true
```
При `aw_dlp_profile: light` playbook включает только лёгкий агрегатор, IOC
refresh и load guard. DLP Influx exporter, report/syslog/webhook/CEF,
policy/case/evidence и Loki не должны возвращаться в active state.
## Ограничения
+196
View File
@@ -0,0 +1,196 @@
# DLP resource profiles for DetMir
Дата фиксации: 2026-06-30.
Цель: сохранить стабильный Workforce/AW hot path на малом DetMir Proxmox
контуре и оставить DLP подключаемым модулем. Loki CT в текущем production
resource profile отключен намеренно и не является обязательной зависимостью
AWatch-rus.
## Профили
### `core_only`
Production default и аварийный/экономный профиль для DetMir.
- DLP runtime: выключен.
- DLP Influx exporter: выключен.
- DLP aggregators/report/syslog/webhook/CEF/case/evidence units: выключены.
- Loki/Promtail: выключены.
- Workforce, Worktime, ActivityWatch, ClickHouse 1C, Grafana core,
Hayabusa/Security Finding Inbox: работают независимо от DLP.
Назначение: безопасное состояние при перегрузе CPU/RAM/IOPS или при ручном
отключении DLP.
### `light`
Операторский re-enable профиль для DetMir после проверки ресурсов: лёгкий DLP
режим без Loki и без Influx-heavy path.
- Разрешены `activitywatch-dlp-aggregator.timer` и
`aw-dlp-ioc-refresh.timer`.
- `dlp-aggregator-rust` собирает ограниченный срез из bucket-ов
`aw-file-operations_` и `aw-dlp-incidents_` в локальный
`dlp_warehouse.sqlite` для последующей UEBA-корреляции.
- `detmir-dlp-warehouse-sync.timer` доставляет SQLite warehouse на portal host
через атомарный snapshot, чтобы DetMir Portal/UEBA читали локальный файл, а
не блокировали AW server hot path.
- Для агрегатора заданы короткий lookback, малый event limit, timeout,
`CPUQuota` и `MemoryMax`.
- Evidence, screenshots, case management и exporters остаются выключенными.
- InfluxDB/Grafana/Loki не участвуют в hot path лёгкого DLP.
- Используется для ежедневной эксплуатации, когда нужны DLP-сигналы для UEBA,
но нельзя нагружать Proxmox/Influx/Grafana/ClickHouse.
### `on_demand`
Временный режим для конкретного инцидента или окна проверки.
- Разрешены IOC refresh, policy engine, case management и evidence API.
- Influx exporter, CEF/syslog/webhook/report scheduler и aggregator остаются
выключенными, если администратор отдельно не выбрал `full`.
- После окна проверки профиль должен быть возвращён в `core_only`.
### `full`
Только вручную, только после resource preflight.
- Может включать DLP Influx exporter, aggregator, reports, integrations,
policy/case и evidence.
- На DetMir не является штатным production режимом.
- Запрещено включать автоматически при обычном deploy/recovery.
## Управление
На AW server:
```bash
sudo /usr/local/bin/detmir-dlp-runtime-control status
sudo /usr/local/bin/detmir-dlp-runtime-control set-profile core_only
sudo /usr/local/bin/detmir-dlp-runtime-control set-profile light
sudo /usr/local/bin/detmir-dlp-runtime-control set-profile on_demand
sudo /usr/local/bin/detmir-dlp-runtime-control set-profile full
sudo /usr/local/bin/detmir-dlp-load-guard
```
Перед каждым `set-profile` скрипт сохраняет rollback-снимок active/enabled
состояния DLP units:
```text
/var/lib/activitywatch/health/dlp-runtime-rollback.state
```
Откат к предыдущему состоянию:
```bash
sudo /usr/local/bin/detmir-dlp-runtime-control rollback
```
Важно: rollback восстанавливает только systemd active/enabled состояния DLP
units. Он не меняет retention, не удаляет данные и не включает Loki CT.
## Автоотключение при перегрузе
`detmir-dlp-load-guard.timer` запускает
`/usr/local/bin/detmir-dlp-load-guard`. Guard читает `/proc/loadavg`,
`/proc/meminfo` и `/proc/stat`; если load, свободная память или iowait выходят
за пороги несколько запусков подряд (`AW_DLP_GUARD_STRIKES_REQUIRED`, default
`3`), а DLP units активны, он переводит DLP в `core_only` через:
```bash
AW_DLP_DISABLED_REASON=auto_disabled_by_dlp_load_guard:<reason> \
/usr/local/bin/detmir-dlp-runtime-control set-profile core_only
```
State и история пишутся в:
```text
/var/lib/activitywatch/health/dlp-light-guard-state.json
/var/lib/activitywatch/health/dlp-light-guard-history/
```
Единичный IO/load spike фиксируется как `observe_overload`, но DLP не
отключается до достижения порога подряд. Guard не перезапускает
ActivityWatch/портал, не меняет маршруты, не трогает ClickHouse/Grafana и не
включает Loki. Возврат из `core_only` в `light` делает администратор после
стабилизации контура и проверки Proxmox/AW/Influx/Grafana/ClickHouse load. Если
перегруз повторится, guard снова переведёт профиль в `core_only`.
## Доставка DLP warehouse на портал
Portal читает DLP-срез из локального
`/var/lib/activitywatch/dlp_warehouse.sqlite`. На разнесённом контуре DetMir
этот файл создаётся на AW server, поэтому используется лёгкий sync:
```bash
sudo systemctl start detmir-dlp-warehouse-sync.service
sudo systemctl status detmir-dlp-warehouse-sync.timer
sudo jq . /var/lib/activitywatch/health/dlp-warehouse-sync-state.json
```
Sync делает SQLite backup на AW server и атомарно заменяет локальный файл на
portal host. Он не запускает DLP evidence/case/exporters и не включает Loki.
## Ansible defaults
Для DetMir production defaults должны оставаться экономными и
самозащищающимися:
```yaml
aw_dlp_profile: "core_only"
aw_dlp_enabled: false
aw_dlp_influx_enabled: false
aw_dlp_light_collector_enabled: false
aw_dlp_light_guard_enabled: true
detmir_portal_dlp_profile: "core_only"
detmir_portal_dlp_module_enabled_override: true
```
Для временного возврата в лёгкий профиль:
```yaml
aw_dlp_profile: "light"
aw_dlp_enabled: true
aw_dlp_influx_enabled: false
aw_dlp_light_collector_enabled: true
aw_dlp_light_guard_enabled: true
detmir_portal_dlp_profile: "light"
detmir_portal_dlp_module_enabled_override: true
```
Все тяжёлые DLP component flags должны быть `false`, пока администратор явно не
выбрал `on_demand` или `full`.
## Resource preflight перед `full`
Перед временным включением `full` проверить:
- Proxmox host load и steal/wait;
- свободную RAM и swap pressure;
- IOPS/latency storage;
- ClickHouse health и backlog ingest;
- InfluxDB/Grafana health, если они участвуют в выбранном профиле;
- ActivityWatch `/healthz`, Worktime API и portal latency;
- отсутствие старого Loki CT в autostart.
Если любой core-сервис деградирует, DLP возвращается в `core_only`.
## Проверка
```bash
DETMIR_RESILIENCE_EXPECT_DLP_PROFILE=light \
DETMIR_RESILIENCE_EXPECT_LOKI_OFF=1 \
scripts/detmir_resilience_check.sh --repo
```
Live check на сервере в `light` должен показывать inactive для heavy DLP units
и Loki units. В `core_only` inactive должны быть все optional DLP units.
## Запрещённые утверждения
- Не заявлять, что AWatch-rus заменяет DLP/SIEM/EDR.
- Не заявлять, что Loki обязателен для DetMir production.
- Не заявлять DLP health OK, если DLP выключен.
- Не запускать автоматическое блокирование рабочих станций без approve/apply
workflow.
+17
View File
@@ -47,6 +47,8 @@ bounded payload/query limits и role-gate smoke.
| `--slow-request-log-ms` | `AWATCH_PORTAL_SLOW_REQUEST_LOG_MS` | Порог медленного запроса для логов |
| `--environment` | `AWATCH_PORTAL_ENVIRONMENT` | Безопасное имя окружения |
| `--enabled-modules` | `AWATCH_PORTAL_ENABLED_MODULES` | Разрешенные модули портала |
| `--dlp-module-enabled` | `DETMIR_PORTAL_DLP_MODULE_ENABLED` | Включает DLP/security status для портала; может оставаться `true` для исторического SQLite/evidence-среза без запуска server-side DLP runtime |
| DLP resource profile | `AW_DLP_PROFILE`, `DETMIR_PORTAL_DLP_PROFILE` | Для DetMir production default `core_only`; `light` включается оператором после resource check |
Ограничения применяются к тяжелым API:
@@ -66,6 +68,21 @@ bounded payload/query limits и role-gate smoke.
возвращает `400`;
- слишком большое тело запроса возвращает `413`;
- role gate возвращает `403`.
- при `DETMIR_PORTAL_DLP_MODULE_ENABLED=true` и `AW_DLP_PROFILE=core_only`
портал может показывать исторический DLP/security status без запуска
collectors/exporters.
- при `DETMIR_PORTAL_DLP_MODULE_ENABLED=true` и `AW_DLP_PROFILE=light`
Workforce core, `/healthz`, `/readyz`, `/api/reports` и `/api/operator`
должны оставаться доступными без тяжелого DLP/case/evidence чтения.
- при `AW_DLP_ENABLED=false` и `DETMIR_DLP_ENABLED=false` server-side
DLP health/readiness/checks должны возвращать контролируемый disabled-state,
а не пытаться поднять DLP Influx/exporter/aggregator/case runtime.
Runbook: [DLP_OPTIONAL_RUNTIME_RU.md](DLP_OPTIONAL_RUNTIME_RU.md).
- при `AW_DLP_PROFILE=light` активны только lightweight collector/IOC/guard;
Loki/DLP heavy runtime должен оставаться inactive. При перегрузе
`detmir-dlp-load-guard` переводит DLP в `core_only`; возврат выполняется
только через profile switch и rollback, см.
[DLP_RESOURCE_PROFILES_RU.md](DLP_RESOURCE_PROFILES_RU.md).
### Request ID, logs и metrics
+22 -17
View File
@@ -66,23 +66,25 @@ backup, registry-readiness документации, плана российск
`653b22b0fbf29a22f7de42ade7b689490b1de16fa07e785e4e0efd3078e7a3bc`.
- DetMir portal cold-start UI hang: mitigated. During cold/prewarm state the UI
now shows `STALE / Первичный срез прогревается`, not endless loading.
- DetMir DLP hot-path boundary: phase 1 deployed on the portal service with
`DETMIR_PORTAL_DLP_MODULE_ENABLED=false`.
- DetMir DLP hot-path boundary: phase 1 deployed; current production runtime
uses `AW_DLP_ENABLED=false`, `AW_DLP_PROFILE=core_only`. The portal DLP module
may stay enabled for historical/security views, but server-side DLP
collectors/exporters are off.
- DetMir optional DLP runtime controls: implemented in code/docs through
`AW_DLP_ENABLED`, `DETMIR_DLP_ENABLED`,
`scripts/detmir_dlp_runtime_control.sh` and
`docs/DLP_OPTIONAL_RUNTIME_RU.md`.
- DetMir optional DLP runtime live state: disabled on 2026-06-25 to reduce
InfluxDB/Grafana/ClickHouse/AW server load. Evidence:
`dlp-health-check=dlp:mode disabled`, `detmir-dlp=dlp:mode disabled`,
active/enabled DLP units `0/0`, history snapshots under
`/var/lib/activitywatch/health/dlp-runtime-history/`.
- DetMir DLP contour status: disabled for the current production resource
profile, not removed. It remains a documented optional module and must only be
re-enabled after explicit operator decision and Proxmox/InfluxDB/Grafana/
ClickHouse capacity check.
- DetMir DLP buckets in manual full check: `SKIPPED` under
`AW_DLP_ENABLED=false`, not reported as dead.
`docs/DLP_OPTIONAL_RUNTIME_RU.md`. Resource profiles
`core_only|light|on_demand|full` and rollback are documented in
`docs/DLP_RESOURCE_PROFILES_RU.md`.
- DetMir optional DLP runtime state: 2026-06-25 controlled disable evidence is
retained; 2026-06-30 prod hardening keeps production in `core_only` by
default. `light` can be re-enabled by operator command after
Proxmox/InfluxDB/Grafana/ClickHouse capacity check.
- DetMir DLP contour status: server-side DLP collection is currently disabled;
heavy DLP remains optional and must only be enabled after explicit operator
decision and resource check.
- DetMir DLP auto-disable guard: `detmir-dlp-load-guard` records load/RAM/iowait
state and switches DLP to `core_only` if thresholds are exceeded.
- DetMir RDP collector freshness after 2026-06-29 restore: physical RDP target
is `192.168.100.19`, stable AW logical host id remains `SHARKON2025`.
Buckets are fresh/inactive as expected, collector guard quarantine was reset,
@@ -112,6 +114,9 @@ backup, registry-readiness документации, плана российск
resource usage. Proxmox LXC `202 loki-logs` is stopped, active config has
`onboot: 0`, and smoke checks skip Loki by default unless
`AW_SMOKE_LOKI_ENABLED=1` is set.
- DetMir DLP rollback guard: `detmir-dlp-runtime-control set-profile` stores
the previous DLP systemd active/enabled state and `rollback` restores it.
Rollback does not start Loki CT.
- DetMir restore baseline 2026-06-29:
`docs/DETMIR_RESTORE_BASELINE_2026-06-29_RU.md`.
- DetMir API smoke after phase 1: `/healthz` and `/readyz` OK;
@@ -197,9 +202,9 @@ backup, registry-readiness документации, плана российск
- External peer review remains pending.
- Community adoption remains low until external contributors, public reviews
and sustained third-party activity appear.
- DetMir DLP runtime disable is complete for the current live contour; deeper
long-term DLP product modularization and retention/cleanup policy remain
separate future work.
- DetMir lightweight DLP profile is implemented in repo defaults/scripts/docs;
heavy DLP modularization and retention/cleanup policy remain separate future
work.
- DetMir RDP collector/session recovery after 2026-06-29 restore is verified by
live smoke: `check-aw-full` reports `FRESH=8 STALE=0 DEAD=0`.