- 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)
4.3 KiB
Language / Язык: English | Русский
Аутентификация
Симулятор реализует аутентификацию Proxmox-совместимыми тикетами и API-токенами с проверкой ACL для не-root принципалов.
Вход по тикету
POST /api2/json/access/ticket
Content-Type: application/x-www-form-urlencoded
username=root@pam&password=secret
Успешный ответ включает:
ticket— также устанавливается как HttpOnly cookiePVEAuthCookie(SameSite=Strict)CSRFPreventionToken— обязателен для мутаций с аутентификацией по тикетуusernameи связанные поля идентичности
Тикеты подписываются HMAC с TICKET_SIGNING_KEY, по умолчанию истекают через два часа
и допускают небольшой сдвиг часов в будущее.
Правила CSRF
| Запрос | Сессия по тикету | API-токен |
|---|---|---|
GET / HEAD / OPTIONS |
Достаточно cookie (или тикета) | Заголовок Authorization |
| Другие методы | Cookie и заголовок CSRFPreventionToken |
CSRF не требуется |
curl -X POST \
-H "Cookie: PVEAuthCookie=$TICKET" \
-H "CSRFPreventionToken: $CSRF" \
-d '...' \
http://localhost:8006/api2/json/nodes/pve01/qemu/100/status/start
API-токены
Формат заголовка:
Authorization: PVEAPIToken=USER@REALM!TOKENID=SECRET
Секреты хранятся только как scrypt-хеши. Создание и явная регенерация возвращают plaintext-секрет один раз; list и read его никогда не выводят. Удаление токена немедленно его инвалидирует.
Привилегии токена — пересечение привилегий токена и эффективных (прямых + унаследованных) ACL владельца. Токен не может эскалировать права выше владельца.
Seeded development-принципалы
Сидятся каждым профилем — включая minimal и после demo unload в Web UI.
Unload уменьшает guests/nodes/storages; лабораторные принципалы и токены
apply_seed всё равно вставляет:
| Принципал | Пароль | Токен | Примечания |
|---|---|---|---|
root@pam |
secret |
automation / automation-secret |
Полный доступ по тикету; токен всё равно ограничен при ограниченных привилегиях |
auditor@pve |
auditor-secret |
readonly / readonly-secret |
Унаследованный auditor ACL — чтение OK, power ops запрещены |
operator@pve |
operator@pve-password |
operator / operator-secret |
VM audit/power на /vms |
storage@pve |
storage@pve-password |
storage / storage-secret |
Область datastore на /storage |
Эти учётные данные только для лаборатории. Смените или отключите их перед выходом в сеть за пределы вашей рабочей станции.
Root vs ACL
Root-сессии по тикету обходят обычные проверки ACL в Proxmox-совместимом смысле, используемом этим симулятором. Отдельные API-токены остаются ограниченными. Тесты совместимости проверяют разделение привилегий для персон auditor/operator/storage.
Связанные пути
- Тикет:
/access/ticket - Пользователи / группы / роли / ACL / realm'ы / permissions
- Токены:
/access/users/{userid}/token[/{tokenid}] - TFA и OpenID: durable локальное состояние; без живых вызовов IdP
См. доменное руководство Access.