Initial commit: VMware vSphere API simulator scaffold.

Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API
contracts, docs, client examples, and the unit/integration/compatibility
test suite for local client and tooling labs without a real vCenter.
This commit is contained in:
2026-07-18 04:42:11 +03:00
commit f8d3cbdd59
422 changed files with 361335 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
**Language / Язык:** [English](../security.md) | [Русский](security.md)
# Безопасность
## Модель угроз лаборатории
Этот проект — **локальный / CI лабораторный симулятор**. Он не защищён как
multi-tenant публичный сервис vCenter. Учётные данные по умолчанию, демо-
элементы управления в UI и endpoint'ы совместимости удобны для разработки и
намеренно открыты в стандартном стеке Compose.
Не публикуйте порты `443` / `80` в недоверенные сети без дополнительных
средств защиты, которые вы предоставляете самостоятельно.
## Учётные данные и секреты
- Пароли хранятся как хэши scrypt (`vsphere_credentials.password_hash`).
- Session id — это непрозрачные токены (`vmware-api-session-id`) со
скользящим сроком действия 2 часа, отслеживаемые в PostgreSQL
(`vsphere_sessions`).
- Логи маскируют распознанные представления session id и паролей.
- Ответы сессий обновления/загрузки content library раскрывают только
endpoint'ы загрузки/скачивания, а не сырые секреты.
Меняйте `TICKET_SIGNING_KEY` для любой общей лаборатории. Заменяйте seeded-
пароли перед демонстрацией другим людям.
## Материалы TLS
`docker/tls/` содержит закоммиченный self-signed сертификат для локального
сервиса nginx `api-gateway`. Он существует, чтобы немодифицированные
TLS-клиенты (pyvmomi, govmomi, провайдер Terraform `hashicorp/vsphere`) могли
подключаться с установленным `insecure`/`verify=False`. **Никогда** не
используйте эти файлы повторно в production.
## Администрирование симулятора
На данный момент **нет** отдельно аутентифицируемой административной
control plane. Вспомогательные маршруты Web UI под `/ui/api/*` доступны,
когда процесс достижим по сети, — включая действия reseed и hot-swap.
Считайте сетевую доступность границей доверия.
## Авторизация
Мутирующие REST-эндпоинты проверяют привилегии, производные от роли
(`app/vsphere/security/authz.py`), прежде чем обращаться к инвентарю.
Seeded-принципал `readonly@vsphere.local` не может включать/создавать/
удалять ВМ (HTTP 403). См. [Авторизация](domains/authz.md).
## Симулированные внешние системы
Заменители NSX/Supervisor/vSAN/SAML-OIDC/VECS-сертификатов (см.
[Покрытие API](api-coverage.md)) сохраняют только локальное состояние
симулятора. Они не открывают реальных соединений с внешними IdP, NSX
Manager или живым кластером vSAN. Не полагайтесь на симулятор для
тестирования защиты от эксфильтрации живых учётных данных против реальных
провайдеров.