9.6.6 安全审计与操作日志
安全审计与操作日志是保障 Nacos 平台可追溯、可合规、可诊断的核心能力。本节给出审计链路的原理草图、日志位置、关键字段、采集与归档、告警联动,并补充可执行示例、排错与练习。
一、审计链路原理草图(建议落地为独立审计通道)
二、日志类型与关键字段
- 登录审计:登录成功/失败、来源 IP、账号、User-Agent、验证码状态。
- 权限变更:用户、角色、权限、命名空间、配置读写权限变更。
- 配置变更:新增/修改/删除配置,变更前后内容摘要与版本号。
- 服务治理操作:服务注册/注销、实例上下线、权重调整、健康检查策略变更。
- 系统管理操作:集群节点操作、参数变更、插件启停、密钥轮换。
建议统一结构化字段:
- event_type、operator、namespace/group/service、resource、before/after、result、client_ip、trace_id、timestamp
三、日志位置、配置与结构化示例
1)查看 Nacos 日志目录:
# 进入 Nacos 安装目录
cd /opt/nacos
ls -l logs
# 预期看到 nacos.log / nacos-access.log / nacos-config.log 等
2)示例:以 logback-spring.xml 拆分审计日志(若你的版本为 logback.xml 亦可等价修改)
路径:/opt/nacos/conf/logback-spring.xml
<appender name="AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/nacos-audit.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/nacos-audit.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>90</maxHistory>
</rollingPolicy>
<encoder>
<pattern>{"timestamp":"%d{ISO8601}","level":"%p","event_type":"%logger{36}",
"message":"%msg","trace_id":"%X{traceId}","client_ip":"%X{client_ip}"}%n</pattern>
</encoder>
</appender>
<logger name="com.alibaba.nacos.core.audit" level="INFO" additivity="false">
<appender-ref ref="AUDIT"/>
</logger>
预期效果:产生 logs/nacos-audit.log,并按天滚动压缩。
3)重启 Nacos 使配置生效:
# 单机启动示例
/opt/nacos/bin/shutdown.sh
/opt/nacos/bin/startup.sh -m standalone
# 预期:logs/nacos-audit.log 出现新日志
四、采集与存储(Filebeat 示例)
路径:/etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
id: nacos_audit
paths:
- /opt/nacos/logs/nacos-audit.log
parsers:
- ndjson:
keys_under_root: true
output.elasticsearch:
hosts: ["http://es01:9200"]
index: "nacos-audit-%{+yyyy.MM.dd}"
启动与验证:
systemctl enable --now filebeat
# 验证是否采集
curl -s 'http://es01:9200/_cat/indices?v' | grep nacos-audit
五、告警联动示例(Prometheus + Alertmanager 思路)
- 以日志平台产出告警或将关键事件转为指标(如登录失败次数)。
- 规则示例(伪代码):login_failed_count{service="nacos"} > 5 in 5m
六、日志轮转与保留策略(logrotate 示例)
路径:/etc/logrotate.d/nacos
/opt/nacos/logs/nacos-audit.log {
daily
rotate 90
compress
missingok
notifempty
copytruncate
}
执行检查:
logrotate -f /etc/logrotate.d/nacos
ls -l /opt/nacos/logs | grep nacos-audit
七、排错清单与定位命令
- 审计日志不落盘:
grep -i "audit" /opt/nacos/conf/logback-spring.xml
grep -i "com.alibaba.nacos.core.audit" -n /opt/nacos/conf/logback-spring.xml
- 日志无结构化字段:检查 encoder pattern 是否生效:
tail -n 5 /opt/nacos/logs/nacos-audit.log
- Filebeat 未采集:
systemctl status filebeat
filebeat test output
- 审计缺失:确认控制台与 API 入口统一写审计;检查 API 旁路调用。
八、练习
1)将 nacos-audit.log 拆分为按模块(登录/配置/权限)的三个日志文件,并验证索引写入成功。
2)模拟 5 次登录失败,触发告警规则,检查通知是否到达。
3)对配置变更日志进行脱敏处理:将 before/after 替换为内容哈希并验证查询仍可追溯。
通过上述配置与实践可建立完整审计链路,实现“操作可追溯、变更可审计、异常可告警”,显著提升 Nacos 安全与运维合规能力。