*Redis ACL LOG 命令

ACL LOG 返回 ACL 相关的安全事件日志,如认证失败、权限拒绝(NOPERM)等,用于安全审计和故障排查。


*语法

ACL LOG [count | RESET]

*参数说明

参数 类型 必填 说明
count Integer 返回最近的 N 条日志条目,默认 10 条
RESET Keyword 清空 ACL 日志缓冲区

*返回值

  • Array of Arrays:日志条目列表,每个条目包含:
    • 计数(发生次数)
    • 时间戳(毫秒)
    • 客户端地址
    • 用户名
    • 事件类型(authenticate / command / key / channel)
    • 涉及的命令/资源
  • OK:RESET 成功

*时间复杂度

O(N),N 为返回的日志条目数量


*示例

*查看最近的 ACL 日志

> ACL LOG
1) 1) "count"
   2) (integer) 1
   3) "reason"
   4) "auth"
   5) "context"
   6) "toplevel"
   7) "object"
   8) "appuser"
   9) "username"
  10) "appuser"
  11) "age-seconds"
  12) "12.345"
  13) "client-info"
  14) "id=3 addr=192.168.1.100:54321..."
  15) "entry-id"
  16) (integer) 15
  17) "timestamp-created"
  18) (integer) 1717481234567
  19) "timestamp-last-updated"
  20) (integer) 1717481234567
2) 1) "count"
   2) (integer) 3
   3) "reason"
   4) "command"
   5) "context"
   6) "toplevel"
   7) "object"
   8) "flushall"
   9) "username"
  10) "appuser"
  11) "age-seconds"
  12) "5.678"
  ...

*查看最近 3 条日志

> ACL LOG 3
1) ...
2) ...
3) ...

*清空 ACL 日志

> ACL LOG RESET
OK

*常见错误

错误 原因 解决
ERR wrong number of arguments 传入了多个参数 只传一个 count 或 RESET

*最佳实践

  • 安全监控必备:定期检查 ACL LOG 发现暴力破解或权限配置错误
  • 认证失败日志(auth)提示密码错误或账号被盗
  • NOPERM 日志提示权限配置不足,应调整 ACL 规则而非放宽限制
  • 日志有固定容量限制(默认 128 条),超出时最老的被覆盖
  • 配合 Redis 慢日志(SLOWLOG)和监控告警系统使用

*FAQ

Q1: ACL LOG 和 Redis 日志文件有什么区别? A: ACL LOG 是内存中的环形缓冲区,专门记录安全事件,结构化的数组格式便于程序解析;Redis 日志文件是文本日志。

Q2: ACL LOG 的容量能调整吗? A: 通过配置项 acllog-max-len 调整,默认 128。

Q3: 为什么日志中有 count > 1 的条目? A: Redis 会对相同事件的重复发生进行聚合,count 表示该事件在最近时间窗口内发生了多少次。