*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 表示该事件在最近时间窗口内发生了多少次。