在 你居然還去服務(wù)器上撈日志,搭個(gè)日志收集系統(tǒng)難道不香么 一文中我們介紹過ELK日志收集系統(tǒng)的搭建镀首,由于我們的Kibana沒有任何安全保護(hù)機(jī)制坟漱,如果部署到公網(wǎng)上去的話,任何人都可以查看你的日志了更哄。日志暴露在網(wǎng)絡(luò)上可不是件好事情芋齿,今天教大家如何給Kibana設(shè)置登錄認(rèn)證來保護(hù)它
實(shí)現(xiàn)原理
由于Kibana的日志信息都存儲(chǔ)在Elasticsearch中,所以只要給Elasticsearch開啟X-PACK中的安全功能成翩,并給預(yù)置的賬號(hào)設(shè)置好密碼即可觅捆。Elasticsearch設(shè)置好之后,就可以在Kibana中對(duì)用戶捕传、角色惠拭、權(quán)限進(jìn)行管理了,本文使用的ELK組件版本均為7.6.2。
Elasticsearch設(shè)置密碼
- 修改Elasticsearch的配置文件并開啟X-PACK中的安全功能职辅,該配置文件在安裝目錄的config文件夾下面棒呛,例如elasticsearch-7.6.2\config\elasticsearch.yml;
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
- 啟動(dòng)Elasticsearch服務(wù)域携,啟動(dòng)命令在bin目錄下簇秒,例如elasticsearch-7.6.2\bin\elasticsearch.bat;
-
在bin目錄下使用如下命令elasticsearch-setup-passwords interactive修改預(yù)置賬號(hào)的密碼秀鞭,期間需要設(shè)置多個(gè)賬號(hào)密碼趋观,我都設(shè)置成了123456;
- 期間設(shè)置了好幾個(gè)賬號(hào)锋边,我們先來了解下這些賬號(hào)都有啥作用吧皱坛;
elastic:超級(jí)管理員賬號(hào)
kibana:Kibana訪問專用賬號(hào)logstash_system:Logstash訪問專用賬號(hào)
beats_system:FileBeat訪問專用賬號(hào)apm_system:APM系統(tǒng)專用賬號(hào)
remote_monitoring_user:遠(yuǎn)程監(jiān)控賬號(hào)
- 接下來我們需要在Kibana的配置文件中添加可以訪問Elasticsearch的賬號(hào),該配置文件在安裝目錄的config文件夾下面豆巨,例如kibana-7.6.2\config\kibana.yml剩辟;
elasticsearch.username: "kibana"
elasticsearch.password: "123456"
- 啟動(dòng)Kibana服務(wù),啟動(dòng)命令在bin目錄下往扔,例如kibana-7.6.2\bin\kibana.bat贩猎;
- 當(dāng)Kibana啟動(dòng)完成后,我們?cè)L問的時(shí)就需要登錄認(rèn)證了萍膛,使用超級(jí)管理員賬號(hào)elastic:123456可以進(jìn)行登錄吭服,訪問地址:http://localhost:5601
- 登錄成功后蝗罗,在我們的Management選項(xiàng)中可以找到安全相關(guān)的配置艇棕,在此我們可以對(duì)用戶、角色串塑、權(quán)限進(jìn)行設(shè)置欠肾。
SpringBoot安全訪問
由于Elasticsearch開啟X-PACK中的安全功能拟赊,當(dāng)我們的SpringBoot應(yīng)用訪問Elasticsearch時(shí),也需要設(shè)置用戶名和密碼了粹淋!
- 我們可以直接在SpringBoot中設(shè)置超級(jí)管理員賬號(hào)吸祟,但這不是個(gè)好辦法,我們還是自己建個(gè)角色和賬號(hào)吧桃移!
- 首先在Kibana中創(chuàng)建一個(gè)應(yīng)用訪問專用的角色app_user屋匕;
- 創(chuàng)建一個(gè)用戶并配置好該角色借杰,賬號(hào)密碼為app:123456过吻;
- 修改SpringBoot應(yīng)用的配置文件application.yml,配置好賬號(hào)密碼即可正常訪問了纤虽!
spring:
elasticsearch:
rest:
uris: http://localhost:9200
username: app
password: 123456
Logstash安全訪問
由于Elasticsearch開啟X-PACK中的安全功能乳绕,向Elasticsearch輸出日志的Logstash也需要設(shè)置用戶名和密碼了!
- 首先修改我們?cè)瓉淼腖ogstash配置文件logstash.conf逼纸,在output節(jié)點(diǎn)下設(shè)置訪問Elasticsearch的用戶名和密碼洋措,直接使用我們創(chuàng)建的app:123456賬號(hào)即可;
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"
}}
- 使用指定配置文件啟動(dòng)Logstash服務(wù)杰刽,啟動(dòng)命令在bin目錄下菠发,例如logstash-7.6.2\bin\logstash.bat;
logstash -f logstash.conf
- 接下來在Kibana中就可以查看到應(yīng)用輸出的日志了贺嫂!