Elasticsearch 从8.0开始, 默认开启了SSL安全验证。因此我们需要为 Logstash 配置身份验证凭据才能建立与 Elasticsearch 集群的通信。
SSL安全通信
当一个新的 Elasticsearch 集群在
没有专用证书
的情况下启动时,它会在启动时生成自己的默认自签名证书颁发机构。Logstash 必须具有签署 Elasticsearch 集群证书的
证书颁发机构 (CA) 的副本
, 才能建立安全套接字层 (SSL) 连接到安全的 Elasticsearch 集群。
如果您在自己的硬件上运行 Elasticsearch 并使用 Elasticsearch 集群的默认自签名证书,则需要完成更多步骤以在 Logstash 和 Elasticsearch 之间建立安全通信。
从 Elasticsearch 复制自签名 CA 证书并将其保存到 Logstash。
配置 elasticsearch-output 插件以使用证书。
如果您的集群使用公共可信证书,则无需执行这些步骤。
复制ca证书 和 配置elasticsearch 插件
- 从 Elasticsearch 的
$Elasticsearch_HOME$/config/certs
目录下复制ca证书到 Logstash 的目录$Logstash_HOME$/config/certs
下 - 配置elasticsearch 插件
output { elasticsearch { index => "test1-index" hosts => [ "https://localhost:9200" ] cacert => "config/certs/http_ca.crt" user => "elastic" password => "${ES_PWD}" } }
为Logstash配置专用的角色和授权
-
创建
logstash_writer
角色
使用Kibana中的 Management > Roles UI方式 或 API方式 创建logstash_writer
角色。对于集群权限,添加manage_index_templates
和monitor
。对于索引权限,添加write
、create
和create_index
。POST _security/role/logstash_writer { "cluster": ["manage_index_templates", "monitor"], "indices": [ { "names": [ "logstash-*" ], "privileges": ["write","create","create_index"] } ] }
-
创建一个
logstash_internal
用户并为其分配logstash_writer
角色。
可以从Kibana 中的 Management > Users UI 或 通过API 创建用户。POST _security/user/logstash_internal { "password" : "x-pack-test-password", "roles" : [ "logstash_writer"], "full_name" : "Internal Logstash User" }