一、Elasticsearch安全審計簡介
審計日志(Audit Logging)用于記錄Elasticsearch中的安全相關事件,包括認證失敗、連接拒絕、數據訪問事件以及通過API對安全配置(如用戶、角色、API密鑰)的變更記錄。
注意:審計日志功能僅在特定訂閱級別提供。
二、啟用審計日志
在所有集群節點的elasticsearch.yml
配置文件中啟用審計:
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_denied
、run_as_granted
(以他人身份執行的權限事件)security_config_change
(安全配置變更)
配置示例:
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.events.include": ["access_denied","authentication_failed","security_config_change"]}
}
使用_all
記錄全部事件(不推薦,會產生大量日志)。
3.2 排除指定事件(動態配置)
排除事件示例:
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.events.exclude": ["connection_denied"]}
}
3.3 是否記錄完整請求體(動態配置)
記錄REST請求完整請求體(如搜索查詢),默認關閉:
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 |
配置示例:
PUT /_cluster/settings
{"persistent": {"xpack.security.audit.logfile.emit_node_host_address": true,"xpack.security.audit.logfile.emit_node_name": true}
}
五、事件忽略策略
Elasticsearch支持細粒度地定義審計事件的忽略策略。當事件滿足某一策略的所有條件時,該事件將不會被記錄。
示例(創建名為internal_users
的策略,忽略特定用戶的審計事件):
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審計日志功能,管理員能夠有效監控和審查安全相關事件,及時發現潛在風險,保障集群的安全運行。本文介紹的設置方法與最佳實踐,將幫助用戶在安全與性能之間找到適當平衡。