From: Fiona Ebner <f.ebner@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Daniel Kral <d.kral@proxmox.com>
Subject: Re: [pve-devel] [PATCH access-control] api: role: remove role references from acl rules on role deletion
Date: Mon, 3 Feb 2025 12:49:06 +0100 [thread overview]
Message-ID: <64c46c18-1e31-45d7-88ba-12010bea2539@proxmox.com> (raw)
In-Reply-To: <20241204151123.447107-1-d.kral@proxmox.com>
Am 04.12.24 um 16:11 schrieb Daniel Kral:
> Let the API endpoint `DELETE /access/roles/{roleid}` or command
> `pveum role delete <roleid>` remove any ACL rules in the user
> configuration, which reference the removed role.
>
> Before this change, the removal of a role has caused the role to remain
> in existing ACL rules, which referenced the removed role. Therefore, on
> each parse of the user configuration, a warning was be displayed:
>
> user config - ignore invalid acl role '<role>'
>
Might be good to note that the next modification of the configuration
would drop the unknown role (even if a role with the same name is
re-added right away).
> Signed-off-by: Daniel Kral <d.kral@proxmox.com>
Just a minor nit below, otherwise:
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>
What would be really nice is to have some tests for various
add/modify/delete sequences touching user.cfg :) I don't think current
tests cover that yet.
> ---
> src/PVE/API2/Role.pm | 2 +-
> src/PVE/AccessControl.pm | 23 +++++++++++++++++++++++
> 2 files changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/src/PVE/API2/Role.pm b/src/PVE/API2/Role.pm
> index a924018..6e75a3c 100644
> --- a/src/PVE/API2/Role.pm
> +++ b/src/PVE/API2/Role.pm
> @@ -212,7 +212,7 @@ __PACKAGE__->register_method ({
>
> delete ($usercfg->{roles}->{$role});
>
> - # fixme: delete role from acl?
> + PVE::AccessControl::delete_role_acl($role, $usercfg);
>
> cfs_write_file("user.cfg", $usercfg);
> }, "delete role failed");
> diff --git a/src/PVE/AccessControl.pm b/src/PVE/AccessControl.pm
> index 47f2d38..4bbbe80 100644
> --- a/src/PVE/AccessControl.pm
> +++ b/src/PVE/AccessControl.pm
> @@ -1022,6 +1022,29 @@ sub delete_group_acl {
> iterate_acl_tree("/", $usercfg->{acl_root}, $code);
> }
>
> +sub delete_role_acl_for_each {
Nit: could be a private "my sub"
> + my ($role, $acl_subjects) = @_;
> +
> + for my $subject (sort keys %$acl_subjects) {
> + delete ($acl_subjects->{$subject}->{$role})
> + if $acl_subjects->{$subject}->{$role};
> + }
> +}
> +
> +sub delete_role_acl {
> + my ($role, $usercfg) = @_;
> +
> + my $code = sub {
> + my ($path, $acl_node) = @_;
> +
> + delete_role_acl_for_each($role, $acl_node->{groups});
> + delete_role_acl_for_each($role, $acl_node->{users});
> + delete_role_acl_for_each($role, $acl_node->{tokens});
> + };
> +
> + iterate_acl_tree("/", $usercfg->{acl_root}, $code);
> +}
> +
> sub delete_pool_acl {
> my ($pool, $usercfg) = @_;
>
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-02-03 11:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-04 15:11 Daniel Kral
2025-02-03 11:49 ` Fiona Ebner [this message]
2025-02-05 9:21 ` Daniel Kral
2025-02-05 10:00 ` Fiona Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=64c46c18-1e31-45d7-88ba-12010bea2539@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=d.kral@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal