Prepare 0.1.0 for lab release: durable handlers, HTTP Compose, CI, and pulumi-tests.

- Harden DB-backed handlers and seed profiles; align client wire shapes for
  cluster resources, QEMU config, and node SSL fields
- Serve plain HTTP on Compose :8006; keep TLS optional (--profile tls) and
  terminate HTTPS at Kubernetes Ingress
- Add pulumi-tests (full contract surface majors 6–9 + BPG lifecycle) and
  make pulumi-tests
- Ship bilingual docs, CHANGELOG, SECURITY, CONTRIBUTING, and GitHub Actions
  (make ci + Compose/Helm validation)
This commit is contained in:
Sergey Antropoff
2026-07-18 04:18:05 +03:00
parent 777926487b
commit 48df10b17e
172 changed files with 7528 additions and 1208 deletions
+48
View File
@@ -0,0 +1,48 @@
**Language / Язык:** [English](../security.md) | [Русский](security.md)
# Безопасность
Политика репозитория и репортинг: [SECURITY.md](../../SECURITY.md).
## Модель угроз лаборатории
Этот проект — **локальный / CI лабораторный симулятор**. Он не закалён как
multi-tenant публичный сервис Proxmox. Учётные данные по умолчанию, demo-контролы UI
и эндпоинты совместимости удобны для разработки и намеренно открыты в стандартном
Compose-стеке.
Не выставляйте порт `8006` в недоверенные сети без дополнительных мер,
которые вы обеспечите сами. Хост `:8006` — lab HTTPS API-шлюз (у реального PVE
на этом порту HTTPS). Хост **`:8007` этим стеком не используется** (на железе
обычно PBS). См. [Порты и TLS](configuration.md#порты-и-tls).
## Учётные данные и секреты
- Пароли и секреты API-токенов хранятся как scrypt-хеши.
- Значения тикетов подписываются HMAC и краткоживущие.
- CSRF привязывает мутации к сессиям по тикету.
- Логи редактируют распознанные представления тикетов, паролей и токенов.
- Ответы create/regenerate токена показывают секрет один раз; GET его никогда не
выводит.
Меняйте `TICKET_SIGNING_KEY` для любой общей лаборатории. Замените seeded-пароли и
токены перед демонстрацией другим людям.
## TLS-материалы
`docker/tls/` содержит встроенный self-signed сертификат для локального шлюза. Он
нужен, чтобы неизменённые TLS-клиенты (например, proxmoxer) могли подключаться.
**Никогда** не переиспользуйте эти файлы в production.
## Администрирование симулятора
Сейчас **нет** отдельно аутентифицированной control plane `/_simulator`.
Helper-маршруты Web UI под `/ui/api/*` и `/admin/compatibility*` доступны, когда
процесс достижим. Считайте границей доверия сетевую экспозицию.
## Симулированные внешние системы
LDAP sync stamps, pending-состояние OpenID, ACME и эндпоинты Ceph сохраняют только
локальное состояние симулятора. Они не открывают реальные подключения к внешним IdP
или кластерам. Не полагайтесь на симулятор для тестирования защиты от утечки
учётных данных к реальным провайдерам.