Replies: 1 comment
-
Actually, all statement executed in Doris should be written in audit log, no matter it is success, error, authentication/authorization fail or any other reason. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
关于 Apache Doris 认证和授权模块中审计日志缺失的讨论
背景
在对 Apache Doris 的认证(Authentication)和授权(Authorization)相关代码进行分析时,我注意到在认证和授权的关键模块中似乎缺少审计日志记录,而在
ConnectProcessor
中,审计日志仅在每个语句(statement)执行后记录。这可能导致认证和授权阶段的安全事件未被及时记录和审计。审计日志在安全管理中非常重要,它可以帮助管理员追踪用户的登录尝试、权限检查失败的操作以及潜在的安全威胁。因此,我希望与社区讨论在认证和授权模块中是否应该添加审计日志支持,或者是否已经在其他地方实现了相关功能而我未注意到。
问题与观察
认证阶段缺少审计日志:
checkPassword
和getAuthorizationInfo
方法时,代码通过Env.getCurrentEnv().getAuth().checkPlainPassword
验证用户凭据。如果验证失败,抛出UnauthorizedException
,但未看到调用类似AuditLogHelper
或其他日志记录工具的代码。授权阶段缺少审计日志:
checkTblAuth
方法中,权限检查失败时抛出UnauthorizedException
,并提供缺少权限的详细信息,但未记录到审计日志。ConnectProcessor 中的审计日志:
ConnectProcessor
或相关模块中,审计日志(如通过AuditLogHelper
)在每个语句(statement)执行后记录,例如在StmtExecutor
的auditAfterExec
方法中。这确实记录了用户的操作行为,但仅限于成功执行或执行后的错误。讨论问题
初步建议
如果社区认为审计日志在认证和授权模块中是必要的,我建议以下改进方向:
认证阶段:在
checkPassword
方法或其调用者中,添加审计日志记录,捕获登录尝试的详细信息。授权阶段:在
checkTblAuth
方法或类似权限检查方法中,添加审计日志记录权限检查失败的事件。日志格式:定义统一的审计日志格式,包含时间戳、事件类型(认证/授权)、用户身份、操作结果等字段,便于后续分析。
期待反馈
我希望听到社区对这一问题的看法,特别是 Doris 开发者和维护者的意见。如果审计日志已经在其他地方实现,请指出相关代码位置,以便我学习和理解。如果社区认为需要添加认证和授权阶段的审计日志支持,我愿意参与讨论。
感谢大家的关注和反馈!
Beta Was this translation helpful? Give feedback.
All reactions