docs(history): проверки развёрнутого IoT — PASS=12 FAIL=0 (auth/ACL/tenant-изоляция/дедуп)
This commit is contained in:
@@ -205,3 +205,25 @@ consumer → per-tenant PostgreSQL → HTTP API.
|
|||||||
дедуп работают. Тестовые артефакты: устройство `e2e-nubes/dev1`, БД `tenant_e2e_nubes`.
|
дедуп работают. Тестовые артефакты: устройство `e2e-nubes/dev1`, БД `tenant_e2e_nubes`.
|
||||||
|
|
||||||
Осталось (не блокеры): Terraform на PROD; чистка тестовых артефактов e2e (по команде).
|
Осталось (не блокеры): 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 и дедуп повторов — работают на развёрнутом стенде.
|
||||||
|
|||||||
Reference in New Issue
Block a user