Solr部署:审计日志
Solr具有记录进入系统的所有HTTP请求审计跟踪的能力。
审计记录器是可插拔的,以适应任何可能的格式或日志目标。
审计跟踪(也称为审计日志)是与安全相关的按时间顺序记录、记录集合和/或记录的目标和来源,它们提供了影响特定操作、过程、事件或设备的活动序列的书面证据。
——维基百科
配置审计日志
审计日志在security.json
中的auditlogging
键下配置。
下面的示例使用插件默认值配置同步审计日志到Solr的默认日志文件。
1 | { |
默认情况下,任何审计日志插件将在后台异步记录以避免减慢请求速度。
要使审计日志同步发生,请添加值为false
的async
参数。
使用异步日志时,您还可以选择配置队列大小、线程数量,以及队列满时是否阻塞或丢弃事件:
1 | { |
审计日志参数
这些参数是:
class:
必需,默认:无
审计日志插件类名。
要么是solr.SolrLogAuditLoggingPlugin
或solr.MultiDestinationAuditLogger
(在下面的《链接多个记录器》部分中描述)。
async:
可选,默认:true
定义事件是否异步记录。
这默认为true
以避免减慢请求速度。
但是,如果您对系统的性能特征有信心并需要同步记录事件,您可以将其更改为false
。
blockAsync:
可选,默认:false
定义如果队列满时请求是否应被阻塞。
默认值false
将丢弃未记录的事件。
仅在async=true
时使用。
numThreads:
可选,默认:2
审计日志可用的线程数。
如果服务器可用的CPU核心数高于4,则默认值修改为CPU核心数 / 2
。
仅在async=true
时使用。
queueSize:
可选,默认:4096
队列的大小。
仅在async=true
时使用。
eventTypes:
可选,默认:["REJECTED", "ANONYMOUS_REJECTED", "UNAUTHORIZED", "COMPLETED", "ERROR"]
要记录的事件类型。
有关类型选项,请参见下面的《事件类型》部分。
muteRules:
可选,默认:无
定义何时不应记录事件(静音)的情况。
可能的规则可以排除来自某些用户、IP、路径或请求参数的请求。
有关静音规则选项,请参见下面的《静音某些事件》部分。
事件类型
可以使用eventTypes
参数配置记录的事件类型。
默认情况下,只记录最终事件类型REJECTED
、ANONYMOUS_REJECTED
、UNAUTHORIZED
、COMPLETED
和ERROR
。
这些是框架触发的事件类型:
事件类型 | 用法 |
---|---|
AUTHENTICATED |
用户成功认证 |
REJECTED |
认证请求被拒绝 |
ANONYMOUS |
请求以未知用户身份继续 |
ANONYMOUS_REJECTED |
来自未知用户的请求被拒绝 |
AUTHORIZED |
授权成功 |
UNAUTHORIZED |
授权失败 |
COMPLETED |
请求成功完成 |
ERROR |
请求由于错误未执行 |
静音某些事件
配置参数muteRules
允许您为某些事件静音日志。
您可以指定多个规则和将导致静音的规则组合。
您可以按请求类型、用户名、集合名、路径、请求参数或IP地址静音。
以下示例使用muteRules
为三类请求静音审计日志:任何SEARCH
请求、用户johndoe
发出的任何请求,以及来自IP地址192.168.0.10
的任何请求:
1 | { |
静音规则也可以是列表,在这种情况下,列表中的所有项目都必须为真才能发生静音。
下面的配置有三个静音规则:
1 | { |
- 这将静音来自客户端IP
192.168.0.10
的所有事件。 - 此规则将静音带有
action=LIST
的集合API请求。 - 最后的规则将静音名为
test
的集合的集合API请求。
注意您如何可以混合单字符串规则与必须全部匹配的规则列表:
静音规则的选项是:
type:<request-type>
:按名称的请求类型:ADMIN
、SEARCH
、UPDATE
、STREAMING
或UNKNOWN
。collection:<collection-name>
:按名称的集合。user:<userid>
:按用户ID的用户。path:</path/to/handler>
:相对于/solr
的请求路径或对于搜索或更新请求相对于集合。
路径是前缀匹配的,即/admin
也将静音任何子路径。ip:<ip-address>
:IPv4地址。param:<param>=<value>
:请求参数。
这很可能主要与path
规则结合使用,如上面的示例所示。
链接多个记录器
使用MultiDestinationAuditLogger
可以在链中配置多个审计记录器插件以记录到多个目标。
1 | { |
注意记录到替代目标需要使用自定义审计日志插件定义。
有关基类的javadocs,请参见AuditLoggerPlugin。
指标
审计日志插件记录关于日志请求计数和时间的指标,以及异步记录器的队列大小。
指标键都记录在SECURITY
类别上,每个指标名称都以/auditlogging
和记录器的类名(例如SolrLogAuditLoggerPlugin
)的作用域为前缀。
各个指标是:
count
:(计量器)记录写入的审计日志数量和速率。errors
:(计量器)记录错误数量和速率。lost
:(计量器)如果队列满且blockAsync=false
,记录丢失事件的数量和速率。requestTimes
:(计时器)记录审计日志性能的延迟和百分位数。totalTime
:(计数器)记录日志记录花费的总时间。queueCapacity
:(计量)记录异步日志队列的最大大小。queueSize
:(计量)记录当前在队列中等待的事件数。queuedTime
:(计时器)记录事件在队列中等待的时间。
将此与requestTimes
指标相加将显示从事件到日志完成的总时间。async
:(计量)告知此记录器是否处于异步模式。
提示: 如果您遇到非常高的请求速率并有缓慢的审计记录器插件,您可能会看到queueSize
和queuedTime
指标增加,并可能开始丢弃事件(通过lost
计数增加显示)。
在这种情况下,您可能希望增加numThreads
设置。