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 e0d85882bdf [fix](auth)Privatize the authentication methods in the Auth class to avoid being called incorrectly (#48033) e0d85882bdf is described below commit e0d85882bdf899ed966654da2a254a19017160a8 Author: zhangdong <zhangd...@selectdb.com> AuthorDate: Wed Feb 26 20:33:07 2025 +0800 [fix](auth)Privatize the authentication methods in the Auth class to avoid being called incorrectly (#48033) ### What problem does this PR solve? - Privatize the authentication methods in the Auth class to avoid being called incorrectly - Change from calling Auth class to calling accessManager - Fix `InternalAccessController.checkCloudPriv` calling the wrong method --- .../org/apache/doris/analysis/ShowClusterStmt.java | 2 +- .../ranger/doris/RangerDorisAccessController.java | 7 ++++++- .../ranger/hive/RangerHiveAccessController.java | 7 ++++++- .../doris/cloud/analysis/UseCloudClusterStmt.java | 2 +- .../java/org/apache/doris/cloud/catalog/CloudEnv.java | 2 +- .../org/apache/doris/datasource/InternalCatalog.java | 2 +- .../doris/mysql/privilege/AccessControllerManager.java | 7 +++++++ .../java/org/apache/doris/mysql/privilege/Auth.java | 18 +++++++++--------- .../doris/mysql/privilege/CatalogAccessController.java | 4 +++- .../mysql/privilege/InternalAccessController.java | 9 +++++++-- .../org/apache/doris/mysql/privilege/UserProperty.java | 2 +- .../trees/plans/commands/call/CallExecuteStmtFunc.java | 2 +- .../plans/commands/call/CallFlushAuditLogFunc.java | 2 +- .../main/java/org/apache/doris/qe/ConnectContext.java | 2 +- .../main/java/org/apache/doris/qe/ShowExecutor.java | 9 +++++---- .../main/java/org/apache/doris/qe/StmtExecutor.java | 2 +- .../doris/tablefunction/QueryTableValueFunction.java | 2 +- .../org/apache/doris/datasource/ColumnPrivTest.java | 8 +++++++- .../doris/nereids/privileges/TestCheckPrivileges.java | 7 ++++++- 19 files changed, 66 insertions(+), 30 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java index c29978267a3..d1a0486d686 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java @@ -72,7 +72,7 @@ public class ShowClusterStmt extends ShowStmt implements NotFallbackInParser { public void analyze(Analyzer analyzer) throws AnalysisException { if (Config.isNotCloudMode()) { // just user admin - if (!Env.getCurrentEnv().getAuth().checkGlobalPriv(ConnectContext.get().getCurrentUserIdentity(), + if (!Env.getCurrentEnv().getAccessManager().checkGlobalPriv(ConnectContext.get().getCurrentUserIdentity(), PrivPredicate.of(PrivBitSet.of(Privilege.ADMIN_PRIV, Privilege.NODE_PRIV), Operator.OR))) { ErrorReport.reportAnalysisException(ErrorCode.ERR_SPECIFIC_ACCESS_DENIED_ERROR, "ADMIN"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java index 8a7bea57534..f9f571c0d0d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java @@ -243,11 +243,16 @@ public class RangerDorisAccessController extends RangerAccessController { } @Override - public boolean checkCloudPriv(UserIdentity currentUser, String resourceName, + public boolean checkCloudPriv(UserIdentity currentUser, String cloudName, PrivPredicate wanted, ResourceTypeEnum type) { return false; } + @Override + public boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted) { + return false; + } + @Override public boolean checkResourcePriv(UserIdentity currentUser, String resourceName, PrivPredicate wanted) { PrivBitSet checkedPrivs = PrivBitSet.of(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/hive/RangerHiveAccessController.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/hive/RangerHiveAccessController.java index 5ca0589aefb..74be9f24bfe 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/hive/RangerHiveAccessController.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/hive/RangerHiveAccessController.java @@ -177,11 +177,16 @@ public class RangerHiveAccessController extends RangerAccessController { } @Override - public boolean checkCloudPriv(UserIdentity currentUser, String resourceName, + public boolean checkCloudPriv(UserIdentity currentUser, String cloudName, PrivPredicate wanted, ResourceTypeEnum type) { return false; } + @Override + public boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted) { + return false; + } + @Override public boolean checkResourcePriv(UserIdentity currentUser, String resourceName, PrivPredicate wanted) { return false; diff --git a/fe/fe-core/src/main/java/org/apache/doris/cloud/analysis/UseCloudClusterStmt.java b/fe/fe-core/src/main/java/org/apache/doris/cloud/analysis/UseCloudClusterStmt.java index e35d337ef35..0fab5c8e046 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/cloud/analysis/UseCloudClusterStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/cloud/analysis/UseCloudClusterStmt.java @@ -89,7 +89,7 @@ public class UseCloudClusterStmt extends StatementBase implements NotFallbackInP if (Strings.isNullOrEmpty(cluster)) { ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_CLUSTER_ERROR); } - if (!Env.getCurrentEnv().getAuth().checkCloudPriv(ConnectContext.get().getCurrentUserIdentity(), + if (!Env.getCurrentEnv().getAccessManager().checkCloudPriv(ConnectContext.get().getCurrentUserIdentity(), cluster, PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER)) { throw new AnalysisException("USAGE denied to user '" + ConnectContext.get().getQualifiedUser() + "'@'" + ConnectContext.get().getRemoteIP() diff --git a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnv.java b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnv.java index 190cb457a94..411ddbe52cf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnv.java +++ b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnv.java @@ -273,7 +273,7 @@ public class CloudEnv extends Env { public void checkCloudClusterPriv(String clusterName) throws DdlException { // check resource usage privilege - if (!Env.getCurrentEnv().getAuth().checkCloudPriv(ConnectContext.get().getCurrentUserIdentity(), + if (!Env.getCurrentEnv().getAccessManager().checkCloudPriv(ConnectContext.get().getCurrentUserIdentity(), clusterName, PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER)) { throw new DdlException("USAGE denied to user " + ConnectContext.get().getQualifiedUser() + "'@'" + ConnectContext.get().getRemoteIP() diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java index 2ff9e96ef67..51e9308216c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java @@ -2754,7 +2754,7 @@ public class InternalCatalog implements CatalogIf<Database> { Pair<String, String> storageVaultInfoPair = PropertyAnalyzer.analyzeStorageVault(properties); // Check if user has storage vault usage privilege - if (ConnectContext.get() != null && !env.getAuth() + if (ConnectContext.get() != null && !env.getAccessManager() .checkStorageVaultPriv(ctx.getCurrentUserIdentity(), storageVaultInfoPair.first, PrivPredicate.USAGE)) { throw new DdlException("USAGE denied to user '" + ConnectContext.get().getQualifiedUser() diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java index 59091d0624b..c769676e83d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java @@ -267,6 +267,13 @@ public class AccessControllerManager { return defaultAccessController.checkCloudPriv(currentUser, cloudName, wanted, type); } + public boolean checkStorageVaultPriv(ConnectContext ctx, String storageVaultName, PrivPredicate wanted) { + return checkStorageVaultPriv(ctx.getCurrentUserIdentity(), storageVaultName, wanted); + } + + public boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted) { + return defaultAccessController.checkStorageVaultPriv(currentUser, storageVaultName, wanted); + } public boolean checkWorkloadGroupPriv(ConnectContext ctx, String workloadGroupName, PrivPredicate wanted) { return checkWorkloadGroupPriv(ctx.getCurrentUserIdentity(), workloadGroupName, wanted); diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Auth.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Auth.java index a89e4caed24..5d3324bca2b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Auth.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Auth.java @@ -266,7 +266,7 @@ public class Auth implements Writable { } // ==== Global ==== - public boolean checkGlobalPriv(UserIdentity currentUser, PrivPredicate wanted) { + protected boolean checkGlobalPriv(UserIdentity currentUser, PrivPredicate wanted) { readLock(); try { Set<Role> roles = getRolesByUserWithLdap(currentUser); @@ -282,7 +282,7 @@ public class Auth implements Writable { } // ==== Catalog ==== - public boolean checkCtlPriv(UserIdentity currentUser, String ctl, PrivPredicate wanted) { + protected boolean checkCtlPriv(UserIdentity currentUser, String ctl, PrivPredicate wanted) { if (wanted.getPrivs().containsNodePriv()) { if (LOG.isDebugEnabled()) { LOG.debug("should not check NODE priv in catalog level. user: {}, catalog: {}", @@ -305,7 +305,7 @@ public class Auth implements Writable { } // ==== Database ==== - public boolean checkDbPriv(UserIdentity currentUser, String ctl, String db, PrivPredicate wanted) { + protected boolean checkDbPriv(UserIdentity currentUser, String ctl, String db, PrivPredicate wanted) { if (wanted.getPrivs().containsNodePriv()) { if (LOG.isDebugEnabled()) { LOG.debug("should not check NODE priv in Database level. user: {}, db: {}", @@ -329,7 +329,7 @@ public class Auth implements Writable { } // ==== Table ==== - public boolean checkTblPriv(UserIdentity currentUser, String ctl, String db, String tbl, PrivPredicate wanted) { + protected boolean checkTblPriv(UserIdentity currentUser, String ctl, String db, String tbl, PrivPredicate wanted) { if (wanted.getPrivs().containsNodePriv()) { if (LOG.isDebugEnabled()) { LOG.debug("should check NODE priv in GLOBAL level. user: {}, db: {}, tbl: {}", currentUser, db, tbl); @@ -353,7 +353,7 @@ public class Auth implements Writable { // ==== Column ==== // The reason why this method throws an exception instead of returning a boolean is to // indicate which col does not have permission - public void checkColsPriv(UserIdentity currentUser, String ctl, String db, String tbl, Set<String> cols, + protected void checkColsPriv(UserIdentity currentUser, String ctl, String db, String tbl, Set<String> cols, PrivPredicate wanted) throws AuthorizationException { Set<Role> roles = getRolesByUserWithLdap(currentUser); for (String col : cols) { @@ -376,7 +376,7 @@ public class Auth implements Writable { } // ==== Resource ==== - public boolean checkResourcePriv(UserIdentity currentUser, String resourceName, PrivPredicate wanted) { + protected boolean checkResourcePriv(UserIdentity currentUser, String resourceName, PrivPredicate wanted) { readLock(); try { Set<Role> roles = getRolesByUserWithLdap(currentUser); @@ -392,7 +392,7 @@ public class Auth implements Writable { } // ==== Storage Vault ==== - public boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted) { + protected boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted) { readLock(); try { Set<Role> roles = getRolesByUserWithLdap(currentUser); @@ -408,7 +408,7 @@ public class Auth implements Writable { } // ==== Workload Group ==== - public boolean checkWorkloadGroupPriv(UserIdentity currentUser, String workloadGroupName, PrivPredicate wanted) { + protected boolean checkWorkloadGroupPriv(UserIdentity currentUser, String workloadGroupName, PrivPredicate wanted) { readLock(); try { // currently stream load not support ip based auth, so normal should not auth temporary @@ -430,7 +430,7 @@ public class Auth implements Writable { } // ==== cloud ==== - public boolean checkCloudPriv(UserIdentity currentUser, String cloudName, + protected boolean checkCloudPriv(UserIdentity currentUser, String cloudName, PrivPredicate wanted, ResourceTypeEnum type) { readLock(); try { diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/CatalogAccessController.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/CatalogAccessController.java index 74d136c4665..0538e52c287 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/CatalogAccessController.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/CatalogAccessController.java @@ -78,7 +78,9 @@ public interface CatalogAccessController { Set<String> cols, PrivPredicate wanted) throws AuthorizationException; // ==== Cloud ==== - boolean checkCloudPriv(UserIdentity currentUser, String resourceName, PrivPredicate wanted, ResourceTypeEnum type); + boolean checkCloudPriv(UserIdentity currentUser, String cloudName, PrivPredicate wanted, ResourceTypeEnum type); + + boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted); Optional<DataMaskPolicy> evalDataMaskPolicy(UserIdentity currentUser, String ctl, String db, String tbl, String col); diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/InternalAccessController.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/InternalAccessController.java index 72424f5738e..65a40ae1361 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/InternalAccessController.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/InternalAccessController.java @@ -70,9 +70,14 @@ public class InternalAccessController implements CatalogAccessController { } @Override - public boolean checkCloudPriv(UserIdentity currentUser, String resourceName, + public boolean checkCloudPriv(UserIdentity currentUser, String cloudName, PrivPredicate wanted, ResourceTypeEnum type) { - return auth.checkResourcePriv(currentUser, resourceName, wanted); + return auth.checkCloudPriv(currentUser, cloudName, wanted, type); + } + + @Override + public boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted) { + return auth.checkStorageVaultPriv(currentUser, storageVaultName, wanted); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java index e4a76b23820..a637fb6c182 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java @@ -397,7 +397,7 @@ public class UserProperty implements Writable { return value; } // check cluster auth - if (!Strings.isNullOrEmpty(value) && !Env.getCurrentEnv().getAuth().checkCloudPriv( + if (!Strings.isNullOrEmpty(value) && !Env.getCurrentEnv().getAccessManager().checkCloudPriv( new UserIdentity(qualifiedUser, "%"), value, PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER)) { throw new ComputeGroupException(String.format("set default compute group failed, " + "user %s has no permission to use compute group '%s', please grant use privilege first ", diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallExecuteStmtFunc.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallExecuteStmtFunc.java index 1e36915c111..4302d277708 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallExecuteStmtFunc.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallExecuteStmtFunc.java @@ -92,7 +92,7 @@ public class CallExecuteStmtFunc extends CallFunc { } // check priv - if (!Env.getCurrentEnv().getAuth().checkCtlPriv(user, catalogName, PrivPredicate.LOAD)) { + if (!Env.getCurrentEnv().getAccessManager().checkCtlPriv(user, catalogName, PrivPredicate.LOAD)) { throw new AnalysisException("user " + user + " has no privilege to execute stmt in catalog " + catalogName); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallFlushAuditLogFunc.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallFlushAuditLogFunc.java index 60cae55e7f5..8d0beef4e67 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallFlushAuditLogFunc.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/call/CallFlushAuditLogFunc.java @@ -48,7 +48,7 @@ public class CallFlushAuditLogFunc extends CallFunc { @Override public void run() { // check priv - if (!Env.getCurrentEnv().getAuth().checkGlobalPriv(user, PrivPredicate.ADMIN)) { + if (!Env.getCurrentEnv().getAccessManager().checkGlobalPriv(user, PrivPredicate.ADMIN)) { throw new AnalysisException("Only admin can flush audit log"); } // flush audit log diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java index 70c96fc3960..2d3f8a60394 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java @@ -1253,7 +1253,7 @@ public class ConnectContext { List<String> hasAuthCluster = new ArrayList<>(); // get all available cluster of the user for (String cloudClusterName : cloudClusterNames) { - if (Env.getCurrentEnv().getAuth().checkCloudPriv(getCurrentUserIdentity(), + if (Env.getCurrentEnv().getAccessManager().checkCloudPriv(getCurrentUserIdentity(), cloudClusterName, PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER)) { hasAuthCluster.add(cloudClusterName); // find a cluster has more than one alive be diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java index 86227a2d8d7..7b124b3d467 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java @@ -216,6 +216,7 @@ import org.apache.doris.load.LoadJob; import org.apache.doris.load.LoadJob.JobState; import org.apache.doris.load.loadv2.LoadManager; import org.apache.doris.load.routineload.RoutineLoadJob; +import org.apache.doris.mysql.privilege.AccessControllerManager; import org.apache.doris.mysql.privilege.Auth; import org.apache.doris.mysql.privilege.PrivBitSet; import org.apache.doris.mysql.privilege.PrivPredicate; @@ -812,7 +813,7 @@ public class ShowExecutor { for (String clusterName : clusterNameSet) { ArrayList<String> row = Lists.newArrayList(clusterName); // current_used, users - if (!Env.getCurrentEnv().getAuth() + if (!Env.getCurrentEnv().getAccessManager() .checkCloudPriv(ConnectContext.get().getCurrentUserIdentity(), clusterName, PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER)) { continue; @@ -830,7 +831,7 @@ public class ShowExecutor { users.remove(Auth.ROOT_USER); } // common user, not admin - if (!Env.getCurrentEnv().getAuth().checkGlobalPriv(ConnectContext.get().currentUserIdentity, + if (!Env.getCurrentEnv().getAccessManager().checkGlobalPriv(ConnectContext.get().currentUserIdentity, PrivPredicate.of(PrivBitSet.of(Privilege.ADMIN_PRIV), Operator.OR))) { users.removeIf(user -> !user.equals(ClusterNamespace.getNameFromFullName(ctx.getQualifiedUser()))); } @@ -3453,10 +3454,10 @@ public class ShowExecutor { try { Cloud.GetObjStoreInfoResponse resp = MetaServiceProxy.getInstance() .getObjStoreInfo(Cloud.GetObjStoreInfoRequest.newBuilder().build()); - Auth auth = Env.getCurrentEnv().getAuth(); + AccessControllerManager accessManager = Env.getCurrentEnv().getAccessManager(); UserIdentity user = ctx.getCurrentUserIdentity(); rows = resp.getStorageVaultList().stream() - .filter(storageVault -> auth.checkStorageVaultPriv(user, storageVault.getName(), + .filter(storageVault -> accessManager.checkStorageVaultPriv(user, storageVault.getName(), PrivPredicate.USAGE)) .map(StorageVault::convertToShowStorageVaultProperties) .collect(Collectors.toList()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 397dd12a4a0..3933b9bbd83 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -1345,7 +1345,7 @@ public class StmtExecutor { if (ConnectContext.get() == null || Strings.isNullOrEmpty(clusterName)) { return false; } - return Env.getCurrentEnv().getAuth().checkCloudPriv(ConnectContext.get().getCurrentUserIdentity(), + return Env.getCurrentEnv().getAccessManager().checkCloudPriv(ConnectContext.get().getCurrentUserIdentity(), clusterName, PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/QueryTableValueFunction.java b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/QueryTableValueFunction.java index 07a125836b7..269ebdeab42 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/QueryTableValueFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/QueryTableValueFunction.java @@ -62,7 +62,7 @@ public abstract class QueryTableValueFunction extends TableValuedFunctionIf { // check priv UserIdentity userIdentity = ConnectContext.get().getCurrentUserIdentity(); - if (!Env.getCurrentEnv().getAuth().checkCtlPriv(userIdentity, catalogName, PrivPredicate.SELECT)) { + if (!Env.getCurrentEnv().getAccessManager().checkCtlPriv(userIdentity, catalogName, PrivPredicate.SELECT)) { throw new org.apache.doris.nereids.exceptions.AnalysisException( "user " + userIdentity + " has no privilege to query in catalog " + catalogName); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/datasource/ColumnPrivTest.java b/fe/fe-core/src/test/java/org/apache/doris/datasource/ColumnPrivTest.java index 94ffedb8d13..b37f7571d35 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/datasource/ColumnPrivTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/datasource/ColumnPrivTest.java @@ -320,7 +320,13 @@ public class ColumnPrivTest extends TestWithFeService { } @Override - public boolean checkCloudPriv(UserIdentity currentUser, String resourceName, PrivPredicate wanted, ResourceTypeEnum type) { + public boolean checkCloudPriv(UserIdentity currentUser, String cloudName, PrivPredicate wanted, ResourceTypeEnum type) { + return false; + } + + @Override + public boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, + PrivPredicate wanted) { return false; } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/privileges/TestCheckPrivileges.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/privileges/TestCheckPrivileges.java index 2b2f878c7f3..89220e7dffd 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/privileges/TestCheckPrivileges.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/privileges/TestCheckPrivileges.java @@ -403,11 +403,16 @@ public class TestCheckPrivileges extends TestWithFeService implements GeneratedM } @Override - public boolean checkCloudPriv(UserIdentity currentUser, String resourceName, PrivPredicate wanted, + public boolean checkCloudPriv(UserIdentity currentUser, String cloudName, PrivPredicate wanted, ResourceTypeEnum type) { return true; } + @Override + public boolean checkStorageVaultPriv(UserIdentity currentUser, String storageVaultName, PrivPredicate wanted) { + return true; + } + @Override public Optional<DataMaskPolicy> evalDataMaskPolicy(UserIdentity currentUser, String ctl, String db, String tbl, String col) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org