This is an automated email from the ASF dual-hosted git repository.

jshao pushed a commit to branch branch-0.8
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-0.8 by this push:
     new 718c436946 [#6682] fix(authz): Remove `privilege_names` and 
`privilege_conditions` check when delete securable objects of a role. (#6715)
718c436946 is described below

commit 718c436946b58a0504499a0d24e5f63991964c42
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Mar 19 16:24:34 2025 +0800

    [#6682] fix(authz): Remove `privilege_names` and `privilege_conditions` 
check when delete securable objects of a role. (#6715)
    
    ### What changes were proposed in this pull request?
    remove privilege_names and privilege_conditions check when delete
    secruable objects of a role.
    
    ### Why are the changes needed?
    Fix: #6682
    
    ### Does this PR introduce _any_ user-facing change?
    no
    
    ### How was this patch tested?
    add a integration test case.
    
    Co-authored-by: luoxin <34674439+fourfrie...@users.noreply.github.com>
    Co-authored-by: luoxin5 <luox...@xiaomi.com>
---
 .../test/authorization/AccessControlIT.java        | 43 ++++++++++++++++++++++
 .../base/SecurableObjectBaseSQLProvider.java       |  4 +-
 2 files changed, 44 insertions(+), 3 deletions(-)

diff --git 
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
 
b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
index 07232e8a8d..1b24bb9083 100644
--- 
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
+++ 
b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/AccessControlIT.java
@@ -578,4 +578,47 @@ public class AccessControlIT extends BaseIT {
       }
     }
   }
+
+  @Test
+  void testRevokeRolePermissions() {
+    String roleName = "role#124";
+    Map<String, String> properties = Maps.newHashMap();
+    properties.put("k1", "v1");
+    metalake.createRole(roleName, properties, Lists.newArrayList());
+
+    MetadataObject metadataObject =
+        MetadataObjects.of("fileset_catalog", "fileset_schema", 
MetadataObject.Type.SCHEMA);
+
+    // Multiple privileges (CreateFileset、ReadFileset、WriteFileset) are granted
+    // to the role here to better find errors, see (#6682).
+    Role role =
+        metalake.grantPrivilegesToRole(
+            roleName,
+            metadataObject,
+            Sets.newHashSet(
+                Privileges.CreateFileset.allow(),
+                Privileges.ReadFileset.allow(),
+                Privileges.WriteFileset.allow()));
+    Assertions.assertEquals(1, role.securableObjects().size());
+
+    // Then revoke
+    Role revokedRole =
+        metalake.revokePrivilegesFromRole(
+            roleName,
+            metadataObject,
+            Sets.newHashSet(
+                Privileges.CreateFileset.allow(),
+                Privileges.ReadFileset.allow(),
+                Privileges.WriteFileset.allow()));
+
+    // Confirm the return data has no securable objects.
+    Assertions.assertEquals(0, revokedRole.securableObjects().size());
+
+    // Confirm the role securable objects in memory has been actually soft 
deleted.
+    Role newRole = metalake.getRole(roleName);
+    Assertions.assertEquals(0, newRole.securableObjects().size());
+
+    // Cleanup.
+    metalake.deleteRole(roleName);
+  }
 }
diff --git 
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SecurableObjectBaseSQLProvider.java
 
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SecurableObjectBaseSQLProvider.java
index 1c47741e05..42e9026193 100644
--- 
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SecurableObjectBaseSQLProvider.java
+++ 
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/SecurableObjectBaseSQLProvider.java
@@ -63,9 +63,7 @@ public class SecurableObjectBaseSQLProvider {
         + " WHERE FALSE "
         + "<foreach collection='securableObjects' item='item' separator=' '>"
         + " OR (metadata_object_id = #{item.metadataObjectId} AND"
-        + " role_id = #{item.roleId} AND deleted_at = 0 AND"
-        + " privilege_names = #{item.privilegeNames} AND"
-        + " privilege_conditions = #{item.privilegeConditions})"
+        + " role_id = #{item.roleId} AND deleted_at = 0 )"
         + "</foreach>"
         + "</script>";
   }

Reply via email to