基於open_distro的ES用戶管理(認證)
背景
open distro for elasticsearch 是由亞馬遜AWS支持的基於Apache License,Version 2.0協議的100%開源的Elasticsearch發行版。與Elastic公司官方的Elasticsearch版本最大的區別是:剔除了基於elastic協議發布的xpack插件,增加了開源插件。新增插件功能包括安全、告警、索引生命周期管理、性能分析、SQL等企業級功能。簡單理解就是集成了開源版xpack插件的elasticsearch。
用戶認證
和xpack一樣open distro也提供了security插件,實現加密通信、用戶登陸認證、操作授權、文檔和字段級別訪問控制、日志審計等企業級安全功能。opendisro_security插件也支持有internaldatabase、Active Directory, LDAP,OpenID Connect 等多種后台認證服務組成的認證鏈。默認采用internaldatabase方式實現用戶管理,內部的用戶數據、權限數據、角色數據存儲在ES集群的.opendistro_security
索引中,和xpack的native realms 類似。系統默認初始化的用戶有:
- admin 超級管理員
- readall 只讀帳號
- logstash logstash連接es時的后台帳號
- kibanaserver kibana連接es時的后台帳號
- kibanaro kibana只讀帳號,不能修改kibana可視化面板
- snapshotrestore 快照備份恢復帳號
用戶管理的方式
opendisro_security插件默認支持三種用戶管理方式:配置文件、kibana圖形化界面、API命令
-
配置文件
-
應用場景:適合Elasticsearch安裝后初始化用戶數據,不適合后續業務管理。
-
操作方法:
-
第一步,在ES_HOME/plugins/opendistro_security/securityconfig/中編輯internal_users.yml、roles_maping.yml、roles.yml 文件中的用戶、角色和權限數據
-
第二步,啟動Elasticsearch服務
-
第三步,運行plugins/opendistro_security/tools/securityadmin.sh 腳本將數據更新到
.opendistro_security
索引中
-
-
-
kibana圖形化界面
- 應用場景: 適合生產環境運維人員做人員管理
- 操作方法:
- 第一步, 安裝並啟動opendistrroforelasticsearch-kibana 版本的kibana
- 第二步, 在 security 模塊添加用戶和角色
-
API 命令
- 應用場景: 以上兩種方式做用戶管理時,不方便項目管理,不能用git等版本管理追蹤到項目的全量和增量腳本,API 方式很好的彌補了這個問題.
常用的用戶管理API
-
查看用戶
GET _opendistro/_security/api/internalusers
-
新建用戶
PUT _opendistro/_security/api/internalusers/wangzhen { "password":"6789@jkl", "backend_roles":[], "attributes":{ "age":18 } } #響應 { "status" : "CREATED", "message" : "'wangzhen' created." }
-
修改用戶
官方推薦的PATCH 方法修改用戶並不能成功,並報錯
PATCH _opendistro/_security/api/internalusers/wangzhen { "op":"replace", "path":"/backend_roles", "value":["admin"] }
應該使用和新建用戶一樣的方法,且可以更新密碼:
PUT _opendistro/_security/api/internalusers/wangzhen { "password":"6789@jkl", "backend_roles":["admin"], "attributes":{ "age":18 } } #響應 { "status" : "OK", "message" : "'wangzhen' updated." }
-
刪除用戶
DELETE /_opendistro/_security/api/internalusers/wangzhen #響應 { "status" : "OK", "message" : "'wangzhen' deleted." }