一、PVE 权限体系概述
Proxmox VE 采用基于角色(Role)和对象路径(Path)的权限管理系统。每条权限策略可以表示为三元组:(路径,用户/组,角色) 。
简单理解这三个核心概念:
| 概念 | 说明 |
|---|---|
| 用户 (User) | 登录系统的个体,格式为 用户名@认证域 |
| 组 (Group) | 用户的集合,推荐将权限授予组而非单个用户,更易于维护 |
| 角色 (Role) | 一组权限的集合,权限不能直接分配给用户,必须通过角色授予 |
| 路径 (Path) | 对象在树状结构中的位置,如 /(根)、/vms、/storage/local |
关键规则:用户权限始终覆盖组权限;
NoAccess角色优先级最高,会覆盖同一路径下的其他权限。上级路径的权限会默认继承到下级路径。
二、用户管理
2.1 用户命名与认证域
PVE 用户由两部分组成:<用户ID>@<认证域> 。支持的认证域包括:
-
Linux PAM:使用系统本地账户
-
PVE Auth Server:PVE 内置认证(默认)
-
LDAP / Active Directory:企业目录服务
-
OpenID Connect:OIDC 单点登录
用户信息存储在 /etc/pve/user.cfg,密码不在此文件中存储。
2.2 创建用户(Web GUI)
-
登录 PVE Web 界面
-
左侧选择 Datacenter → Permissions(权限)选项卡
-
填写:
2.3 创建用户(命令行)
bash
pveum useradd testuser@pve -password
系统会提示输入密码
2.4 用户状态说明
用户被禁用、删除或超过过期时间后,将无法登录新会话,但已启动的任务(如终端会话)不会自动终止。
三、角色管理
3.1 预定义角色
| 角色 | 说明 |
|---|---|
| Administrator | 拥有所有权限 |
| NoAccess | 无任何权限(用于拒绝访问) |
| PVEAdmin | 大部分操作权限,但无 Sys.Modify、Sys.PowerMgmt、Realm.Allocate |
| PVEAuditor | 只读权限 |
| PVEVMAdmin | 管理虚拟机 |
| PVEVMUser | 查看、备份、电源管理、控制台访问虚拟机 |
| PVEDatastoreAdmin | 创建和分配备份空间及模板 |
| PVEDatastoreUser | 分配备份空间、查看存储 |
| PVEUserAdmin | 用户管理 |
| PVETemplateUser | 查看和克隆模板 |
3.2 创建自定义角色
-
Datacenter → Permissions → Roles 选项卡
-
点击 Create
-
设置角色名称,从权限下拉框中选择所需权限
bash
创建仅含虚拟机电源管理和控制台权限的角色
pveum roleadd PVE_Power-only -privs “VM.PowerMgmt VM.Console”
创建仅含节点电源管理权限的角色
pveum roleadd Sys_Power-only -privs “Sys.PowerMgmt Sys.Console”
3.3 常见权限列表
节点/系统权限:
-
Sys.PowerMgmt:节点电源管理(启动/停止/重启) -
Sys.Console:访问节点控制台 -
Sys.Modify:修改节点网络配置 -
Sys.Audit:查看节点状态/配置 -
User.Modify:创建/修改/删除用户 -
Group.Allocate:创建/修改/删除组
虚拟机权限:
-
VM.Allocate:创建/删除虚拟机 -
VM.PowerMgmt:电源管理 -
VM.Console:访问控制台 -
VM.Backup:备份/恢复 -
VM.Clone:克隆虚拟机 -
VM.Config.Disk:管理虚拟硬盘 -
VM.Config.Network:管理虚拟网卡 -
VM.Snapshot:创建/删除快照
存储权限:
-
Datastore.Allocate:创建/修改/删除存储 -
Datastore.AllocateSpace:分配存储空间 -
Datastore.AllocateTemplate:上传模板/ISO -
Datastore.Audit:查看/浏览存储
四、权限分配(ACL)
4.1 Web GUI 分配权限
-
左侧选择 Datacenter
-
点击 Permissions 选项卡
-
点击 Add → User Permission(或 Group Permission)
-
填写:
-
Path:对象路径,如
/(根)、/vms/100(特定虚拟机) -
User/Group:选择用户或组
-
Role:选择角色
-
4.2 命令行分配权限
bash
为用户在根路径授予 PVEVMAdmin 角色
pveum aclmod / -user testuser@pve -role PVEVMAdmin
为组在特定虚拟机路径授予权限
pveum aclmod /vms/100 -group vm-admins -role PVEVMAdmin
五、进阶功能
5.1 资源池 (Resource Pools)
资源池是虚拟机、容器和存储设备的集合。通过将权限赋予资源池,可以一次性管理多个资源的访问权限,无需逐个设置。
5.2 API Token
API Token 允许第三方系统无状态访问 PVE REST API:
-
两种模式:
六、实践案例:创建备份专用用户
生产环境中应遵循最小权限原则,创建专用用户而非使用 root:
-
创建用户:
backupuser@pve -
分配权限(路径设为
/):-
PVEVMAdmin:虚拟机管理权限(快照和配置访问) -
PVESDNUser:SDN 配置只读 -
PVEDatastoreAdmin:读取存储内容、分配空间
-
测试环境可临时使用 PVEAdmin 或 Administrator 角色简化配置。