From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 89D541FF163 for ; Thu, 12 Sep 2024 16:34:26 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F3FF7347A5; Thu, 12 Sep 2024 16:34:27 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Thu, 12 Sep 2024 16:33:03 +0200 Message-Id: <20240912143322.548839-15-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240912143322.548839-1-c.ebner@proxmox.com> References: <20240912143322.548839-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.022 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy 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 Subject: [pbs-devel] [PATCH v3 proxmox-backup 14/33] api types: define remote permissions and roles for push sync X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Adding the privileges to allow backup, namespace creation and prune on remote targets, to be used for sync jobs in push direction. Also adds dedicated roles setting the required privileges. Signed-off-by: Christian Ebner --- changes since version 2: - Use `PRIV_REMOTE_DATASTORE_` prefix for datastore operation privs - Adapt roles to also have RemoteDatastorePrune and RemoteDatastoreBackup - Fix typo in comments pbs-api-types/src/acl.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/pbs-api-types/src/acl.rs b/pbs-api-types/src/acl.rs index a8ae57a9d..d865ad745 100644 --- a/pbs-api-types/src/acl.rs +++ b/pbs-api-types/src/acl.rs @@ -58,6 +58,12 @@ constnamedbitmap! { PRIV_REMOTE_MODIFY("Remote.Modify"); /// Remote.Read allows reading data from a configured `Remote` PRIV_REMOTE_READ("Remote.Read"); + /// Remote.DatastoreBackup allows creating new snapshots, but also requires backup ownership + PRIV_REMOTE_DATASTORE_BACKUP("Remote.DatastoreBackup"); + /// Remote.DatastoreModify allows to modify remote datastores by creating new namespaces + PRIV_REMOTE_DATASTORE_MODIFY("Remote.DatastoreModify"); + /// Remote.DatastorePrune allows deleting snapshots on a configured `Remote` + PRIV_REMOTE_DATASTORE_PRUNE("Remote.DatastorePrune"); /// Sys.Console allows access to the system's console PRIV_SYS_CONSOLE("Sys.Console"); @@ -160,6 +166,26 @@ pub const ROLE_REMOTE_SYNC_OPERATOR: u64 = 0 | PRIV_REMOTE_AUDIT | PRIV_REMOTE_READ; +#[rustfmt::skip] +#[allow(clippy::identity_op)] +/// Remote.SyncPushOperator can do read and push snapshots to the remote. +pub const ROLE_REMOTE_SYNC_PUSH_OPERATOR: u64 = 0 + | PRIV_REMOTE_AUDIT + | PRIV_REMOTE_READ + | PRIV_REMOTE_DATASTORE_BACKUP; + +#[rustfmt::skip] +#[allow(clippy::identity_op)] +/// Remote.DatastoreModify can create namespaces on the remote. +pub const ROLE_REMOTE_DATASTORE_MODIFY: u64 = 0 + | PRIV_REMOTE_DATASTORE_MODIFY; + +#[rustfmt::skip] +#[allow(clippy::identity_op)] +/// Remote.DatastoreModify can prune snapshots, groups and namespaces on the remote. +pub const ROLE_REMOTE_DATASTORE_PRUNE: u64 = 0 + | PRIV_REMOTE_DATASTORE_PRUNE; + #[rustfmt::skip] #[allow(clippy::identity_op)] /// Tape.Audit can audit the tape backup configuration and media content @@ -225,6 +251,12 @@ pub enum Role { RemoteAdmin = ROLE_REMOTE_ADMIN, /// Synchronization Operator RemoteSyncOperator = ROLE_REMOTE_SYNC_OPERATOR, + /// Synchronisation Operator (push direction) + RemoteSyncPushOperator = ROLE_REMOTE_SYNC_PUSH_OPERATOR, + /// Remote Datastore Modify + RemoteDatastoreModify = ROLE_REMOTE_DATASTORE_MODIFY, + /// Remote Datastore Prune + RemoteDatastorePrune = ROLE_REMOTE_DATASTORE_PRUNE, /// Tape Auditor TapeAudit = ROLE_TAPE_AUDIT, /// Tape Administrator -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel