From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 5884674C97 for ; Thu, 2 Jun 2022 09:25:11 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3AA5A2757E for ; Thu, 2 Jun 2022 09:25:11 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 232A727450 for ; Thu, 2 Jun 2022 09:25:05 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id EEF8743A00 for ; Thu, 2 Jun 2022 09:25:04 +0200 (CEST) From: Oguz Bektas To: pve-devel@lists.proxmox.com Date: Thu, 2 Jun 2022 09:24:32 +0200 Message-Id: <20220602072450.55209-1-o.bektas@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.481 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [rpcenvironment.pm, vzdump.pm, storage.pm, qemuserver.pm, qmmock.pm, acl.pm, accesscontrol.pm, role.pm, backup.pm, tfa.pm, status.pm, lxc.pm, qemu.pm, nodes.pm, create.pm, config.pm] Subject: [pve-devel] [PATCH v4 access-control++ 00/18] SuperUser privilege X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jun 2022 07:25:11 -0000 big thanks to Fabian G. for the earlier reviews :) v3 was not reviewed but i thought i should rebase it to make it easier. i also noticed some things that weren't addressed or were incorrect, so those are hopefully fixed now. please note that the privilege columns of the role selector in widget-toolkit is broken (reverting commit 49275c6726e7bf40f6d79e7b62eb4ad490a75119 fixes that, the custom renderer broke the view but i wasn't able to come up with a fix besides that -- extjs is pretty weird) v3->v4 * rebased to latest commits * fix incorrect check for login prompt in pve-manager for termproxy and friends * slightly changed warning message when checking propagate * show warning to user via raise_perm_exc() when changing passwords * mark shortcut in parse_backup_hints v2->v3: * fixed some incorrect checks in qemu-server * further restrict changing passwords and tfa settings for superusers * gui fix for lxc features * slight improvements to docs, added some notes see the separate patches for further details :) intentionally left out ceph and cluster-related endpoints for checking SU privileges: * addnode * copy * create * delnode * index * join * destroyosd * createosd and some other endpoints: * register_account * deactivate_account i left these endpoints alone since we have plans to introduce separate privileges for cluster-related actions in the future. access-control: Oguz Bektas (5): add "SuperAdministrator" role with the new "SuperUser" privilege RPC env: add SuperUser API permission for GUI capabilities api: acl: only allow granting SU privilege if user already has it api: roles: only allow modifying roles to add/remove SU if user has SU themselves api: allow superusers to edit tfa and password settings src/PVE/API2/ACL.pm | 16 ++++++++++++++++ src/PVE/API2/AccessControl.pm | 24 ++++++++++++++---------- src/PVE/API2/Role.pm | 21 +++++++++++++++++++++ src/PVE/API2/TFA.pm | 16 +++++++++++++++- src/PVE/AccessControl.pm | 9 ++++++--- src/PVE/RPCEnvironment.pm | 29 ++++++++++++++++++++++------- 6 files changed, 94 insertions(+), 21 deletions(-) qemu-server: Oguz Bektas (4): api: allow SU privileged users to edit root-only options for VM configs migration tests: mock $rpcenv->check subroutine api: allow superusers to use 'skiplock' option parse_backup_hints: add comment for root shortcut and fix typos PVE/API2/Qemu.pm | 133 +++++++++++++++++++++-------------- PVE/QemuServer.pm | 6 +- test/MigrationTest/QmMock.pm | 5 ++ 3 files changed, 87 insertions(+), 57 deletions(-) manager: Oguz Bektas (6): api: backup: allow SUs to use 'tmpdir', 'dumpdir' and 'script' options api: vzdump: allow SUs to use 'bwlimit' and 'ionice' parameters api: always drop to login prompt for non-root users on terminal proxy calls ui: include "SuperUser" in privilege selector ui: lxc features: check for SU instead of 'root@pam' ui: adapt sensible 'root@pam' checks to SU PVE/API2/Backup.pm | 11 +++++++---- PVE/API2/Nodes.pm | 11 ++++++++--- PVE/API2/VZDump.pm | 8 +++++--- www/manager6/form/PrivilegesSelector.js | 2 +- www/manager6/lxc/Options.js | 8 ++++++-- www/manager6/lxc/Resources.js | 6 +++--- www/manager6/window/Migrate.js | 4 ++-- 7 files changed, 32 insertions(+), 18 deletions(-) container: Oguz Bektas (1): fix #2582: api: add checks for 'SuperUser' privilege for root-only options src/PVE/API2/LXC.pm | 19 +++++++++---------- src/PVE/API2/LXC/Config.pm | 2 +- src/PVE/API2/LXC/Status.pm | 12 ++++++++---- src/PVE/LXC.pm | 21 ++++++++++++--------- src/PVE/LXC/Create.pm | 2 +- 5 files changed, 31 insertions(+), 25 deletions(-) storage: Oguz Bektas (1): check_volume_access: allow superusers to pass arbitrary fs paths PVE/Storage.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) docs: Oguz Bektas (1): pveum: add SU privilege and SA role pveum.adoc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) -- 2.30.2