篇文件介紹了windows環境下安裝elasticsearch,連接:windows安裝elasticsearch,本節介紹es和kibana設置密碼,加強安全。
1.修改配置文件,本文以Elasticsearch 6.8為樣例,
修改elasticsearch-6.8.8\config\elasticsearch.yml,編輯打開添加
xpack.security.enabled: true
重新啟動elasticsearch,啟動成功后,訪問http://127.0.0.1:9200/
可以看到需要登錄了
2.打開命令窗口,進入到es的bin目錄,輸入
elasticsearch-setup-passwords interactive
依次對系統自帶的用戶設置密碼,
到此密碼設置ok,輸入用戶名和密碼登錄,成功登錄
3.由于es設置了密碼,kibana也需要登錄了
打開kibana.yml
在文件中添加
elasticsearch.username: "kibana"
elasticsearch.password: "你的密碼"
關閉重新啟動kibana,再次訪問http://127.0.01:5601/,輸入用戶名和密碼登錄
點擊Dev Tools菜單操作es
4.1新增索引,es6后類型只支持_doc,默認類型就是_doc,也不允許修改
1.新增索引
PUT myfirstindex
{
"settings":{
"number_of_shards":"3",#分片數
"number_of_replicas" : "1",#副本個數
"index.refresh_interval":"1s"#數據刷新間隔
}
}
2.設置別名:大廠生產中讀取es數據都是讀取es別名,方便無縫切換
---創建別名
POST /_aliases
{
"actions": [
{
"add": {
"index": "myfirstindex",
"alias": "myfirstindex_alias"
}
}
]
}
3.設置mapping: 對應關系型數據庫中的字段類型,es字段類型豐富這里不在贅述
PUT myfirstindex/_mapping/_doc
{
"properties" : {
"creaTime" : {
"type" : "date",
"format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"Name" : {
"type" : "text"
},
"age" : {
"type" : "long"
},
"live" : {
"type" : "boolean"
}
}
}
4.查看索引情況
GET myfirstindex
4.2新增數據
PUT myfirstindex/_doc/1
{
"Name":"tom",
"age":30,
"live":true,
"creaTime":"2019-07-01 09:45:58"
}
PUT myfirstindex/_doc/2
{
"Name":"lili",
"age":32,
"live":false,
"creaTime":"2021-06-01 09:45:58"
}
4.3查看數據
GET myfirstindex/_search
{
"query": {
"match_all": {}
}
}
響應結果
4.4修改數據把tom的年齡修改為50
POST myfirstindex/_doc/1/_update
{
"doc":{
"Name":50
}
}
查看結果
4.5刪除,刪除id為2的name為lili的數據
1.根據主鍵刪除
DELETE myfirstindex/_doc/1
2.根據查詢條件刪除
POST myfirstindex/_delete_by_query
{
"query": {
"match": {
"Name": "lili"
}
}
}
以上es簡單操作就到這里了
1.需要修改密碼的用戶包括如下4個:
elastic, kibana, logstash_system,beats_system
2.進入es安裝目錄,按順序修改以上用戶,命令如下:
elasticsearch-reset-password -u elastic -i
修改成功提示如下:
3.剩下用戶操作同上。
elasticsearch-reset-password -u kibana -i
elasticsearch-reset-password -u logstash_system -i
elasticsearch-reset-password -u beats_system -i
4.修改完成后在elasticsearch.yml中增加以下兩項設置:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
5.訪問http://ip:9200測試:
es配置文件elasticsearch.yml中增加如下設置:
#增加配置開啟跨域
http.cors.enabled: true
#增加配置允許任何域名訪問
http.cors.allow-origin: "*"
#增加設置密碼后的訪問配置
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
設置完成后重啟ES。
設置密碼后訪問請求需要帶上用戶名和密碼
http://IP:9100/?auth_user=用戶名&auth_password=密碼
通過elasticsearch-head 管理其他es,在連接的地址欄中輸入es地址,有密碼的帶上用戶、密碼參數。
Postman請求需要設置相應的用戶名、密碼認證,設置位置如下圖:
在前面的章節中我們講了開源架構ELK、騰訊云Elasticsearch產品系列。我們也知道了,在構建騰訊云ES集群的時候,我們選擇的6.8.2白金版具備充分的安全的機制來保證數據和訪問的安全。那么,它到底是如何實現的呢?我們今天就來簡單聊聊這個問題:
ElasticSearch的商業插件X-pack 在ES6.x版本以前一直都是收費,不對外免費開放的。在ES6以后陸續放開了一些功能,比如前面講到的Monitor集群監控功能。在ES6.8及以后版本ES又將部分安全性功能免費開放了,包含安全認證功能,之后版本又開放一些基礎認證功能,對于普通用戶來說是夠用的。這里要提一下的是kibana的登錄和權限是與ES緊密相關的,其實真正起作用的是Elasticsearch,因為kibana只是一個視圖頁面,真正工作的是Elasticsearch。現在我們就6.8版本的【基于角色的訪問控制】進行操作、驗證。步驟如下:
第一步:下載、安裝ES、Kibana 6.8.2 版本(此處省略,可參考本博客前面的教程)
第二步:修改ES配置文件 elasticsearch.yml 添加“ xpack.security.enabled: true”到配置文件,保存并退出
Xpack安全機制
基礎版本的安全性功能是默認關閉的。
然后啟動ES,注意需要用普通用戶啟動ES,注意一定要先啟動ES,才能進行后續安全設置
啟動ES
第三步:/bin/elasticsearch-setup-passwords interactive 啟用ES默認的內置用戶
安全設置用戶密碼
顯示下面的圖示:輸入“y”
下面的這些用戶都是ES默認的用戶,需要設置密碼,一定要記住,可以暫時設置相同的。后面可以改
ES默認用戶
第四步:設置kibana登錄的用戶名、密碼。在kibana.yml配置文件里進行修改
注意,這個用戶名和密碼一定跟ES剛剛設定的內置賬號密碼一樣。否則,Kibana啟動報錯!!
添加用戶名和密碼
第五步:啟動kibana
啟動kibana就可以使用用戶名與密碼進行訪問。如下截圖
kibana啟動
Kibana界面
登錄Kibana看看,就出現了安全訪問的登錄框。輸入在Kibana設定的內置用戶登錄即可.用戶必須使用有效的用戶ID和密碼登錄Kibana。
安全登錄界面
前面我們知道,登錄ES的安全賬號密碼都配置在Kibana的配置文件里,但是這樣,始終不安全,那么能不能屏蔽掉這些關鍵字眼呢??再來解決這個問題:
如果你不想將用戶ID和密碼放在kibana.yml文件中明文配置,可以將它們存儲在密鑰庫中。運行以下命令以創建Kibana密鑰庫并添加配置:
首先 先創建秘鑰庫: ./kibana-keystore create
其次:添加登錄用戶名: ./kibana-keystore add elasticsearch.username
輸入要添加的用戶名(密文)
再次:添加登錄用戶名的密碼: ./kibana-keystore add elasticsearch.password
輸入用戶名密碼(密文)
最后,驗證一下:使用剛剛新建賬號密碼、同時清除Kibana配置文件中原有的yml文件的用戶、密碼內容。重啟Kibana
Kibana登錄界面
使用Curl驗證一下“
Curl指令
用其他用戶是不行的:
驗證其它用戶
考慮一下:為什么這樣?因為盡管是默認用戶,但是沒有配置它在服務中使用,所以,它無效!!
本節從實際角度去部署了一下ES、Kibana的安全訪問功能。是一個非常實際可用的功能,建議大家多試試!