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:
@@ -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. Не полагайтесь на симулятор для
|
||||
тестирования защиты от эксфильтрации живых учётных данных против реальных
|
||||
провайдеров.
|
||||
Reference in New Issue
Block a user