Ужесточить контейнеры сервисов
Прикладные образы работают non-root (deal, UID 10001, HOME=/tmp); в compose добавлены read_only root FS, tmpfs /tmp, no-new-privileges, cap_drop ALL и лимиты mem/cpus. Логи stateless-сервисов вынесены в /tmp/logs. Проверено compose config (dev/prod/observability).
This commit is contained in:
@@ -428,8 +428,15 @@ DEAL_MTLS_ENABLED=0|1 DEAL_MTLS_CERT_PASSWORD=... DEAL_DEFAULT_AI_BU
|
||||
- Криптография/код: пароли Argon2id; секреты настроек AES-256-GCM (`enc:`, ключ
|
||||
`DEAL_ENCRYPTION_KEY`); сессии Telegram AES-256-GCM (`DEAL_TELEGRAM_SESSION_KEY`); SQL
|
||||
параметризуется; секреты в логи/аудит не пишутся.
|
||||
- **Hardening контейнеров (BL-IMG-HARDEN, 2026-09-11):** прикладные образы (core/telegram/ai/ml/storage)
|
||||
работают non-root (пользователь `deal`, UID 10001) с `HOME=/tmp`; в compose заданы `read_only: true`,
|
||||
`tmpfs: /tmp`, `security_opt: no-new-privileges`, `cap_drop: ALL` и лимиты `mem_limit`/`cpus` (якорь
|
||||
`x-service-hardening`). Данные — в именованных volume (`/app/data` core, `/data/sessions` telegram,
|
||||
`/data/ml` ml); логи stateless-сервисов — `DEAL_LOGS_DIR=/tmp/logs` (tmpfs), у core — volume
|
||||
`/app/data/logs`. Проверено `docker compose config` (dev и prod, включая профиль observability);
|
||||
живой подъём с этими ограничениями — ⚠ Manual.
|
||||
- **Вне этапа (не настроено; заделы §11/roadmap):** Cloudflare (конфигурация вне кода — шапка
|
||||
Caddyfile), k8s, non-root/read-only-дефолты образов, биллинг, UI админок, саморегистрация.
|
||||
Caddyfile), k8s, биллинг, UI админок, саморегистрация.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user