前序
文章出自
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
文章内容全部出自本人对官方文档的翻译,以及两年多的es使用经验理解,自己理解的部分会特殊标记,无特殊标记处均翻自官网,参考文章时请注意辨别。
正文
你可以使用审计日志记录安全相关事件,比如用户认证失败、拒绝连接和数据访问事件。除此之外,使用API修改安全配置,包含创建、更新和删除本地和内置用户、角色、角色映射以及API keys等操作也会被记录。
注意:
审计日志只能在特定的订阅级别上可用,获取更多信息可以查看:https://www.elastic.co/subscriptions。
如果要配置审计日志,则必须在每一个节点上都进行配置。比如xpack.security.audit.enabled
这样的静态配置也必须在每个节点的elasticsearch.yml
中进行配置。对于动态审计配置,请使用集群更新配置API来确保所有的节点修改为一样的配置。
一般的安全审计配置
xpack.security.audit.enabled
**静态配置;**将配置改为true
来打开该节点的审计配置。默认是false
。这会将每个节点上的审计事件输入到一个名字为<clustername>_audit.json
的专有文件中。
如果激活这个配置的话,集群中所有的节点的elasticsearch.yml
配置文件中都必须进行修改。
审计事件配置
可以使用下面的参数来控制哪些事件或者信息会被记录:
xpack.security.audit.logfile.events.include
动态配置; 指定一类事件输出到审计日志中。此外_all
参数会对所有的事件进行审计,但是因为这样会记录很多冗余数据所以一般情况这样也是很危险的。默认情况包含的值有:access_denied, access_granted, anonymous_access_denied, authentication_failed, connection_denied, tampered_request, run_as_denied, run_as_granted, security_config_change
xpack.security.audit.logfile.events.exclude
**动态配置;**排除指定的一类事件。在events.include
指定的内容为_all
时非常有用。默认情况下是一个空的数组。
xpack.security.audit.logfile.events.emit_request_body
**动态配置;**指定是否将REST请求的完整请求正文作为某些类型审核事件的属性。默认情况下值为false
所以body默认是不会打印。
重要:
请注意,在审核事件中包含请求主体时,可能会以明文形式审核敏感数据,即使所有安全API(如更改用户密码的API)在审核时都会过滤掉凭据。
本地节点信息配置
xpack.security.audit.logfile.emit_node_name
**动态配置;**指定在每一个安全审计事件中是否包含将节点名,默认为flase
xpack.security.audit.logfile.emit_node_host_address
**动态配置;**指定在每一个安全审计事件中是否包含节点ip地址,默认为flase
xpack.security.audit.logfile.emit_node_host_name
**动态配置;**指定在每一个安全审计事件中是否包含节点主机地址,默认为flase
xpack.security.audit.logfile.emit_node_id
**动态配置;**指定在每一个安全审计事件中是否包含将节点id,不同于节点名,如果管理员更改配置文件中的设置,其值可能会更改,则节点id将在集群重新启动时保持不变,管理员无法更改它。默认值是true
审核日志文件事件忽略策略编辑
以下设置会影响忽略策略,这些策略会细粒度的控制哪些审计事件输出到哪些文件中。具有相同策略名的配置组合成一个策略。如果一个事件符合任意一个策略的所有条件,那么这个事件将会被忽略。大多数的审计事件都受到忽略策略约束。唯一的例外是security_config_change类型的事件,除非完全排除,否则无法将其过滤掉。
xpack.security.audit.logfile.events.ignore_filters.<policy_name>.users
动态配置; 一个通配符或者用户名列表。指定策略当用户名的值匹配到后将不会打印。
xpack.security.audit.logfile.events.ignore_filters.<policy_name>.realms
动态配置; 一个身份验证域名或者通配符列表。指定策略当身份验证域名的值匹配到后将不会打印。
xpack.security.audit.logfile.events.ignore_filters.<policy_name>.actions
动态配置; 一个动作名称或者通配符列表。可以在审核事件的操作字段中找到操作名称。指定策略当动作名称的值匹配到后将不会打印。
xpack.security.audit.logfile.events.ignore_filters.<policy_name>.roles
动态配置; 一个角色的名称或者通配符列表。指定策略当角色名称的值匹配到后将不会打印。如果用户有多个角色,其中的一些角色不在列表中,那么这个策略将不会覆盖这个事件。
xpack.security.audit.logfile.events.ignore_filters.<policy_name>.indices
动态配置; 一个索引名或者通配符。指定策略当一个事件的所有索引都包含在列表中,那么将不会打印审计日志。如果一个事件相关的部分索引被包含在列表中那么这个策略将不会覆盖这个事件。