* [PATCH manager/access-control 0/3] fix #7513: fine-grained ACL for node certificates
@ 2026-05-28 11:35 Jakob Klocker
2026-05-28 11:35 ` [PATCH access-control 1/3] fix #7513: acl: allow ACL access to /nodes/{node}/certificates path Jakob Klocker
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Jakob Klocker @ 2026-05-28 11:35 UTC (permalink / raw)
To: pve-devel; +Cc: Jakob Klocker
Managing node certificates currently requires broad /nodes/{node}
permissions, which violates the least-privilege principle. This
series adds /nodes/{node}/certificates as a dedicated ACL path and
moves the relevant permission checks onto it, so certificate
management can be done without granting node-wide rights.
The pve-access-control patch registers the new ACL path and must be
applied first. The pve-manager patches depend on it for the API
permission checks and the GUI path selector.
pve-access-control:
Jakob Klocker (1):
fix #7513: acl: allow ACL access to /nodes/{node}/certificates path
src/PVE/AccessControl.pm | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
pve-manager:
Jakob Klocker (2):
fix #7513: api: certs: change ACL on certificates path
fix #7513: ui: perm path store: add per-node certificates ACL path
PVE/API2/ACME.pm | 6 +++---
PVE/API2/Certificates.pm | 4 ++--
www/manager6/data/PermPathStore.js | 11 +++++++++--
3 files changed, 14 insertions(+), 7 deletions(-)
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH access-control 1/3] fix #7513: acl: allow ACL access to /nodes/{node}/certificates path
2026-05-28 11:35 [PATCH manager/access-control 0/3] fix #7513: fine-grained ACL for node certificates Jakob Klocker
@ 2026-05-28 11:35 ` Jakob Klocker
2026-05-28 11:35 ` [PATCH manager 2/3] fix #7513: api: certs: change ACL on certificates path Jakob Klocker
2026-05-28 11:35 ` [PATCH manager 3/3] fix #7513: ui: perm path store: add per-node certificates ACL path Jakob Klocker
2 siblings, 0 replies; 4+ messages in thread
From: Jakob Klocker @ 2026-05-28 11:35 UTC (permalink / raw)
To: pve-devel; +Cc: Jakob Klocker
Currently access to /nodes/{node}/certificates requires /nodes/{node}
rights, this doesn't follow least-privilege best practice. Instead
of introducing a specific privilege, allow ACL access
to /nodes/{node}/certificates.
Link: https://bugzilla.proxmox.com/show_bug.cgi?id=7513
Signed-off-by: Jakob Klocker <j.klocker@proxmox.com>
---
src/PVE/AccessControl.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/PVE/AccessControl.pm b/src/PVE/AccessControl.pm
index 0d632b3..f005786 100644
--- a/src/PVE/AccessControl.pm
+++ b/src/PVE/AccessControl.pm
@@ -1289,6 +1289,7 @@ sub check_path {
|/access/realm/[[:alnum:]\.\-\_]+
|/nodes
|/nodes/[[:alnum:]\.\-\_]+
+ |/nodes/[[:alnum:]\.\-\_]+/certificates
|/pool
|/pool/[A-Za-z0-9\.\-_]+(?:/[A-Za-z0-9\.\-_]+){0,2}
|/sdn
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH manager 2/3] fix #7513: api: certs: change ACL on certificates path
2026-05-28 11:35 [PATCH manager/access-control 0/3] fix #7513: fine-grained ACL for node certificates Jakob Klocker
2026-05-28 11:35 ` [PATCH access-control 1/3] fix #7513: acl: allow ACL access to /nodes/{node}/certificates path Jakob Klocker
@ 2026-05-28 11:35 ` Jakob Klocker
2026-05-28 11:35 ` [PATCH manager 3/3] fix #7513: ui: perm path store: add per-node certificates ACL path Jakob Klocker
2 siblings, 0 replies; 4+ messages in thread
From: Jakob Klocker @ 2026-05-28 11:35 UTC (permalink / raw)
To: pve-devel; +Cc: Jakob Klocker
Endpoints under /nodes/{node}/certificates/* required
/nodes/{node} permission. To allow least-privileged for certification
changes, check the permissions on /nodes/{node}/certificates path
instead.
Link: https://bugzilla.proxmox.com/show_bug.cgi?id=7513
Signed-off-by: Jakob Klocker <j.klocker@proxmox.com>
---
PVE/API2/ACME.pm | 6 +++---
PVE/API2/Certificates.pm | 4 ++--
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/PVE/API2/ACME.pm b/PVE/API2/ACME.pm
index a948a72a..3f6679a0 100644
--- a/PVE/API2/ACME.pm
+++ b/PVE/API2/ACME.pm
@@ -160,7 +160,7 @@ __PACKAGE__->register_method({
path => 'certificate',
method => 'POST',
permissions => {
- check => ['perm', '/nodes/{node}', ['Sys.Modify']],
+ check => ['perm', '/nodes/{node}/certificates', ['Sys.Modify']],
},
description => "Order a new certificate from ACME-compatible CA.",
protected => 1,
@@ -232,7 +232,7 @@ __PACKAGE__->register_method({
path => 'certificate',
method => 'PUT',
permissions => {
- check => ['perm', '/nodes/{node}', ['Sys.Modify']],
+ check => ['perm', '/nodes/{node}/certificates', ['Sys.Modify']],
},
description => "Renew existing certificate from CA.",
protected => 1,
@@ -319,7 +319,7 @@ __PACKAGE__->register_method({
path => 'certificate',
method => 'DELETE',
permissions => {
- check => ['perm', '/nodes/{node}', ['Sys.Modify']],
+ check => ['perm', '/nodes/{node}/certificates', ['Sys.Modify']],
},
description => "Revoke existing certificate from CA.",
protected => 1,
diff --git a/PVE/API2/Certificates.pm b/PVE/API2/Certificates.pm
index de8762c5..8da1e93b 100644
--- a/PVE/API2/Certificates.pm
+++ b/PVE/API2/Certificates.pm
@@ -87,7 +87,7 @@ __PACKAGE__->register_method({
path => 'custom',
method => 'POST',
permissions => {
- check => ['perm', '/nodes/{node}', ['Sys.Modify']],
+ check => ['perm', '/nodes/{node}/certificates', ['Sys.Modify']],
},
description => 'Upload or update custom certificate chain and key.',
protected => 1,
@@ -165,7 +165,7 @@ __PACKAGE__->register_method({
path => 'custom',
method => 'DELETE',
permissions => {
- check => ['perm', '/nodes/{node}', ['Sys.Modify']],
+ check => ['perm', '/nodes/{node}/certificates', ['Sys.Modify']],
},
description => 'DELETE custom certificate chain and key.',
protected => 1,
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH manager 3/3] fix #7513: ui: perm path store: add per-node certificates ACL path
2026-05-28 11:35 [PATCH manager/access-control 0/3] fix #7513: fine-grained ACL for node certificates Jakob Klocker
2026-05-28 11:35 ` [PATCH access-control 1/3] fix #7513: acl: allow ACL access to /nodes/{node}/certificates path Jakob Klocker
2026-05-28 11:35 ` [PATCH manager 2/3] fix #7513: api: certs: change ACL on certificates path Jakob Klocker
@ 2026-05-28 11:35 ` Jakob Klocker
2 siblings, 0 replies; 4+ messages in thread
From: Jakob Klocker @ 2026-05-28 11:35 UTC (permalink / raw)
To: pve-devel; +Cc: Jakob Klocker
Expose /nodes/{node}/certificates as a selectable path in the
permission path store, so the more fine-grained certificate ACL
can be assigned through the GUI.
Link: https://bugzilla.proxmox.com/show_bug.cgi?id=7513
Signed-off-by: Jakob Klocker <j.klocker@proxmox.com>
---
www/manager6/data/PermPathStore.js | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/www/manager6/data/PermPathStore.js b/www/manager6/data/PermPathStore.js
index 7210e0cd..bc2112ad 100644
--- a/www/manager6/data/PermPathStore.js
+++ b/www/manager6/data/PermPathStore.js
@@ -34,9 +34,16 @@ Ext.define('PVE.data.PermPathStore', {
PVE.data.ResourceStore.each(function (record) {
let path;
switch (record.get('type')) {
- case 'node':
- path = '/nodes/' + record.get('text');
+ case 'node': {
+ let nodename = record.get('text');
+ path = '/nodes/' + nodename;
+ let certpath = '/nodes/' + nodename + '/certificates';
+ if (!donePaths[certpath]) {
+ me.add({ value: certpath });
+ donePaths[certpath] = 1;
+ }
break;
+ }
case 'network':
path = '/sdn/' + record.get('network-type') + 's/' + record.get('network');
break;
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-05-28 11:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-28 11:35 [PATCH manager/access-control 0/3] fix #7513: fine-grained ACL for node certificates Jakob Klocker
2026-05-28 11:35 ` [PATCH access-control 1/3] fix #7513: acl: allow ACL access to /nodes/{node}/certificates path Jakob Klocker
2026-05-28 11:35 ` [PATCH manager 2/3] fix #7513: api: certs: change ACL on certificates path Jakob Klocker
2026-05-28 11:35 ` [PATCH manager 3/3] fix #7513: ui: perm path store: add per-node certificates ACL path Jakob Klocker
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.