Files
Sergey Antropoff 48df10b17e 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)
2026-07-18 04:18:05 +03:00

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 cookie PVEAuthCookie (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.