Создание пользователя и настройка прав в Proxmox VE
Пошаговое создание отдельного пользователя в Proxmox VE, назначение ролей, ограничение доступа по пути и проверка фактических прав.
Для повседневной работы в Proxmox VE не обязательно использовать учётную запись root@pam. Отдельные пользователи позволяют ограничить доступ к конкретным виртуальным машинам, хранилищам, пулам и административным операциям.
В этой инструкции рассматривается только создание пользователя, назначение ролей и проверка прав доступа.
Подходит для: Proxmox VE 8 и 9
Уровень сложности: средний
Время выполнения: около 15–20 минут
Требуемый доступ: учётная запись с правами управления пользователями и ACL
Что будет настроено
После выполнения инструкции можно будет:
- создать пользователя Proxmox VE;
- выбрать realm;
- создать группу;
- назначить роль;
- ограничить доступ по пути;
- использовать resource pool;
- проверить фактические привилегии;
- безопасно удалить лишние разрешения.
Почему не стоит работать только через root
Учётная запись:
root@pam
имеет полный доступ к узлу и кластеру.
Постоянная работа под root увеличивает последствия:
- ошибочного действия;
- компрометации пароля;
- утечки сессии;
- неверного API-запроса;
- случайного удаления VM или storage.
Для ежедневного администрирования лучше использовать отдельную учётную запись с минимально необходимыми правами.
Основные понятия
Система доступа Proxmox VE состоит из нескольких элементов:
User
Realm
Group
Role
Privilege
Path
ACL
User
Конкретная учётная запись.
Пример:
operator@pve
Realm
Источник аутентификации.
Примеры:
pam
pve
ldap
ad
openid
Group
Группа пользователей, которой можно назначить общие права.
Privilege
Отдельное разрешение на действие.
Примеры:
VM.Audit
VM.PowerMgmt
VM.Console
Datastore.Audit
Sys.Audit
Role
Набор привилегий.
Примеры встроенных ролей:
Administrator
PVEAdmin
PVEVMAdmin
PVEVMUser
PVEAuditor
PVEDatastoreAdmin
PVEDatastoreUser
Path
Область, к которой применяется ACL.
Примеры:
/
/vms/100
/pool/production
/storage/nfs-backup
/nodes/pve01
ACL
Связь пользователя или группы с ролью и путём.
Проверка текущих пользователей
В веб-интерфейсе:
Datacenter → Permissions → Users
Через CLI:
pveum user list
Проверка realms
В веб-интерфейсе:
Datacenter → Permissions → Realms
Через CLI:
pveum realm list
Для локального пользователя Proxmox VE обычно используется:
pve
Для системного Linux-пользователя:
pam
Разница между pve и pam
Realm pve
Пользователь хранится в конфигурации Proxmox VE.
Пример:
operator@pve
Подходит для отдельной учётной записи только в Proxmox.
Realm pam
Использует системную учётную запись Linux.
Пример:
admin@pam
Пользователь должен существовать в операционной системе узла.
Для обычного оператора Proxmox чаще удобнее realm pve.
Создание пользователя через веб-интерфейс
Откройте:
Datacenter → Permissions → Users
Нажмите:
Add
Заполните поля.
User name
Пример:
operator
Realm
Выберите:
Proxmox VE authentication server
То есть:
pve
Password
Задайте сложный уникальный пароль.
Expire
Оставьте пустым для бессрочной учётной записи либо задайте дату окончания.
Enabled
Оставьте включённым.
First name и Last name
Поля необязательны, но полезны для идентификации пользователя.
Нажмите:
Add
Создание пользователя через CLI
pveum user add operator@pve --comment "Оператор виртуальных машин"
Задайте пароль:
pveum passwd operator@pve
Проверьте:
pveum user list
Создание группы
Группы удобны, если одинаковые права нужны нескольким пользователям.
В веб-интерфейсе:
Datacenter → Permissions → Groups
Нажмите:
Create
Пример:
Group: vm-operators
Comment: Операторы виртуальных машин
Создание группы через CLI
pveum group add vm-operators --comment "Операторы виртуальных машин"
Проверьте:
pveum group list
Добавление пользователя в группу
pveum user modify operator@pve --groups vm-operators
Проверьте:
pveum user list
Через веб-интерфейс группу можно указать в настройках пользователя.
Проверка встроенных ролей
pveum role list
Для просмотра конкретной роли:
pveum role list |
grep PVEVMUser
Часто используемые роли
PVEAuditor
Только просмотр конфигурации и состояния.
Подходит для:
- аудитора;
- наблюдения;
- технической поддержки без права изменений.
PVEVMUser
Базовые операции с VM, доступ к консоли и управлению питанием в пределах выданного пути.
PVEVMAdmin
Расширенное управление виртуальными машинами.
Может изменять конфигурацию VM в пределах разрешённого пути.
PVEAdmin
Широкие административные права, но не полный аналог Administrator.
Administrator
Полный доступ ко всем объектам и операциям.
Назначайте только доверенным администраторам.
Просмотр привилегий роли
pveum role list
Для подробного просмотра можно использовать:
pvesh get /access/roles
Создание собственной роли
Если встроенные роли слишком широкие, создайте собственную.
Пример роли для запуска, остановки и просмотра VM:
pveum role add VMOperator -privs "VM.Audit VM.Console VM.PowerMgmt"
Проверьте:
pveum role list |
grep VMOperator
Изменение собственной роли
pveum role modify VMOperator -privs "VM.Audit VM.Console VM.PowerMgmt VM.Monitor"
Изменение роли сразу влияет на все ACL, где она используется.
Планирование области доступа
Перед назначением ACL определите, к каким объектам пользователь должен иметь доступ.
Примеры:
Только VM 100
Несколько VM в одном pool
Все VM
Только одно storage
Только просмотр узла
Полный доступ к Datacenter
Выдавайте права на наиболее узком подходящем пути.
Доступ к одной виртуальной машине
Путь:
/vms/100
Назначение через CLI:
pveum acl modify /vms/100 --users operator@pve --roles PVEVMUser
Проверьте:
pveum acl list
Пользователь получит права только на VM с ID 100.
Доступ к нескольким VM через pool
Для группы связанных VM удобнее создать resource pool.
В веб-интерфейсе:
Datacenter → Permissions → Pools
Создайте:
production
Добавьте в pool нужные VM и storage.
Создание pool через CLI
pvesh create /pools --poolid production --comment "Production virtual machines"
Добавление VM в pool:
pvesh set /pools/production --vms 100,101,102
Перед изменением существующего pool проверьте его текущее содержимое, чтобы случайно не заменить список.
Назначение роли на pool
pveum acl modify /pool/production --groups vm-operators --roles PVEVMAdmin
Теперь группа получает права на объекты внутри pool.
Доступ только на просмотр
Для аудитора:
pveum acl modify / --users auditor@pve --roles PVEAuditor
Путь / распространяется на весь Datacenter.
Не назначайте широкую роль на /, если достаточно узкого пути.
Доступ к storage
Пример:
pveum acl modify /storage/nfs-backup --groups backup-operators --roles PVEDatastoreUser
Административный доступ к storage:
pveum acl modify /storage/nfs-backup --groups storage-admins --roles PVEDatastoreAdmin
Доступ к узлу
Путь:
/nodes/pve01
Пример только для просмотра:
pveum acl modify /nodes/pve01 --users operator@pve --roles PVEAuditor
Распространение прав
Параметр propagation определяет, наследуются ли права дочерними объектами.
В веб-интерфейсе используется флажок:
Propagate
Через CLI:
pveum acl modify /pool/production --groups vm-operators --roles PVEVMAdmin --propagate 1
Если propagate=0, разрешение применяется только к указанному пути.
Проверка ACL
pveum acl list
Фильтрация по пользователю:
pveum acl list |
grep 'operator@pve'
Фильтрация по группе:
pveum acl list |
grep 'vm-operators'
Проверка эффективных прав
Для пользователя:
pvesh get /access/permissions --userid operator@pve
Для конкретного пути:
pvesh get /access/permissions --userid operator@pve --path /vms/100
Эта проверка показывает итоговые привилегии с учётом:
- пользователя;
- групп;
- ролей;
- пути;
- наследования.
Проверка через отдельную сессию
Не закрывайте текущую административную сессию.
Откройте приватное окно браузера и войдите как:
operator@pve
Проверьте:
- какие узлы видны;
- какие VM доступны;
- открывается ли консоль;
- можно ли запустить и остановить VM;
- недоступны ли лишние storage и настройки Datacenter.
Практическая проверка обязательна.
Пример: оператор одной VM
Требования:
Просмотр VM 100
Консоль VM 100
Запуск и остановка VM 100
Без изменения CPU, RAM и дисков
Создайте роль:
pveum role add VMConsoleOperator -privs "VM.Audit VM.Console VM.PowerMgmt"
Назначьте:
pveum acl modify /vms/100 --users operator@pve --roles VMConsoleOperator
Проверьте:
pvesh get /access/permissions --userid operator@pve --path /vms/100
Пример: администратор группы VM
Создайте pool:
development
Добавьте тестовые VM.
Назначьте группе:
pveum acl modify /pool/development --groups developers --roles PVEVMAdmin --propagate 1
Пользователи группы смогут управлять только объектами pool.
Разделение обязанностей
Практичная схема:
platform-admins — полный доступ
vm-admins — управление VM
vm-operators — запуск, остановка, консоль
auditors — только просмотр
backup-operators — backup storage и задания
Не используйте одну общую учётную запись для нескольких сотрудников.
API tokens
Для автоматизации лучше использовать API token, а не пароль пользователя.
Токен привязан к существующему пользователю.
Создание через веб-интерфейс:
Datacenter → Permissions → API Tokens
При создании сохраните secret сразу: повторно он обычно не показывается.
Создание API token через CLI
pveum user token add operator@pve automation
Команда вернёт token value.
Сохраните его в защищённом хранилище.
Privilege Separation
Для API token можно использовать разделение привилегий.
При включённом privilege separation эффективные права токена ограничиваются пересечением:
- прав пользователя;
- ACL самого токена.
Это безопаснее для автоматизации.
Отключение пользователя
Временно отключить:
pveum user modify operator@pve --enable 0
Включить обратно:
pveum user modify operator@pve --enable 1
Проверьте:
pveum user list
Смена пароля
pveum passwd operator@pve
Для realm pam пароль меняется системными средствами Linux:
passwd USER_NAME
Удаление ACL
Удалить назначение пользователя:
pveum acl delete /vms/100 --users operator@pve --roles PVEVMUser
Перед выполнением проверьте точный ACL:
pveum acl list
Удаление пользователя
Сначала:
- Отключите пользователя.
- Проверьте его ACL.
- Удалите API tokens.
- Удалите пользователя из групп.
- Убедитесь, что учётная запись больше не используется.
Удаление:
pveum user delete operator@pve
Проверьте:
pveum user list
Удаление группы
Проверьте ACL:
pveum acl list |
grep vm-operators
Удалите:
pveum group delete vm-operators
Удаление собственной роли
Сначала убедитесь, что роль не используется ACL.
pveum acl list |
grep VMOperator
Удалите:
pveum role delete VMOperator
Встроенные роли удалять нельзя.
Двухфакторная аутентификация
Для административных пользователей рекомендуется включить двухфакторную аутентификацию.
В зависимости от конфигурации realm могут использоваться:
- TOTP;
- WebAuthn;
- recovery keys.
Настройка 2FA является отдельной темой и не заменяет корректную ACL-модель.
Резервная административная учётная запись
Перед ограничением root@pam создайте и проверьте отдельную административную учётную запись.
Не отключайте последний рабочий полный доступ.
Сохраните резервный доступ к консоли узла.
Проверка журнала входов
В веб-интерфейсе:
Datacenter → Tasks
На узле:
journalctl -u pvedaemon --since today --no-pager
Проверка неудачных входов:
journalctl --since today |
grep -iE 'authentication failure|failed authentication'
Типичные проблемы
Пользователь входит, но не видит VM
Проверьте ACL:
pveum acl list
Проверьте эффективные права:
pvesh get /access/permissions --userid USER@REALM
Пользователь видит VM, но не может открыть консоль
В роли должна быть привилегия:
VM.Console
Проверьте собственную роль.
Пользователь может запустить VM, но не изменить её параметры
Это ожидаемо для ограниченной роли с:
VM.PowerMgmt
без административных VM-привилегий.
Права на pool не применились
Проверьте:
- входит ли VM в pool;
- правильный ли путь
/pool/POOL_NAME; - включён ли
Propagate; - входит ли пользователь в нужную группу.
После добавления в группу права не появились
Выйдите из сессии и войдите снова.
Проверьте:
pveum user list
pveum acl list
Пользователь получил слишком широкие права
Ищите ACL на родительских путях:
/
/nodes
/vms
Проверьте членство в других группах.
Удалён ACL, но доступ остался
Права могут приходить:
- от группы;
- с родительского пути;
- от другой роли;
- через propagation.
Используйте проверку эффективных permissions.
Безопасный порядок настройки
- Определить необходимые действия пользователя.
- Выбрать realm.
- Создать отдельного пользователя.
- Создать группу.
- Выбрать встроенную или собственную роль.
- Назначить ACL на узкий путь.
- Проверить effective permissions.
- Проверить вход в отдельной сессии.
- Убедиться, что лишние объекты недоступны.
- Только после проверки ограничивать старые учётные записи.
Быстрый набор команд
Создать пользователя:
pveum user add operator@pve
pveum passwd operator@pve
Создать группу:
pveum group add vm-operators
Добавить пользователя:
pveum user modify operator@pve --groups vm-operators
Назначить права на VM:
pveum acl modify /vms/100 --groups vm-operators --roles PVEVMUser
Проверить:
pveum acl list
Эффективные права:
pvesh get /access/permissions --userid operator@pve --path /vms/100
Итог
После выполнения инструкции:
- создан отдельный пользователь;
- выбран локальный realm;
- создана группа;
- назначена встроенная или собственная роль;
- доступ ограничен конкретной VM или resource pool;
- проверены эффективные привилегии;
- рассмотрены API tokens и безопасное удаление доступа.
Правильная ACL-модель должна выдавать пользователю только те привилегии и только на те объекты, которые необходимы для его работы.