一、Elasticsearch安全审计简介
审计日志(Audit Logging)用于记录Elasticsearch中的安全相关事件,包括认证失败、连接拒绝、数据访问事件以及通过API对安全配置(如用户、角色、API密钥)的变更记录。
注意:审计日志功能仅在特定订阅级别提供。
二、启用审计日志
在所有集群节点的elasticsearch.yml
配置文件中启用审计:
xpack.security.audit.enabled: true
开启后,每个节点将生成单独的审计日志文件,命名格式为:
<clustername>_audit.json
三、审计事件控制设置
可通过以下动态配置控制审计日志记录哪些事件:
3.1 包含指定事件(动态配置)
默认记录的事件:
access_denied
(访问拒绝)access_granted
(访问允许)anonymous_access_denied
(匿名访问拒绝)authentication_failed
(认证失败)connection_denied
(连接拒绝)tampered_request
(篡改请求)run_as_denied
、run_as_granted
(以他人身份执行的权限事件)security_config_change
(安全配置变更)
配置示例:
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.events.include": ["access_denied","authentication_failed","security_config_change"]}
}
使用_all
记录全部事件(不推荐,会产生大量日志)。
3.2 排除指定事件(动态配置)
排除事件示例:
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.events.exclude": ["connection_denied"]}
}
3.3 是否记录完整请求体(动态配置)
记录REST请求完整请求体(如搜索查询),默认关闭:
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.events.emit_request_body": true}
}
注意:启用此项可能导致敏感数据明文记录。
四、节点信息记录设置
动态配置是否在每条审计事件中包含节点信息:
参数 | 描述 | 默认值 |
---|---|---|
emit_node_name | 节点名称 | false |
emit_node_host_address | 节点IP地址 | false |
emit_node_host_name | 节点主机名 | false |
emit_node_id | 节点唯一ID | true |
配置示例:
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.emit_node_host_address": true,"xpack.security.audit.logfile.emit_node_name": true}
}
五、事件忽略策略
Elasticsearch支持细粒度地定义审计事件的忽略策略。当事件满足某一策略的所有条件时,该事件将不会被记录。
示例(创建名为internal_users
的策略,忽略特定用户的审计事件):
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.events.ignore_filters.internal_users.users": ["kibana_system", "logstash_system"],"xpack.security.audit.logfile.events.ignore_filters.internal_users.realms": ["native"],"xpack.security.audit.logfile.events.ignore_filters.internal_users.actions": ["indices:data/read/*"],"xpack.security.audit.logfile.events.ignore_filters.internal_users.roles": ["superuser"],"xpack.security.audit.logfile.events.ignore_filters.internal_users.indices": [".kibana*"]}
}
users
:指定用户名或通配符realms
:指定认证域或通配符actions
:指定动作(如读、写操作)或通配符roles
:指定角色或通配符indices
:指定索引名或通配符
六、审计日志最佳实践
- 开启审计日志可提升安全性和合规性,但需注意日志体积和性能影响。
- 通常建议记录认证失败、权限拒绝、配置变更等关键事件。
- 明确排除不必要的频繁事件以减少日志量,如健康检查或系统内部用户操作。
- 定期审阅审计日志,监控异常访问或操作。
七、常见问题与注意事项
- 审计日志默认关闭,必须明确启用。
- 动态设置应通过Cluster Update Settings API在集群层级保持一致。
- 敏感数据在审计事件中可能以明文存储,需审慎启用请求体记录。
八、总结
通过合理配置Elasticsearch审计日志功能,管理员能够有效监控和审查安全相关事件,及时发现潜在风险,保障集群的安全运行。本文介绍的设置方法与最佳实践,将帮助用户在安全与性能之间找到适当平衡。