Elasticsearch安全审计日志设置与最佳实践

一、Elasticsearch安全审计简介

审计日志(Audit Logging)用于记录Elasticsearch中的安全相关事件,包括认证失败、连接拒绝、数据访问事件以及通过API对安全配置(如用户、角色、API密钥)的变更记录。

注意:审计日志功能仅在特定订阅级别提供。

二、启用审计日志

在所有集群节点的elasticsearch.yml配置文件中启用审计:

yaml 复制代码
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_deniedrun_as_granted(以他人身份执行的权限事件)
  • security_config_change(安全配置变更)

配置示例:

json 复制代码
PUT /_cluster/settings
{
  "persistent": {
    "xpack.security.audit.logfile.events.include": [
      "access_denied",
      "authentication_failed",
      "security_config_change"
    ]
  }
}

使用_all记录全部事件(不推荐,会产生大量日志)。

3.2 排除指定事件(动态配置)

排除事件示例:

json 复制代码
PUT /_cluster/settings
{
  "persistent": {
    "xpack.security.audit.logfile.events.exclude": ["connection_denied"]
  }
}

3.3 是否记录完整请求体(动态配置)

记录REST请求完整请求体(如搜索查询),默认关闭:

json 复制代码
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

配置示例:

json 复制代码
PUT /_cluster/settings
{
  "persistent": {
    "xpack.security.audit.logfile.emit_node_host_address": true,
    "xpack.security.audit.logfile.emit_node_name": true
  }
}

五、事件忽略策略

Elasticsearch支持细粒度地定义审计事件的忽略策略。当事件满足某一策略的所有条件时,该事件将不会被记录。

示例(创建名为internal_users的策略,忽略特定用户的审计事件):

json 复制代码
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审计日志功能,管理员能够有效监控和审查安全相关事件,及时发现潜在风险,保障集群的安全运行。本文介绍的设置方法与最佳实践,将帮助用户在安全与性能之间找到适当平衡。

相关推荐
行思理3 小时前
linux 安全与防护,全方向讲解
linux·安全·github
深盾安全3 小时前
Flutter框架编译Android程序全攻略:从入门到进阶
安全
房屋安全鉴定检测4 小时前
房屋安全鉴定报告有效期多久
安全·网络安全
心 一4 小时前
Web安全基石:深入理解与防御SQL注入漏洞
sql·安全·web安全
赵孝正4 小时前
GitLab 分支管理与 Push 问题全解析
大数据·elasticsearch·gitlab
房屋安全鉴定检测5 小时前
房屋安全鉴定需要什么条件
安全·网络安全
wanhengidc6 小时前
什么是云手机?
运维·网络·安全·游戏·智能手机
一刀到底2116 小时前
springboot3.3.5 集成elasticsearch8.12.2 ssl 通过 SSL bundle name 来实现
网络·elasticsearch·ssl·springboot3
Elasticsearch6 小时前
Elasticsearch:智能搜索的 MCP
elasticsearch
FLS1687 小时前
Kali搭建sqli-labs靶场
linux·sql·安全·网络安全