This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 64f0e3ce14d auth. some improvement.
64f0e3ce14d is described below
commit 64f0e3ce14d449d4570d6623936d24dc92f8734e
Author: Colin Li <[email protected]>
AuthorDate: Sat Oct 28 09:23:23 2023 +0800
auth. some improvement.
---
.../org/apache/iotdb/db/it/auth/IoTDBAuthIT.java | 95 ++++++++++------------
.../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 | 5 --
.../org/apache/iotdb/db/auth/AuthorityChecker.java | 8 +-
.../plan/statement/sys/AuthorStatement.java | 2 +-
.../commons/auth/entity/PriPrivilegeType.java | 13 ++-
.../iotdb/commons/auth/entity/PrivilegeType.java | 3 +-
.../org/apache/iotdb/commons/auth/entity/Role.java | 6 +-
7 files changed, 60 insertions(+), 72 deletions(-)
diff --git
a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java
b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java
index 59bd2829542..37c69ab11aa 100644
---
a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java
@@ -587,16 +587,15 @@ public class IoTDBAuthIT {
validateResultSet(resultSet, ans);
resultSet = adminStmt.executeQuery("LIST PRIVILEGES OF USER root");
ans =
- ",,MANAGE_USER,true,\n"
- + ",,MANAGE_ROLE,true,\n"
- + ",,USE_TRIGGER,true,\n"
- + ",,USE_UDF,true,\n"
- + ",,USE_CQ,true,\n"
- + ",,USE_PIPE,true,\n"
- + ",,EXTEND_TEMPLATE,true,\n"
- + ",,MANAGE_DATABASE,true,\n"
- + ",,MAINTAIN,true,\n"
- + ",,AUDIT,true,\n"
+ ",root.**,MANAGE_USER,true,\n"
+ + ",root.**,MANAGE_ROLE,true,\n"
+ + ",root.**,USE_TRIGGER,true,\n"
+ + ",root.**,USE_UDF,true,\n"
+ + ",root.**,USE_CQ,true,\n"
+ + ",root.**,USE_PIPE,true,\n"
+ + ",root.**,EXTEND_TEMPLATE,true,\n"
+ + ",root.**,MANAGE_DATABASE,true,\n"
+ + ",root.**,MAINTAIN,true,\n"
+ ",root.**,READ_DATA,true,\n"
+ ",root.**,WRITE_DATA,true,\n"
+ ",root.**,READ_SCHEMA,true,\n"
@@ -937,16 +936,15 @@ public class IoTDBAuthIT {
// 3.admin lists privileges of user1
ResultSet resultSet = adminStmt.executeQuery("LIST PRIVILEGES OF USER
user1");
String ans =
- ",,MANAGE_USER,false,\n"
- + ",,MANAGE_ROLE,false,\n"
- + ",,USE_TRIGGER,false,\n"
- + ",,USE_UDF,false,\n"
- + ",,USE_CQ,false,\n"
- + ",,USE_PIPE,false,\n"
- + ",,EXTEND_TEMPLATE,false,\n"
- + ",,MANAGE_DATABASE,false,\n"
- + ",,MAINTAIN,false,\n"
- + ",,AUDIT,false,\n"
+ ",root.**,MANAGE_USER,false,\n"
+ + ",root.**,MANAGE_ROLE,false,\n"
+ + ",root.**,USE_TRIGGER,false,\n"
+ + ",root.**,USE_UDF,false,\n"
+ + ",root.**,USE_CQ,false,\n"
+ + ",root.**,USE_PIPE,false,\n"
+ + ",root.**,EXTEND_TEMPLATE,false,\n"
+ + ",root.**,MANAGE_DATABASE,false,\n"
+ + ",root.**,MAINTAIN,false,\n"
+ ",root.**,READ_DATA,false,\n"
+ ",root.**,WRITE_DATA,false,\n"
+ ",root.**,READ_SCHEMA,false,\n"
@@ -960,16 +958,15 @@ public class IoTDBAuthIT {
}
resultSet = adminStmt.executeQuery("LIST PRIVILEGES OF USER user2");
ans =
- ",,MANAGE_USER,true,\n"
- + ",,MANAGE_ROLE,true,\n"
- + ",,USE_TRIGGER,true,\n"
- + ",,USE_UDF,true,\n"
- + ",,USE_CQ,true,\n"
- + ",,USE_PIPE,true,\n"
- + ",,EXTEND_TEMPLATE,true,\n"
- + ",,MANAGE_DATABASE,true,\n"
- + ",,MAINTAIN,true,\n"
- + ",,AUDIT,true,\n"
+ ",root.**,MANAGE_USER,true,\n"
+ + ",root.**,MANAGE_ROLE,true,\n"
+ + ",root.**,USE_TRIGGER,true,\n"
+ + ",root.**,USE_UDF,true,\n"
+ + ",root.**,USE_CQ,true,\n"
+ + ",root.**,USE_PIPE,true,\n"
+ + ",root.**,EXTEND_TEMPLATE,true,\n"
+ + ",root.**,MANAGE_DATABASE,true,\n"
+ + ",root.**,MAINTAIN,true,\n"
+ ",root.**,READ_DATA,true,\n"
+ ",root.**,WRITE_DATA,true,\n"
+ ",root.**,READ_SCHEMA,true,\n"
@@ -986,16 +983,15 @@ public class IoTDBAuthIT {
try {
resultSet = userStmt.executeQuery("LIST PRIVILEGES OF USER user1");
ans =
- ",,MANAGE_USER,false,\n"
- + ",,MANAGE_ROLE,false,\n"
- + ",,USE_TRIGGER,false,\n"
- + ",,USE_UDF,false,\n"
- + ",,USE_CQ,false,\n"
- + ",,USE_PIPE,false,\n"
- + ",,EXTEND_TEMPLATE,false,\n"
- + ",,MANAGE_DATABASE,false,\n"
- + ",,MAINTAIN,false,\n"
- + ",,AUDIT,false,\n"
+ ",root.**,MANAGE_USER,false,\n"
+ + ",root.**,MANAGE_ROLE,false,\n"
+ + ",root.**,USE_TRIGGER,false,\n"
+ + ",root.**,USE_UDF,false,\n"
+ + ",root.**,USE_CQ,false,\n"
+ + ",root.**,USE_PIPE,false,\n"
+ + ",root.**,EXTEND_TEMPLATE,false,\n"
+ + ",root.**,MANAGE_DATABASE,false,\n"
+ + ",root.**,MAINTAIN,false,\n"
+ ",root.**,READ_DATA,false,\n"
+ ",root.**,WRITE_DATA,false,\n"
+ ",root.**,READ_SCHEMA,false,\n"
@@ -1019,21 +1015,20 @@ public class IoTDBAuthIT {
validateResultSet(resultSet, ans);
userStmt.execute("GRANT MANAGE_ROLE ON root.** TO USER user3");
resultSet = userStmt.executeQuery("LIST PRIVILEGES OF USER user3");
- ans = ",,MANAGE_ROLE,false,\n";
+ ans = ",root.**,MANAGE_ROLE,false,\n";
validateResultSet(resultSet, ans);
userStmt.execute("REVOKE MANAGE_ROLE ON root.** FROM USER user1");
resultSet = userStmt.executeQuery("LIST PRIVILEGES OF USER user1");
ans =
- ",,MANAGE_USER,false,\n"
- + ",,USE_TRIGGER,false,\n"
- + ",,USE_UDF,false,\n"
- + ",,USE_CQ,false,\n"
- + ",,USE_PIPE,false,\n"
- + ",,EXTEND_TEMPLATE,false,\n"
- + ",,MANAGE_DATABASE,false,\n"
- + ",,MAINTAIN,false,\n"
- + ",,AUDIT,false,\n"
+ ",root.**,MANAGE_USER,false,\n"
+ + ",root.**,USE_TRIGGER,false,\n"
+ + ",root.**,USE_UDF,false,\n"
+ + ",root.**,USE_CQ,false,\n"
+ + ",root.**,USE_PIPE,false,\n"
+ + ",root.**,EXTEND_TEMPLATE,false,\n"
+ + ",root.**,MANAGE_DATABASE,false,\n"
+ + ",root.**,MAINTAIN,false,\n"
+ ",root.**,READ_DATA,false,\n"
+ ",root.**,WRITE_DATA,false,\n"
+ ",root.**,READ_SCHEMA,false,\n"
diff --git
a/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
b/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
index 61770d77b9a..a1cf3cf6ad2 100644
--- a/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
+++ b/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
@@ -928,7 +928,6 @@ PRIVILEGE_VALUE
| USE_CQ
| USE_PIPE
| EXTEND_TEMPLATE
- | AUDIT
| MANAGE_DATABASE
| MAINTAIN
;
@@ -977,10 +976,6 @@ EXTEND_TEMPLATE
: E X T E N D '_' T E M P L A T E
;
-AUDIT
- : A U D I T
- ;
-
MANAGE_DATABASE
: M A N A G E '_' D A T A B A S E
;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
index 5fe9f9fd613..2830289681f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
@@ -231,7 +231,7 @@ public class AuthorityChecker {
builder = new TsBlockBuilder(types);
TUserResp user = authResp.getPermissionInfo().getUserInfo();
if (user != null) {
- appendPriBuilder("", "", user.getSysPriSet(),
user.getSysPriSetGrantOpt(), builder);
+ appendPriBuilder("", "root.**", user.getSysPriSet(),
user.getSysPriSetGrantOpt(), builder);
for (TPathPrivilege path : user.getPrivilegeList()) {
appendPriBuilder("", path.getPath(), path.getPriSet(),
path.getPriGrantOpt(), builder);
}
@@ -241,7 +241,11 @@ public class AuthorityChecker {
while (it.hasNext()) {
TRoleResp role = it.next().getValue();
appendPriBuilder(
- role.getRoleName(), "", role.getSysPriSet(),
role.getSysPriSetGrantOpt(), builder);
+ role.getRoleName(),
+ "root.**",
+ role.getSysPriSet(),
+ role.getSysPriSetGrantOpt(),
+ builder);
for (TPathPrivilege path : role.getPrivilegeList()) {
appendPriBuilder(
role.getRoleName(), path.getPath(), path.getPriSet(),
path.getPriGrantOpt(), builder);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java
index 5acbf06a12e..1b325793fd2 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java
@@ -315,7 +315,7 @@ public class AuthorStatement extends Statement implements
IConfigStatement {
}
return AuthorityChecker.getOptTSStatus(
AuthorityChecker.checkGrantOption(userName, privilegeList,
nodeNameList),
- "Has no permission to execute"
+ "Has no permission to execute "
+ authorType
+ ", please ensure you have these privileges and the grant
option is TRUE when granted");
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PriPrivilegeType.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PriPrivilegeType.java
index 43e055a1a43..d7898624eea 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PriPrivilegeType.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PriPrivilegeType.java
@@ -69,13 +69,12 @@ public enum PriPrivilegeType {
PrivilegeType.WRITE_DATA,
PrivilegeType.READ_DATA,
PrivilegeType.READ_SCHEMA,
- PrivilegeType.MAINTAIN,
- PrivilegeType.AUDIT),
+ PrivilegeType.MAINTAIN),
DELETE_DATABASE(true, false, PrivilegeType.MANAGE_DATABASE),
ALTER_TIMESERIES(true, true, PrivilegeType.WRITE_SCHEMA),
UPDATE_TEMPLATE(false),
READ_TEMPLATE(false),
- APPLY_TEMPLATE(false),
+ APPLY_TEMPLATE(true, PrivilegeType.WRITE_SCHEMA),
READ_TEMPLATE_APPLICATION(false),
SHOW_CONTINUOUS_QUERIES(false),
CREATE_PIPEPLUGIN(false, PrivilegeType.USE_PIPE),
@@ -86,10 +85,10 @@ public enum PriPrivilegeType {
STOP_PIPE(false, PrivilegeType.USE_PIPE),
DROP_PIPE(false, PrivilegeType.USE_PIPE),
SHOW_PIPES(false),
- CREATE_VIEW(false),
- ALTER_VIEW(false),
- RENAME_VIEW(false),
- DELETE_VIEW(false),
+ CREATE_VIEW(true, PrivilegeType.WRITE_SCHEMA),
+ ALTER_VIEW(true, PrivilegeType.WRITE_SCHEMA),
+ RENAME_VIEW(true, PrivilegeType.WRITE_SCHEMA),
+ DELETE_VIEW(true, PrivilegeType.WRITE_SCHEMA),
;
boolean accept = false;
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java
index 532dd02cd32..73201aeb4ce 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java
@@ -35,8 +35,7 @@ public enum PrivilegeType {
USE_PIPE,
EXTEND_TEMPLATE,
MANAGE_DATABASE,
- MAINTAIN,
- AUDIT;
+ MAINTAIN;
private static final int PRIVILEGE_COUNT = values().length;
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
index 705f372d483..9533822bcd2 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
@@ -145,8 +145,6 @@ public class Role {
case 7:
return PrivilegeType.EXTEND_TEMPLATE.ordinal();
case 8:
- return PrivilegeType.AUDIT.ordinal();
- case 9:
return PrivilegeType.MAINTAIN.ordinal();
default:
return -1;
@@ -172,10 +170,8 @@ public class Role {
return 6;
case EXTEND_TEMPLATE:
return 7;
- case AUDIT:
- return 8;
case MAINTAIN:
- return 9;
+ return 8;
default:
return -1;
}