审计日志

审计日志让您可以跟踪对 UDB-SX 集群的访问,对于合规性目的或在安全漏洞发生后非常有用。您可以配置要记录的类别、日志消息的详细程度以及日志的存储位置。

审计日志默认处于禁用状态。要启用审计日志:

  1. 在每个节点的 udbsx.yml 中添加以下行(默认已添加):

    plugins.security.audit.type: internal_opensearch
    

    此设置将审计日志存储在当前集群上。有关其他存储选项,请参阅审计日志存储类型

  2. 重新启动每个节点。

完成此初始设置后,您可以使用 UDB-SX Dashboards 来管理审计日志类别和其他设置。在 UDB-SX Dashboards 中,选择 安全,然后选择 审计日志

另一种方法是在 audit.ymludbsx.yml 文件中指定审计日志的初始设置(具体使用哪个文件取决于设置——请参阅审计日志设置)。之后,您可以使用 Dashboards 或审计日志 API 来管理和更新设置。

跟踪的事件

审计日志记录事件有两种方式:HTTP 请求(REST)和传输层。下表描述了跟踪的事件以及是否在 REST 或传输层记录。

事件 在 REST 记录 在传输层记录 描述
FAILED_LOGIN 请求的凭据无法验证,很可能是因为用户不存在或密码错误。
AUTHENTICATED 用户成功通过身份验证。
MISSING_PRIVILEGES 用户没有发出请求所需的权限。
GRANTED_PRIVILEGES 用户向 UDB-SX 发出了成功请求。
SSL_EXCEPTION 尝试在没有有效 SSL/TLS 证书的情况下访问 UDB-SX。
udbsx_SECURITY_INDEX_ATTEMPT 尝试在没有所需权限或 TLS 管理员证书的情况下修改安全插件内部用户和权限索引。
BAD_HEADERS 尝试使用安全插件内部头信息伪造 UDB-SX 请求。

审计日志设置

以下默认日志设置适用于大多数用例。但是,您可以更改设置以节省存储空间或使信息适应您的确切需求。

audit.yml 中的设置

以下设置存储在 audit.yml 文件中。

排除类别

要排除类别,请在以下设置中列出它们:

plugins.security.audit.config.disabled_rest_categories: <disabled categories>
plugins.security.audit.config.disabled_transport_categories: <disabled categories>

例如:

plugins.security.audit.config.disabled_rest_categories: AUTHENTICATED, udbsx_SECURITY_INDEX_ATTEMPT
plugins.security.audit.config.disabled_transport_categories: GRANTED_PRIVILEGES

如果要记录所有类别的事件,请使用 NONE

plugins.security.audit.config.disabled_rest_categories: NONE
plugins.security.audit.config.disabled_transport_categories: NONE

禁用 REST 或传输层

默认情况下,安全插件在 REST 和传输层记录事件。您可以禁用其中一种类型:

plugins.security.audit.config.enable_rest: false
plugins.security.audit.config.enable_transport: false

禁用请求体日志记录

默认情况下,安全插件包含请求的正文(如果可用),适用于 REST 和传输层。如果您不需要请求体,可以禁用它:

plugins.security.audit.config.log_request_body: false

记录索引名称

默认情况下,安全插件记录请求影响的所有索引。因为索引名称可以是别名并包含通配符/日期模式,安全插件记录用户提交的索引名称和解析后的实际索引名称。

例如,如果您使用别名或通配符,审计事件可能如下所示:

audit_trace_indices: [
  "human*"
],
audit_trace_resolved_indices: [
  "humanresources"
]

您可以通过以下设置禁用此功能:

plugins.security.audit.config.resolve_indices: false

仅当 plugins.security.audit.config.log_request_body 也设置为 false 时,此功能才会被禁用。

配置批量请求处理

批量请求可以包含许多索引操作。默认情况下,安全插件仅记录单个批量请求,而不是每个单独的操作。

可以将安全插件配置为将每个索引操作记录为单独的事件:

plugins.security.audit.config.resolve_bulk_requests: true

此更改可能会在审计日志中创建大量事件,因此如果您经常使用 _bulk API,我们不建议启用此设置。

排除请求

您可以通过配置传输请求和/或 HTTP 请求路径(REST)的操作来排除某些请求被记录:

plugins.security.audit.config.ignore_requests: ["indices:data/read/*", "SearchRequest"]

排除用户

默认情况下,安全插件记录所有用户的事件,但排除内部的 UDB-SX Dashboards 服务器用户 kibanaserver。您可以排除其他用户:

plugins.security.audit.config.ignore_users:
  - kibanaserver
  - admin

如果要记录所有用户的请求,请使用 NONE

plugins.security.audit.config.ignore_users: NONE

排除头信息

您可以从日志中排除敏感头信息——例如,Authorization: 头:

plugins.security.audit.config.exclude_sensitive_headers: true

udbsx.yml 中的设置

以下设置均存储在 udbsx.yml 文件中。

配置审计日志索引名称

默认情况下,安全插件将审计事件存储在名为 auditlog-YYYY.MM.dd 的每日滚动索引中:

plugins.security.audit.config.index: myauditlogindex

在索引名称中使用日期模式来配置每日、每周或每月滚动索引:

plugins.security.audit.config.index: "'auditlog-'YYYY.MM.dd"

有关日期模式格式的参考,请参阅 Joda DateTimeFormat 文档

调整线程池

搜索插件异步记录事件,这可以最大程度地减少对集群的性能影响。该插件使用固定线程池来记录事件:

plugins.security.adit.config.threadpool.size: <integer>

默认设置为 10。将此值设置为 0 会禁用线程池,这意味着插件将同步记录事件。要设置每个线程的最大队列长度:

plugins.security.audit.config.threadpool.max_queue_len: 100000

禁用审计日志

要在启用后禁用审计日志,请从 udbsx.yml 中移除 plugins.security.audit.type: internal_opensearch 设置,或者在 UDB-SX Dashboards 安全 > 审计日志 中关闭 启用审计日志 复选框。

审计用户账户操作

要对安全索引的更改(例如角色映射的更改以及角色的创建或删除)启用审计日志记录,请在审计日志配置 config/udbsx-security/audit.ymlcompliance: 部分使用以下设置,如下例所示:

_meta:
  type: "audit"
  config_version: 2

config:
  # enable/disable audit logging
  enabled: true

  ...


  compliance:
    # enable/disable compliance
    enabled: true

    # Log updates to internal security changes
    internal_config: true

    # Log only metadata of the document for write events
    write_metadata_only: false

    # Log only diffs for document updates
    write_log_diffs: true

    # List of indices to watch for write events. Wildcard patterns are supported
    # write_watched_indices: ["twitter", "logs-*"]
    write_watched_indices: [".opendistro_security"]