在 你竟然還去服務器上撈日誌,搭個日誌收集系統難道不香麼 一文中咱們介紹過ELK日誌收集系統的搭建,因爲咱們的Kibana沒有任何安全保護機制,若是部署到公網上去的話,任何人均可以查看你的日誌了。日誌暴露在網絡上可不是件好事情,今天教你們如何給Kibana設置登陸認證來保護它php
因爲Kibana的日誌信息都存儲在Elasticsearch中,因此只要給Elasticsearch開啓X-PACK中的安全功能,並給預置的帳號設置好密碼便可。Elasticsearch設置好以後,就能夠在Kibana中對用戶、角色、權限進行管理了,本文使用的ELK組件版本均爲7.6.2。css
修改Elasticsearch的配置文件並開啓X-PACK中的安全功能,該配置文件在安裝目錄的config文件夾下面,例如elasticsearch-7.6.2\config\elasticsearch.yml;spring
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
啓動Elasticsearch服務,啓動命令在bin目錄下,例如elasticsearch-7.6.2\bin\elasticsearch.bat;apache
在bin目錄下使用以下命令elasticsearch-setup-passwords interactive修改預置帳號的密碼,期間須要設置多個帳號密碼,我都設置成了123456;json
期間設置了好幾個帳號,咱們先來了解下這些帳號都有啥做用吧;安全
elastic:超級管理員帳號
kibana:Kibana訪問專用帳號
logstash_system:Logstash訪問專用帳號
beats_system:FileBeat訪問專用帳號
apm_system:APM系統專用帳號
remote_monitoring_user:遠程監控帳號
接下來咱們須要在Kibana的配置文件中添加能夠訪問Elasticsearch的帳號,該配置文件在安裝目錄的config文件夾下面,例如kibana-7.6.2\config\kibana.yml;服務器
elasticsearch.username: "kibana"
elasticsearch.password: "123456"
啓動Kibana服務,啓動命令在bin目錄下,例如kibana-7.6.2\bin\kibana.bat;網絡
當Kibana啓動完成後,咱們訪問的時就須要登陸認證了,使用超級管理員帳號elastic:123456能夠進行登陸,訪問地址:http://localhost:5601app
登陸成功後,在咱們的Management選項中能夠找到安全相關的配置,在此咱們能夠對用戶、角色、權限進行設置。cors
因爲Elasticsearch開啓X-PACK中的安全功能,當咱們的SpringBoot應用訪問Elasticsearch時,也須要設置用戶名和密碼了!
咱們能夠直接在SpringBoot中設置超級管理員帳號,但這不是個好辦法,咱們仍是本身建個角色和帳號吧!
首先在Kibana中建立一個應用訪問專用的角色app_user;
建立一個用戶並配置好該角色,帳號密碼爲app:123456;
修改SpringBoot應用的配置文件application.yml,配置好帳號密碼便可正常訪問了!
spring:
elasticsearch:
rest:
uris: http://localhost:9200
username: app
password: 123456
因爲Elasticsearch開啓X-PACK中的安全功能,向Elasticsearch輸出日誌的Logstash也須要設置用戶名和密碼了!
首先修改咱們原來的Logstash配置文件logstash.conf,在output節點下設置訪問Elasticsearch的用戶名和密碼,直接使用咱們建立的app:123456帳號便可;
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
type => "debug"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4561
codec => json_lines
type => "error"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4562
codec => json_lines
type => "business"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4563
codec => json_lines
type => "record"
}
}
filter{
if [type] == "record" {
mutate {
remove_field => "port"
remove_field => "host"
remove_field => "@version"
}
json {
source => "message"
remove_field => ["message"]
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
action => "index"
codec => json
index => "mall-tiny-%{type}-%{+YYYY.MM.dd}"
template_name => "mall-tiny"
user => app
password => "123456"
}
}
使用指定配置文件啓動Logstash服務,啓動命令在bin目錄下,例如logstash-7.6.2\bin\logstash.bat;
logstash -f logstash.conf
接下來在Kibana中就能夠查看到應用輸出的日誌了!