3.9 KiB
3.9 KiB
Безопасность
forge-tools-proxmox намеренно устроен так, чтобы AI-ассистент не мог выйти за
рамки, заданные оператором. Если вы нашли способ обойти эти рамки — сообщите,
пожалуйста, команде разработки, не открывая публичный issue.
Модель угроз
- Хосты и кластеры. URL гипервизора объявляет оператор в конфиге; модель его
не задаёт. Права изолированы per-host:
allow_nodes/allow_vmidsу каждогоhosts[]свои, поэтому одинаковыйvmidна разных кластерах даёт разный вердикт. - Неоднозначность — отказ. При
len(hosts) > 1параметрhostобязателен для всех инструментов (кромеclusters_list); глобальный allowlist при мульти-хосте запрещён как ошибка конфигурации. Всё это fail-closed. - Учётные данные. Ассистент работает только с alias хоста;
token_idиtoken_secretберутся из конфига (подстановка${VAR}или gitignored*.local.json). Произвольные токены/пароли из модели не используются. - Мутации. Дефолт
read_only: true; без явныхallow_vmidsмутации недостижимы. Деструктивные операции требуютconfirm="true"и эмитят permission-паттерны (host=<alias> node=<node> vmid=<vmid>) для внешнего движка одобрения.DenyConfigKeyблокирует правку потенциально опасных ключей конфига ВМ (delete/revert/hotplug/spice/…). - Инъекции. Значения
node/vmid/snapshot/storage/upidпроходят guard-валидацию (ValidateIdentifier/ValidateUPID) иurl.PathEscapeперед попаданием в URL API. - Таймауты и объёмы. Настраиваемые
timeout_sec,task_poll_max_secиmax_output_bytesограничивают время и размер ответа.
Границы модуля
- Запуск кода внутри гостя не реализуется — это зона
ssh__run(remote exec). - Восстановление/удаление бэкапов, Ceph/ZFS/SDN/firewall/HA/ACL, node reboot/shutdown — сознательно вне модуля (blast-radius и отдельная семантика; см. Roadmap в README).
Известные ограничения
insecure: trueотключает проверку TLS-сертификата. Это осознанный компромисс только для локального dev-lab; в проде используйтеca_file.- Главный барьер — на стороне PVE. Токен заводите с минимальными правами
(для чтения достаточно
Sys.Audit, VM.Audit, Datastore.Audit); guard модуля — лишь второй слой.
Гигиена репозитория
- Реальные адреса и токены в репозиторий не коммитятся: только
pve.json.exampleс подстановками${VAR}. - Бинарник и локальные конфиги исключены через
.gitignore(/forge-tools-proxmox,/pve.json,*.local.json).
Перед публикацией убедитесь, что токены и рабочие конфиги не попали в репозиторий
(см. .gitignore).