审计日志
编辑审计日志编辑
审计日志是一项订阅功能,您可以启用该功能来跟踪与安全相关的事件,例如授权成功和失败。记录这些事件使您能够监控 Kibana 中的可疑活动,并在发生攻击时提供证据。
将 Kibana 审计日志与Elasticsearch 审计日志结合使用,以全面了解所有与安全相关的事件。Kibana 遵循 Elasticsearch 安全模型进行身份验证、数据索引授权以及由集群范围权限驱动的功能。有关在 Elasticsearch 中启用审计日志的更多信息,请参阅审计安全事件。
默认情况下,审计日志处于禁用状态。要启用此功能,您必须在kibana.yml
中将xpack.security.audit.enabled
设置为true
。
您可以选择使用审计日志记录设置配置审计日志位置、文件/滚动文件追加器和忽略过滤器。
审计事件编辑
请参阅可记录的事件表以用于审计目的。
每个事件都细分为类别、类型、操作和结果字段,以便于过滤、查询和聚合生成的日志。trace.id字段可用于关联源自同一请求的多个事件。
有关记录审计事件的字段表,请参阅审计架构。
为了确保即使在出现意外错误的情况下也能持久保存每个操作的记录,异步写入操作会在所有授权检查通过后立即记录,但在收到 Elasticsearch 的响应之前记录。有关潜在的写入错误,请参阅相应的 Elasticsearch 日志。
类别:身份验证编辑 |
||
操作 |
结果 |
描述 |
|
|
用户已成功登录。 |
|
登录尝试失败(例如,由于凭据无效)。 |
|
|
|
用户正在注销。 |
|
|
正在删除无效或过期的会话。 |
|
不适用 |
用户已确认访问协议。 |
操作 |
结果 |
描述 |
|
|
用户正在创建已保存的对象。 |
|
用户无权创建已保存的对象。 |
|
|
|
用户正在创建一个时间点,以便在查询已保存的对象时使用。 |
|
用户无权为提供的已保存对象类型创建时间点。 |
|
|
|
用户正在创建连接器。 |
|
用户无权创建连接器。 |
|
|
|
用户正在创建规则。 |
|
用户无权创建规则。 |
|
|
|
用户正在创建空间。 |
|
用户无权创建空间。 |
|
|
|
用户正在创建案例。 |
|
用户无权创建案例。 |
|
|
|
用户正在创建案例配置。 |
|
用户无权创建案例配置。 |
|
|
|
用户正在创建案例评论。 |
|
用户无权创建案例评论。 |
|
|
|
用户正在创建多个案例评论。 |
|
用户无权创建多个案例评论。 |
|
|
|
用户已创建案例评论。 |
|
|
用户已创建案例。 |
类型:更改编辑 |
||
操作 |
结果 |
描述 |
|
|
用户正在更新已保存的对象。 |
|
用户无权更新已保存的对象。 |
|
|
|
用户正在向其他空间添加和/或从其他空间删除已保存的对象。 |
|
用户无权向其他空间添加或从其他空间删除已保存的对象。 |
|
|
|
用户正在删除对已保存对象的引用。 |
|
用户无权删除对已保存对象的引用。 |
|
|
|
用户已访问对多空间已保存对象的引用。 |
|
用户无权访问对多空间已保存对象的引用。 |
|
|
|
用户正在更新连接器。 |
|
用户无权更新连接器。 |
|
|
|
用户正在更新规则。 |
|
用户无权更新规则。 |
|
|
|
用户正在更新规则的 API 密钥。 |
|
用户无权更新规则的 API 密钥。 |
|
|
|
用户正在启用规则。 |
|
用户无权启用规则。 |
|
|
|
用户正在禁用规则。 |
|
用户无权禁用规则。 |
|
|
|
用户正在静音规则。 |
|
用户无权静音规则。 |
|
|
|
用户正在取消静音规则。 |
|
用户无权取消静音规则。 |
|
|
|
用户正在静音警报。 |
|
用户无权静音警报。 |
|
|
|
用户正在取消静音警报。 |
|
用户无权取消静音警报。 |
|
|
|
用户正在更新空间。 |
|
用户无权更新空间。 |
|
|
|
用户正在更新警报。 |
|
用户无权更新警报。 |
|
|
|
用户正在暂停规则。 |
|
用户无权暂停规则。 |
|
|
|
用户正在取消暂停规则。 |
|
用户无权取消暂停规则。 |
|
|
|
用户正在更新案例。 |
|
用户无权更新案例。 |
|
|
|
用户正在将案例推送到外部服务。 |
|
用户无权将案例推送到外部服务。 |
|
|
|
用户正在更新案例配置。 |
|
用户无权更新案例配置。 |
|
|
|
用户正在更新案例评论。 |
|
用户无权更新案例评论。 |
|
|
|
用户已添加案例受让人。 |
|
|
用户已更新案例连接器。 |
|
|
用户已更新案例描述。 |
|
|
用户已更新案例设置。 |
|
|
用户已更新案例严重性。 |
|
|
用户已更新案例状态。 |
|
|
用户已将案例推送到外部服务。 |
|
|
用户已向案例添加标签。 |
|
|
用户已更新案例标题。 |
类型:删除编辑 |
||
操作 |
结果 |
描述 |
|
|
用户正在删除已保存的对象。 |
|
用户无权删除已保存的对象。 |
|
|
|
用户正在删除用于查询已保存对象的时间点。 |
|
用户无权删除时间点。 |
|
|
|
用户正在删除连接器。 |
|
用户无权删除连接器。 |
|
|
|
用户正在删除规则。 |
|
用户无权删除规则。 |
|
|
|
用户正在删除空间。 |
|
用户无权删除空间。 |
|
|
|
用户正在删除案例。 |
|
用户无权删除案例。 |
|
|
|
用户正在删除与案例关联的所有评论。 |
|
用户无权删除与案例关联的所有评论。 |
|
|
|
用户正在删除案例评论。 |
|
用户无权删除案例评论。 |
|
|
|
用户已删除案例受让人。 |
|
|
用户已删除案例评论。 |
|
|
用户已删除案例。 |
|
|
用户已从案例中删除标签。 |
类型:访问编辑 |
||
操作 |
结果 |
描述 |
|
|
用户已访问已保存的对象。 |
|
用户无权访问已保存的对象。 |
|
|
|
用户已访问已保存的对象。 |
|
用户无权访问已保存的对象。 |
|
|
|
用户已在搜索操作中访问了已保存的对象。 |
|
用户无权搜索已保存的对象。 |
|
|
|
用户已访问连接器。 |
|
用户无权访问连接器。 |
|
|
|
用户已在搜索操作中访问了连接器。 |
|
用户无权搜索连接器。 |
|
|
|
用户已访问规则。 |
|
用户无权访问规则。 |
|
|
|
用户已访问规则的执行日志。 |
|
用户无权访问规则的执行日志。 |
|
|
|
用户已在搜索操作中访问了规则。 |
|
用户无权搜索规则。 |
|
|
|
用户已访问空间。 |
|
用户无权访问空间。 |
|
|
|
用户已在搜索操作中访问了空间。 |
|
用户无权搜索空间。 |
|
|
|
用户已访问警报。 |
|
用户无权访问警报。 |
|
|
|
用户已在搜索操作中访问了警报。 |
|
用户无权访问警报。 |
|
|
|
用户已访问案例。 |
|
用户无权访问案例。 |
|
|
|
用户已访问多个案例。 |
|
用户无权访问多个案例。 |
|
|
|
用户已访问案例。 |
|
用户无权访问案例。 |
|
|
|
用户已在搜索操作中访问了案例。 |
|
用户无权搜索案例。 |
|
|
|
用户已访问案例。 |
|
用户无权访问案例。 |
|
|
|
用户已访问案例的指标。 |
|
用户无权访问案例的指标。 |
|
|
|
用户已访问案例指标。 |
|
用户无权访问案例指标。 |
|
|
|
用户已在搜索操作中访问了案例配置。 |
|
用户无权搜索案例配置。 |
|
|
|
用户已访问案例评论指标。 |
|
用户无权访问案例评论指标。 |
|
|
|
用户已访问案例警报。 |
|
用户无权访问案例警报。 |
|
|
|
用户已访问案例评论。 |
|
用户无权访问案例评论。 |
|
|
|
用户已访问多个案例评论。 |
|
用户无权访问多个案例评论。 |
|
|
|
用户已访问案例评论。 |
|
用户无权访问案例评论。 |
|
|
|
用户已在搜索操作中访问了案例评论。 |
|
用户无权搜索案例评论。 |
|
|
|
用户已访问案例。 |
|
用户无权访问案例。 |
|
|
|
用户已访问案例。 |
|
用户无权访问案例。 |
|
|
|
用户已访问案例。 |
|
用户无权访问案例。 |
|
|
|
用户已在搜索操作中访问了案例。 |
|
用户无权搜索案例。 |
|
|
|
用户已访问案例的用户活动。 |
|
用户无权访问案例的用户活动。 |
|
|
|
用户已在搜索操作中访问了案例的用户活动。 |
|
用户无权访问案例的用户活动。 |
|
|
|
用户已访问案例用户活动的指标。 |
|
用户无权访问案例用户活动的指标。 |
|
|
|
用户已访问与案例关联的用户。 |
|
用户无权访问与案例关联的用户。 |
|
|
|
用户已访问案例的连接器。 |
|
用户无权访问案例的连接器。 |
|
类别:Web编辑 |
||
操作 |
结果 |
描述 |
|
|
用户正在发出 HTTP 请求。 |
审计模式编辑
审计日志使用 Elastic 通用模式 (ECS) 规范以 JSON 格式编写。
基本字段编辑 |
|
字段 |
描述 |
|
生成事件的时间。 示例: |
|
事件的人类可读描述。 |
事件字段编辑 |
|
字段 |
描述 |
事件捕获的操作。 有关可能操作的表格,请参阅审计事件。 |
|
与事件关联的高级类别。 此字段与用作子类别的 可能的值: |
|
与事件关联的子类别。 此字段可以与 可能的值: |
|
表示事件是成功还是失败
可能的值: |
|
用户字段编辑 |
|
字段 |
描述 |
|
跨会话的用户唯一标识符(请参阅用户配置文件)。 |
|
用户的登录名。 示例: |
|
事件发生时的用户角色集。 示例: |
Kibana 字段编辑 |
|
字段 |
描述 |
|
与事件关联的空间的 ID。 示例: |
|
与事件关联的用户会话的 ID。 每次登录尝试都会生成唯一的会话 ID。 |
|
与事件关联的已保存对象的类型。 示例: |
|
与事件关联的已保存对象的 ID。 |
|
与事件关联的身份验证提供程序的名称。 示例: |
|
与事件关联的身份验证提供程序的类型。 示例: |
|
已对用户进行身份验证的 Elasticsearch 领域的名称。 示例: |
|
从中检索用户详细信息的 Elasticsearch 领域的名称。 示例: |
|
作为事件的一部分,已保存对象正在共享到的空间 ID 集。 示例: |
|
作为事件的一部分,已保存对象正在从中删除的空间 ID 集。 示例: |
错误字段编辑 |
|
字段 |
描述 |
|
描述错误的错误代码。 |
|
错误消息。 |
HTTP 和 URL 字段编辑 |
|
字段 |
描述 |
|
客户端 IP 地址。 |
|
HTTP 请求方法。 示例: |
|
用于在通过代理服务器连接时标识原始客户端 IP 地址的 示例: |
|
URL 的域名。 示例: |
|
请求的路径。 示例: |
|
请求的端口。 示例: |
|
查询字段描述请求的查询字符串。 示例: |
|
请求的方案。 示例: |
跟踪字段编辑 |
|
字段 |
描述 |
唯一标识符,允许将来自 Kibana 和 Elasticsearch 的同一事务的事件关联起来。 |
关联审计事件编辑
审计事件可以通过两种方式关联
- 可以将由同一请求产生的多个 Kibana 审计事件关联在一起。
- 如果启用了Elasticsearch 审计日志记录,则可以将来自一个请求的 Kibana 审计事件与创建 Elasticsearch 审计事件的后端调用关联起来。
以下示例已简化,为了清楚起见,省略了许多字段并缩短了值。
示例 1:关联多个 Kibana 审计事件编辑
当“thom”创建新的警报规则时,会写入五个审计事件
{"event":{"action":"http_request","category":["web"],"outcome":"unknown"},"http":{"request":{"method":"post"}},"url":{"domain":"localhost","path":"/api/alerting/rule","port":5601,"scheme":"https"},"user":{"name":"thom","roles":["superuser"]},"kibana":{"space_id":"default","session_id":"3dHCZRB..."},"@timestamp":"2022-01-25T13:05:34.449-05:00","message":"User is requesting [/api/alerting/rule] endpoint","trace":{"id":"e300e06..."}} {"event":{"action":"space_get","category":["database"],"type":["access"],"outcome":"success"},"kibana":{"space_id":"default","session_id":"3dHCZRB...","saved_object":{"type":"space","id":"default"}},"user":{"name":"thom","roles":["superuser"]},"@timestamp":"2022-01-25T13:05:34.454-05:00","message":"User has accessed space [id=default]","trace":{"id":"e300e06..."}} {"event":{"action":"connector_get","category":["database"],"type":["access"],"outcome":"success"},"kibana":{"space_id":"default","session_id":"3dHCZRB...","saved_object":{"type":"action","id":"5e3b1ae..."}},"user":{"name":"thom","roles":["superuser"]},"@timestamp":"2022-01-25T13:05:34.948-05:00","message":"User has accessed connector [id=5e3b1ae...]","trace":{"id":"e300e06..."}} {"event":{"action":"connector_get","category":["database"],"type":["access"],"outcome":"success"},"kibana":{"space_id":"default","session_id":"3dHCZRB...","saved_object":{"type":"action","id":"5e3b1ae..."}},"user":{"name":"thom","roles":["superuser"]},"@timestamp":"2022-01-25T13:05:34.956-05:00","message":"User has accessed connector [id=5e3b1ae...]","trace":{"id":"e300e06..."}} {"event":{"action":"rule_create","category":["database"],"type":["creation"],"outcome":"unknown"},"kibana":{"space_id":"default","session_id":"3dHCZRB...","saved_object":{"type":"alert","id":"64517c3..."}},"user":{"name":"thom","roles":["superuser"]},"@timestamp":"2022-01-25T13:05:34.956-05:00","message":"User is creating rule [id=64517c3...]","trace":{"id":"e300e06..."}}
所有这些审计事件都可以通过相同的 trace.id
值 "e300e06..."
关联在一起。第一个事件是 HTTP API 调用,接下来的审计事件是验证空间和连接器的检查,最后一个审计事件是实际的规则创建。
示例 2:将 Kibana 审计事件与 Elasticsearch 审计事件关联起来编辑
当“thom”登录时,会写入“user_login”Kibana 审计事件
{"event":{"action":"user_login","category":["authentication"],"outcome":"success"},"kibana":{"session_id":"ab93zdA..."},"user":{"name":"thom","roles":["superuser"]},"@timestamp":"2022-01-25T09:40:39.267-05:00","message":"User [thom] has logged in using basic provider [name=basic]","trace":{"id":"818cbf3..."}}
Kibana 审计事件中的 trace.id
值 "818cbf3..."
可以与这六个 Elasticsearch 审计事件中的 opaque_id
值关联起来
{"type":"audit", "timestamp":"2022-01-25T09:40:38,604-0500", "event.action":"access_granted", "user.name":"thom", "user.roles":["superuser"], "request.id":"YCx8wxs...", "action":"cluster:admin/xpack/security/user/authenticate", "request.name":"AuthenticateRequest", "opaque_id":"818cbf3..."} {"type":"audit", "timestamp":"2022-01-25T09:40:38,613-0500", "event.action":"access_granted", "user.name":"kibana_system", "user.roles":["kibana_system"], "request.id":"Ksx73Ad...", "action":"indices:data/write/index", "request.name":"IndexRequest", "indices":[".kibana_security_session_1"], "opaque_id":"818cbf3..."} {"type":"audit", "timestamp":"2022-01-25T09:40:38,613-0500", "event.action":"access_granted", "user.name":"kibana_system", "user.roles":["kibana_system"], "request.id":"Ksx73Ad...", "action":"indices:data/write/bulk", "request.name":"BulkRequest", "opaque_id":"818cbf3..."} {"type":"audit", "timestamp":"2022-01-25T09:40:38,613-0500", "event.action":"access_granted", "user.name":"kibana_system", "user.roles":["kibana_system"], "request.id":"Ksx73Ad...", "action":"indices:data/write/bulk[s]", "request.name":"BulkShardRequest", "indices":[".kibana_security_session_1"], "opaque_id":"818cbf3..."} {"type":"audit", "timestamp":"2022-01-25T09:40:38,613-0500", "event.action":"access_granted", "user.name":"kibana_system", "user.roles":["kibana_system"], "request.id":"Ksx73Ad...", "action":"indices:data/write/index:op_type/create", "request.name":"BulkItemRequest", "indices":[".kibana_security_session_1"], "opaque_id":"818cbf3..."} {"type":"audit", "timestamp":"2022-01-25T09:40:38,613-0500", "event.action":"access_granted", "user.name":"kibana_system", "user.roles":["kibana_system"], "request.id":"Ksx73Ad...", "action":"indices:data/write/bulk[s][p]", "request.name":"BulkShardRequest", "indices":[".kibana_security_session_1"], "opaque_id":"818cbf3..."}
Elasticsearch 审计事件显示“thom”已通过身份验证,然后“kibana_system”为该用户创建了一个会话。