This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 0305aad097 [fix](privilege)fix grant resource bug (#16045)
0305aad097 is described below
commit 0305aad097a22cb675dd678dd9d791825228f76b
Author: zhangdong <[email protected]>
AuthorDate: Fri Jan 20 19:00:44 2023 +0800
[fix](privilege)fix grant resource bug (#16045)
GRANT USAGE_PRIV ON RESOURCE * TO user;
user will see all database
Describe your changes.
Set a PrivPredicate for show resources and remove USAGE under PrivPredicate
in SHOW_ PRIV
---
fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java | 2 +-
.../main/java/org/apache/doris/mysql/privilege/PrivPredicate.java | 7 +++++--
.../src/test/java/org/apache/doris/mysql/privilege/AuthTest.java | 4 ++++
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java
index 3805b5848d..d9a79b8616 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java
@@ -229,7 +229,7 @@ public class ResourceMgr implements Writable {
Resource resource = entry.getValue();
// check resource privs
if
(!Env.getCurrentEnv().getAuth().checkResourcePriv(ConnectContext.get(),
resource.getName(),
-
PrivPredicate.SHOW)) {
+
PrivPredicate.SHOW_RESOURCES)) {
continue;
}
resource.getProcNodeData(result);
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivPredicate.java
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivPredicate.java
index 7a805eefc2..3bf80cd149 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivPredicate.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/PrivPredicate.java
@@ -27,8 +27,11 @@ public class PrivPredicate {
PaloPrivilege.LOAD_PRIV,
PaloPrivilege.ALTER_PRIV,
PaloPrivilege.CREATE_PRIV,
- PaloPrivilege.DROP_PRIV,
- PaloPrivilege.USAGE_PRIV),
+ PaloPrivilege.DROP_PRIV),
+ Operator.OR);
+ //show resources
+ public static final PrivPredicate SHOW_RESOURCES =
PrivPredicate.of(PrivBitSet.of(PaloPrivilege.ADMIN_PRIV,
+ PaloPrivilege.USAGE_PRIV),
Operator.OR);
// create/drop/alter/show user
public static final PrivPredicate GRANT =
PrivPredicate.of(PrivBitSet.of(PaloPrivilege.ADMIN_PRIV,
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java
b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java
index 50ecb8edec..a32f866bd3 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java
@@ -1530,6 +1530,8 @@ public class AuthTest {
}
Assert.assertTrue(auth.checkResourcePriv(userIdentity, resourceName,
PrivPredicate.USAGE));
Assert.assertTrue(auth.checkGlobalPriv(userIdentity,
PrivPredicate.USAGE));
+ Assert.assertTrue(auth.checkGlobalPriv(userIdentity,
PrivPredicate.SHOW_RESOURCES));
+ Assert.assertFalse(auth.checkGlobalPriv(userIdentity,
PrivPredicate.SHOW));
// 3. revoke usage_priv on resource '*' from 'testUser'@'%'
revokeStmt = new RevokeStmt(userIdentity, null, anyResourcePattern,
usagePrivileges);
@@ -1542,6 +1544,8 @@ public class AuthTest {
}
Assert.assertFalse(auth.checkResourcePriv(userIdentity, resourceName,
PrivPredicate.USAGE));
Assert.assertFalse(auth.checkGlobalPriv(userIdentity,
PrivPredicate.USAGE));
+ Assert.assertFalse(auth.checkGlobalPriv(userIdentity,
PrivPredicate.SHOW_RESOURCES));
+ Assert.assertFalse(auth.checkGlobalPriv(userIdentity,
PrivPredicate.SHOW));
// 4. drop user
dropUserStmt = new DropUserStmt(userIdentity);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]