审计日志编辑

审计日志是一项订阅功能,您可以启用该功能来跟踪与安全相关的事件,例如授权成功和失败。记录这些事件使您能够监控 Kibana 中的可疑活动,并在发生攻击时提供证据。

将 Kibana 审计日志与Elasticsearch 审计日志结合使用,以全面了解所有与安全相关的事件。Kibana 遵循 Elasticsearch 安全模型进行身份验证、数据索引授权以及由集群范围权限驱动的功能。有关在 Elasticsearch 中启用审计日志的更多信息,请参阅审计安全事件

默认情况下,审计日志处于禁用状态。要启用此功能,您必须在kibana.yml中将xpack.security.audit.enabled设置为true

您可以选择使用审计日志记录设置配置审计日志位置、文件/滚动文件追加器和忽略过滤器。

审计事件编辑

请参阅可记录的事件表以用于审计目的。

每个事件都细分为类别类型操作结果字段,以便于过滤、查询和聚合生成的日志。trace.id字段可用于关联源自同一请求的多个事件。

有关记录审计事件的字段表,请参阅审计架构

为了确保即使在出现意外错误的情况下也能持久保存每个操作的记录,异步写入操作会在所有授权检查通过后立即记录,但在收到 Elasticsearch 的响应之前记录。有关潜在的写入错误,请参阅相应的 Elasticsearch 日志。

类别:身份验证编辑

操作

结果

描述

user_login

成功

用户已成功登录。

失败

登录尝试失败(例如,由于凭据无效)。

user_logout

未知

用户正在注销。

session_cleanup

未知

正在删除无效或过期的会话。

access_agreement_acknowledged

不适用

用户已确认访问协议。

类别:数据库编辑

类型:创建编辑

操作

结果

描述

saved_object_create

未知

用户正在创建已保存的对象。

失败

用户无权创建已保存的对象。

saved_object_open_point_in_time

未知

用户正在创建一个时间点,以便在查询已保存的对象时使用。

失败

用户无权为提供的已保存对象类型创建时间点。

connector_create

未知

用户正在创建连接器。

失败

用户无权创建连接器。

rule_create

未知

用户正在创建规则。

失败

用户无权创建规则。

space_create

未知

用户正在创建空间。

失败

用户无权创建空间。

case_create

未知

用户正在创建案例。

失败

用户无权创建案例。

case_configuration_create

未知

用户正在创建案例配置。

失败

用户无权创建案例配置。

case_comment_create

未知

用户正在创建案例评论。

失败

用户无权创建案例评论。

case_comment_bulk_create

未知

用户正在创建多个案例评论。

失败

用户无权创建多个案例评论。

case_user_action_create_comment

成功

用户已创建案例评论。

case_user_action_create_case

成功

用户已创建案例。

类型:更改编辑

操作

结果

描述

saved_object_update

未知

用户正在更新已保存的对象。

失败

用户无权更新已保存的对象。

saved_object_update_objects_spaces

未知

用户正在向其他空间添加和/或从其他空间删除已保存的对象。

失败

用户无权向其他空间添加或从其他空间删除已保存的对象。

saved_object_remove_references

未知

用户正在删除对已保存对象的引用。

失败

用户无权删除对已保存对象的引用。

saved_object_collect_multinamespace_references

成功

用户已访问对多空间已保存对象的引用。

失败

用户无权访问对多空间已保存对象的引用。

connector_update

未知

用户正在更新连接器。

失败

用户无权更新连接器。

rule_update

未知

用户正在更新规则。

失败

用户无权更新规则。

rule_update_api_key

未知

用户正在更新规则的 API 密钥。

失败

用户无权更新规则的 API 密钥。

rule_enable

未知

用户正在启用规则。

失败

用户无权启用规则。

rule_disable

未知

用户正在禁用规则。

失败

用户无权禁用规则。

rule_mute

未知

用户正在静音规则。

失败

用户无权静音规则。

rule_unmute

未知

用户正在取消静音规则。

失败

用户无权取消静音规则。

rule_alert_mute

未知

用户正在静音警报。

失败

用户无权静音警报。

rule_alert_unmute

未知

用户正在取消静音警报。

失败

用户无权取消静音警报。

space_update

未知

用户正在更新空间。

失败

用户无权更新空间。

alert_update

未知

用户正在更新警报。

失败

用户无权更新警报。

rule_snooze

未知

用户正在暂停规则。

失败

用户无权暂停规则。

rule_unsnooze

未知

用户正在取消暂停规则。

失败

用户无权取消暂停规则。

case_update

未知

用户正在更新案例。

失败

用户无权更新案例。

case_push

未知

用户正在将案例推送到外部服务。

失败

用户无权将案例推送到外部服务。

case_configuration_update

未知

用户正在更新案例配置。

失败

用户无权更新案例配置。

case_comment_update

未知

用户正在更新案例评论。

失败

用户无权更新案例评论。

case_user_action_add_case_assignees

成功

用户已添加案例受让人。

case_user_action_update_case_connector

成功

用户已更新案例连接器。

case_user_action_update_case_description

成功

用户已更新案例描述。

case_user_action_update_case_settings

成功

用户已更新案例设置。

case_user_action_update_case_severity

成功

用户已更新案例严重性。

case_user_action_update_case_status

成功

用户已更新案例状态。

case_user_action_pushed_case

成功

用户已将案例推送到外部服务。

case_user_action_add_case_tags

成功

用户已向案例添加标签。

case_user_action_update_case_title

成功

用户已更新案例标题。

类型:删除编辑

操作

结果

描述

saved_object_delete

未知

用户正在删除已保存的对象。

失败

用户无权删除已保存的对象。

saved_object_close_point_in_time

未知

用户正在删除用于查询已保存对象的时间点。

失败

用户无权删除时间点。

connector_delete

未知

用户正在删除连接器。

失败

用户无权删除连接器。

rule_delete

未知

用户正在删除规则。

失败

用户无权删除规则。

space_delete

未知

用户正在删除空间。

失败

用户无权删除空间。

case_delete

未知

用户正在删除案例。

失败

用户无权删除案例。

case_comment_delete_all

未知

用户正在删除与案例关联的所有评论。

失败

用户无权删除与案例关联的所有评论。

case_comment_delete

未知

用户正在删除案例评论。

失败

用户无权删除案例评论。

case_user_action_delete_case_assignees

成功

用户已删除案例受让人。

case_user_action_delete_comment

成功

用户已删除案例评论。

case_user_action_delete_case

成功

用户已删除案例。

case_user_action_delete_case_tags

成功

用户已从案例中删除标签。

类型:访问编辑

操作

结果

描述

saved_object_get

成功

用户已访问已保存的对象。

失败

用户无权访问已保存的对象。

saved_object_resolve

成功

用户已访问已保存的对象。

失败

用户无权访问已保存的对象。

saved_object_find

成功

用户已在搜索操作中访问了已保存的对象。

失败

用户无权搜索已保存的对象。

connector_get

成功

用户已访问连接器。

失败

用户无权访问连接器。

connector_find

成功

用户已在搜索操作中访问了连接器。

失败

用户无权搜索连接器。

rule_get

成功

用户已访问规则。

失败

用户无权访问规则。

rule_get_execution_log

成功

用户已访问规则的执行日志。

失败

用户无权访问规则的执行日志。

rule_find

成功

用户已在搜索操作中访问了规则。

失败

用户无权搜索规则。

space_get

成功

用户已访问空间。

失败

用户无权访问空间。

space_find

成功

用户已在搜索操作中访问了空间。

失败

用户无权搜索空间。

alert_get

成功

用户已访问警报。

失败

用户无权访问警报。

alert_find

成功

用户已在搜索操作中访问了警报。

失败

用户无权访问警报。

case_get

成功

用户已访问案例。

失败

用户无权访问案例。

case_bulk_get

成功

用户已访问多个案例。

失败

用户无权访问多个案例。

case_resolve

成功

用户已访问案例。

失败

用户无权访问案例。

case_find

成功

用户已在搜索操作中访问了案例。

失败

用户无权搜索案例。

case_ids_by_alert_id_get

成功

用户已访问案例。

失败

用户无权访问案例。

case_get_metrics

成功

用户已访问案例的指标。

失败

用户无权访问案例的指标。

cases_get_metrics

成功

用户已访问案例指标。

失败

用户无权访问案例指标。

case_configuration_find

成功

用户已在搜索操作中访问了案例配置。

失败

用户无权搜索案例配置。

case_comment_get_metrics

成功

用户已访问案例评论指标。

失败

用户无权访问案例评论指标。

case_comment_alerts_attach_to_case

成功

用户已访问案例警报。

失败

用户无权访问案例警报。

case_comment_get

成功

用户已访问案例评论。

失败

用户无权访问案例评论。

case_comment_bulk_get

成功

用户已访问多个案例评论。

失败

用户无权访问多个案例评论。

case_comment_get_all

成功

用户已访问案例评论。

失败

用户无权访问案例评论。

case_comment_find

成功

用户已在搜索操作中访问了案例评论。

失败

用户无权搜索案例评论。

case_categories_get

成功

用户已访问案例。

失败

用户无权访问案例。

case_tags_get

成功

用户已访问案例。

失败

用户无权访问案例。

case_reporters_get

成功

用户已访问案例。

失败

用户无权访问案例。

case_find_statuses

成功

用户已在搜索操作中访问了案例。

失败

用户无权搜索案例。

case_user_actions_get

成功

用户已访问案例的用户活动。

失败

用户无权访问案例的用户活动。

case_user_actions_find

成功

用户已在搜索操作中访问了案例的用户活动。

失败

用户无权访问案例的用户活动。

case_user_action_get_metrics

成功

用户已访问案例用户活动的指标。

失败

用户无权访问案例用户活动的指标。

case_user_action_get_users

成功

用户已访问与案例关联的用户。

失败

用户无权访问与案例关联的用户。

case_connectors_get

成功

用户已访问案例的连接器。

失败

用户无权访问案例的连接器。

类别:Web编辑

操作

结果

描述

http_request

未知

用户正在发出 HTTP 请求。

审计模式编辑

审计日志使用 Elastic 通用模式 (ECS) 规范以 JSON 格式编写。

基本字段编辑

字段

描述

@timestamp

生成事件的时间。

示例:2016-05-23T08:05:34.853Z

message

事件的人类可读描述。

事件字段编辑

字段

描述

event.action

事件捕获的操作。

有关可能操作的表格,请参阅审计事件

event.category

与事件关联的高级类别。

此字段与用作子类别的 event.type 密切相关。

可能的值:databasewebauthentication

event.type

与事件关联的子类别。

此字段可以与 event.category 字段一起使用,以将事件过滤到适合单个可视化的级别。

可能的值:creationaccesschangedeletion

event.outcome

表示事件是成功还是失败

  • 用户无权执行的任何操作都将记录为 outcome: failure
  • 授权的读取操作仅在从 Elasticsearch 成功获取数据后记录,outcome 为:success
  • 授权的创建、更新或删除操作在尝试在 Elasticsearch 中执行操作之前记录,outcome 为:unknown

可能的值:successfailureunknown

用户字段编辑

字段

描述

user.id

跨会话的用户唯一标识符(请参阅用户配置文件)。

user.name

用户的登录名。

示例:jdoe

user.roles[]

事件发生时的用户角色集。

示例:[kibana_admin, reporting_user]

Kibana 字段编辑

字段

描述

kibana.space_id

与事件关联的空间的 ID。

示例:default

kibana.session_id

与事件关联的用户会话的 ID。

每次登录尝试都会生成唯一的会话 ID。

kibana.saved_object.type

与事件关联的已保存对象的类型。

示例:dashboard

kibana.saved_object.id

与事件关联的已保存对象的 ID。

kibana.authentication_provider

与事件关联的身份验证提供程序的名称。

示例:my-saml-provider

kibana.authentication_type

与事件关联的身份验证提供程序的类型。

示例:saml

kibana.authentication_realm

已对用户进行身份验证的 Elasticsearch 领域的名称。

示例:native

kibana.lookup_realm

从中检索用户详细信息的 Elasticsearch 领域的名称。

示例:native

kibana.add_to_spaces[]

作为事件的一部分,已保存对象正在共享到的空间 ID 集。

示例:[default, marketing]

kibana.delete_from_spaces[]

作为事件的一部分,已保存对象正在从中删除的空间 ID 集。

示例:[marketing]

错误字段编辑

字段

描述

error.code

描述错误的错误代码。

error.message

错误消息。

HTTP 和 URL 字段编辑

字段

描述

client.ip

客户端 IP 地址。

http.request.method

HTTP 请求方法。

示例:getpostputdelete

http.request.headers.x-forwarded-for

用于在通过代理服务器连接时标识原始客户端 IP 地址的 X-Forwarded-For 请求标头。

示例:161.66.20.177, 236.198.214.101

url.domain

URL 的域名。

示例:www.elastic.co

url.path

请求的路径。

示例:/search

url.port

请求的端口。

示例:443

url.query

查询字段描述请求的查询字符串。

示例:q=elasticsearch

url.scheme

请求的方案。

示例:https

跟踪字段编辑

字段

描述

trace.id

唯一标识符,允许将来自 Kibana 和 Elasticsearch 的同一事务的事件关联起来。

关联审计事件编辑

审计事件可以通过两种方式关联

  1. 可以将由同一请求产生的多个 Kibana 审计事件关联在一起。
  2. 如果启用了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”为该用户创建了一个会话。