首页 · 技术

PVE权限配置

一、PVE 权限体系概述

Proxmox VE 采用基于角色(Role)和对象路径(Path)的权限管理系统。每条权限策略可以表示为三元组:(路径,用户/组,角色)。

简单理解这三个核心概念:
概念 说明
用户 (User) 登录系统的个体,格式为 用户名@认证域
组 (Group) 用户的集合,推荐将权限授予组而非单个用户,更易于维护
角色 (Role) 一组权限的集合,权限不能直接分配给用户,必须通过角色授予
路径 (Path) 对象在树状结构中的位置,如 /(根)、/vms、/storage/local

关键规则:用户权限始终覆盖组权限;NoAccess 角色优先级最高,会覆盖同一路径下的其他权限。上级路径的权限会默认继承到下级路径。

二、用户管理
2.1 用户命名与认证域

PVE 用户由两部分组成:@。支持的认证域包括:

Linux PAM:使用系统本地账户

PVE Auth Server:PVE 内置认证(默认)

LDAP / Active Directory:企业目录服务

OpenID Connect:OIDC 单点登录

用户信息存储在 /etc/pve/user.cfg,密码不在此文件中存储。
2.2 创建用户(Web GUI)

登录 PVE Web 界面

左侧选择 Datacenter → Permissions(权限)选项卡

点击 Add → User

填写:

User name:用户名

Realm:选择认证域

Password:设置密码

可选:姓名、邮箱、组、过期时间、启用/禁用

2.3 创建用户(命令行)

bash

pveum useradd testuser@pve -password
系统会提示输入密码
2.4 用户状态说明

用户被禁用、删除或超过过期时间后,将无法登录新会话,但已启动的任务(如终端会话)不会自动终止。
三、角色管理
3.1 预定义角色

PVE 预置了多个常用角色:
角色 说明
Administrator 拥有所有权限
NoAccess 无任何权限(用于拒绝访问)
PVEAdmin 大部分操作权限,但无 Sys.Modify、Sys.PowerMgmt、Realm.Allocate
PVEAuditor 只读权限
PVEVMAdmin 管理虚拟机
PVEVMUser 查看、备份、电源管理、控制台访问虚拟机
PVEDatastoreAdmin 创建和分配备份空间及模板
PVEDatastoreUser 分配备份空间、查看存储
PVEUserAdmin 用户管理
PVETemplateUser 查看和克隆模板
3.2 创建自定义角色

Web GUI 方式:

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:

可为用户生成 Token,并单独设置权限和过期时间

Token 被泄露时可单独吊销,不影响用户本身

两种模式:

权限分离(默认):Token 需通过 ACL 单独授权,有效权限 = 用户权限 ∩ Token 权限

完全权限:Token 拥有与用户相同的权限,仅在确实需要时使用

Token 值只在创建时显示一次,请务必保存

六、实践案例:创建备份专用用户

生产环境中应遵循最小权限原则,创建专用用户而非使用 root:

创建用户:backupuser@pve

分配权限(路径设为 /):

PVEVMAdmin:虚拟机管理权限(快照和配置访问)

PVESDNUser:SDN 配置只读

PVEDatastoreAdmin:读取存储内容、分配空间

如需限制带宽,额外添加 Sys.Modify 权限

测试环境可临时使用 PVEAdmin 或 Administrator 角色简化配置。
七、最佳实践总结

最小权限原则:只授予用户完成工作所需的最少权限

使用组管理权限:将权限授予组而非单个用户,便于维护

避免直接使用 root:创建专用管理员账号,通过 sudo 提权

利用资源池:对同类资源统一授权

审计与定期检查:定期审查权限配置,移除过期或多余权限

← 上一篇 既望路书 · SameMoon
100%