From fa16b024557bb5123c2f08147a14303df1003600 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Sun, 11 Oct 2026 19:49:33 +0300 Subject: [PATCH] =?UTF-8?q?docs(history):=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BA=D0=B8=20=D1=80=D0=B0=D0=B7=D0=B2=D1=91=D1=80=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D0=BE=D0=B3=D0=BE=20IoT=20=E2=80=94=20PASS=3D12=20?= =?UTF-8?q?FAIL=3D0=20(auth/ACL/tenant-=D0=B8=D0=B7=D0=BE=D0=BB=D1=8F?= =?UTF-8?q?=D1=86=D0=B8=D1=8F/=D0=B4=D0=B5=D0=B4=D1=83=D0=BF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/2026-10-11-session-log.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/HISTORY/2026-10-11-session-log.md b/HISTORY/2026-10-11-session-log.md index 74b2e6a..1e37d2d 100644 --- a/HISTORY/2026-10-11-session-log.md +++ b/HISTORY/2026-10-11-session-log.md @@ -205,3 +205,25 @@ consumer → per-tenant PostgreSQL → HTTP API. дедуп работают. Тестовые артефакты: устройство `e2e-nubes/dev1`, БД `tenant_e2e_nubes`. Осталось (не блокеры): Terraform на PROD; чистка тестовых артефактов e2e (по команде). + +## 9. Проверки безопасности/корректности развёрнутого IoT — PASS=12 FAIL=0 + +Скрипт `/tmp/e2e_neg.py` (тест-стенд, namespace `e2e-nubes`, устройство `dev1`): + +| # | Проверка | Результат | +|---|---|---| +| 1 | MQTT auth: верные креды | `CONNACK rc=0` ✅ | +| 2 | MQTT auth: неверный пароль | `rc=4` (bad user/password) ✅ | +| 3 | MQTT auth: неизвестный пользователь | `rc=5` (not authorized) ✅ | +| 4 | API без токена | `401` ✅ | +| 5 | API: `sub` ≠ namespace в пути | `403` ✅ | +| 6 | API: подделанная подпись JWT | `401` ✅ | +| 7 | MQTT ACL: публикация в чужой топик `other-ns/telemetry/x` | соединение разорвано (`deny_action=disconnect`) ✅ | +| 8 | Дедуп: два одинаковых payload | `iot_telemetry` 1→2 (+1, не +2), `message_id` SHA256 ✅ | +| 9 | `PATCH enabled=false` | `200` ✅ | +| 10 | MQTT auth выключенного устройства | `rc=5` ✅ | +| 11 | `PATCH enabled=true` | `200` ✅ | +| 12 | MQTT auth после включения | `rc=0` ✅ | + +Вывод: auth (bcrypt из PG), ACL (own-topic only, disconnect на нарушение), tenant-изоляция API +(`namespace == sub`), проверка подписи JWT и дедуп повторов — работают на развёрнутом стенде.