Skip to content

Commit f88c241

Browse files
morningmanderenli
authored andcommitted
[Tencent] [feature](audit) add new FE config to skip audit for certain user (apache#38310)
1 parent 96f941f commit f88c241

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

fe/fe-common/src/main/java/org/apache/doris/common/Config.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2680,6 +2680,13 @@ public class Config extends ConfigBase {
26802680
@ConfField(mutable = true)
26812681
public static int query_audit_log_timeout_ms = 5000;
26822682

2683+
@ConfField(description = {
2684+
"在这个列表中的用户的操作,不会被记录到审计日志中。多个用户之间用逗号分隔。",
2685+
"The operations of the users in this list will not be recorded in the audit log. "
2686+
+ "Multiple users are separated by commas."
2687+
})
2688+
public static String skip_audit_user_list = "root";
2689+
26832690
@ConfField(mutable = true)
26842691
public static int be_report_query_statistics_timeout_ms = 60000;
26852692

fe/fe-core/src/main/java/org/apache/doris/qe/AuditEventProcessor.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,14 @@
2424
import org.apache.doris.plugin.PluginInfo.PluginType;
2525
import org.apache.doris.plugin.PluginMgr;
2626

27+
import com.google.common.base.Strings;
2728
import com.google.common.collect.Queues;
29+
import com.google.common.collect.Sets;
2830
import org.apache.logging.log4j.LogManager;
2931
import org.apache.logging.log4j.Logger;
3032

3133
import java.util.List;
34+
import java.util.Set;
3235
import java.util.concurrent.BlockingQueue;
3336
import java.util.concurrent.TimeUnit;
3437

@@ -50,16 +53,30 @@ public class AuditEventProcessor {
5053

5154
private volatile boolean isStopped = false;
5255

56+
private Set<String> skipAuditUsers = Sets.newHashSet();
57+
5358
public AuditEventProcessor(PluginMgr pluginMgr) {
5459
this.pluginMgr = pluginMgr;
5560
}
5661

5762
public void start() {
63+
initSkipAuditUsers();
5864
workerThread = new Thread(new Worker(), "AuditEventProcessor");
5965
workerThread.setDaemon(true);
6066
workerThread.start();
6167
}
6268

69+
private void initSkipAuditUsers() {
70+
if (Strings.isNullOrEmpty(Config.skip_audit_user_list)) {
71+
return;
72+
}
73+
String[] users = Config.skip_audit_user_list.replaceAll(" ", "").split(",");
74+
for (String user : users) {
75+
skipAuditUsers.add(user);
76+
}
77+
LOG.info("skip audit users: {}", skipAuditUsers);
78+
}
79+
6380
public void stop() {
6481
isStopped = true;
6582
if (workerThread != null) {
@@ -72,6 +89,10 @@ public void stop() {
7289
}
7390

7491
public boolean handleAuditEvent(AuditEvent auditEvent) {
92+
if (skipAuditUsers.contains(auditEvent.user)) {
93+
// return true to ignore this event
94+
return true;
95+
}
7596
boolean isAddSucc = true;
7697
try {
7798
if (eventQueue.size() >= Config.audit_event_log_queue_size) {

0 commit comments

Comments
 (0)