xpack對權限的管理包含兩個主要的概念,用戶和角色。角色可以限定具體的權限,包括讀、寫、管理等,
可以限定到index或具體字段級別。用戶則可以擁有一個或多個角色信息。有了這兩個概念就使得權限的管理非常明確清晰。
權限管理主要有兩種方式:
1.kibana mangement管理界面進行角色和用戶的管理操作
2.通過RESTful API的方式進行用戶管理
推薦使用第一種,直觀方便,但是需要收費。
###########################################################################################
下面是使用ESTful API的方式進行用戶管理的demo及相關信息:
權限控制流程:
1.創建角色
POST /_xpack/security/role/my_admin_role { "cluster": ["all"], "indices": [ { "names": [ "index1", "index2" ], "privileges": ["all"], "field_security" : { "grant" : [ "title", "body" ] }, "query": "{\"match\": {\"title\": \"foo\"}}" // optional } ], "run_as": [ "other_user" ], // optional "metadata" : { "version" : 1 } }
request body
cluster:集群級別操作權限的列表
indices:索引權限列表
field_security:字段權限
names (required):賦予權限的索引名稱
privileges(required):索引級別的權限
query:查詢規則限定
metadata:暫時不了解其作用
run_as:允許已認證的用戶代表其他用戶執行操作
刪除角色
DELETE /_xpack/security/role/my_admin_role
api官網地址
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/security-api-roles.html
2.添加用戶
POST /_xpack/security/user/jacknich { "password" : "j@rV1s", "roles" : [ "admin", "other_role1" ], "full_name" : "Jack Nicholson", "email" : "jacknich@example.com", "metadata" : { "intelligence" : 7 } }
request body
enabled:用戶是否有效
email:email地址
full_name:全稱
metadata:要與用戶關聯的任意元數據
password (required):密碼
roles (required):角色
修改密碼
PUT /_xpack/security/user/jacknich/_password { "password" : "s3cr3t" }
用戶管理api
GET /_xpack/security/user GET /_xpack/security/user/<username> DELETE /_xpack/security/user/<username> POST /_xpack/security/user/<username> PUT /_xpack/security/user/<username> PUT /_xpack/security/user/<username>/_disable PUT /_xpack/security/user/<username>/_enable PUT /_xpack/security/user/<username>/_password
api官網地址
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/security-api-users.html
角色管理api
GET /_xpack/security/role GET /_xpack/security/role/<name> POST /_xpack/security/role/<name>/_clear_cache POST /_xpack/security/role/<name> PUT /_xpack/security/role/<name> DELETE /_xpack/security/role/<name>
創建角色
POST /_xpack/security/role/my_admin_role { "cluster": ["all"], "indices": [ { "names": [ "index1", "index2" ], "privileges": ["all"], "field_security" : { // optional "grant" : [ "title", "body" ] }, "query": "{\"match\": {\"title\": \"foo\"}}" // optional } ], "run_as": [ "other_user" ], // optional "metadata" : { // optional "version" : 1 } }
#################################################################
其他相關信息
內置賬號
username role 權限
elastic superuser 內置的超級用戶
kibana kibana_system 用戶kibana用來連接elasticsearch並與之通信。Kibana服務器以該用戶身份提交請求以訪問集群監視API和 .kibana索引。不能訪問index。
logstash_system logstash_system 用戶Logstash在Elasticsearch中存儲監控信息時使用
Security-Roles權限
ingest_admin 授予訪問權限以管理所有索引模板和所有攝取管道配置。這個角色不能提供創建索引的能力; 這些特權必須在一個單獨的角色中定義。 kibana_dashboard_only_user 授予對Kibana儀表板的訪問權限以及對.kibana索引的只讀權限。 這個角色無法訪問Kibana中的編輯工具。 kibana_system 授予Kibana系統用戶讀取和寫入Kibana索引所需的訪問權限,管理索引模板並檢查Elasticsearch集群的可用性。 此角色授予對.monitoring- 索引的讀取訪問權限以及對.reporting- 索引的讀取和寫入訪問權限。 kibana_user 授予Kibana用戶所需的最低權限。 此角色授予訪問集群的Kibana索引和授予監視權限。 logstash_admin 授予訪問用於管理配置的.logstash *索引的權限。 logstash_system 授予Logstash系統用戶所需的訪問權限,以將系統級別的數據(如監視)發送給Elasticsearch。不應將此角色分配給用戶,因為授予的權限可能會在不同版本之間發生變化。此角色不提供對logstash索引的訪問權限,不適合在Logstash管道中使用。 machine_learning_admin 授予manage_ml群集權限並讀取.ml- *索引的訪問權限。 machine_learning_user 授予查看X-Pack機器學習配置,狀態和結果所需的最低權限。此角色授予monitor_ml集群特權,並可以讀取.ml-notifications和.ml-anomalies *索引,以存儲機器學習結果 monitoring_user 授予除使用Kibana所需的X-Pack監視用戶以外的任何用戶所需的最低權限。 這個角色允許訪問監控指標。 監控用戶也應該分配kibana_user角色 remote_monitoring_agent 授予遠程監視代理程序將數據寫入此群集所需的最低權限 reporting_user 授予使用Kibana所需的X-Pack報告用戶所需的特定權限。 這個角色允許訪問報告指數。 還應該為報告用戶分配kibana_user角色和一個授予他們訪問將用於生成報告的數據的角色。 superuser #授予對群集的完全訪問權限,包括所有索引和數據。 具有超級用戶角色的用戶還可以管理用戶和角色,並模擬系統中的任何其他用戶。 由於此角色的寬容性質,在將其分配給用戶時要格外小心 transport_client 通過Java傳輸客戶端授予訪問集群所需的權限。 Java傳輸客戶端使用節點活性API和群集狀態API(當啟用嗅探時)獲取有關群集中節點的信息。 如果他們使用傳輸客戶端,請為您的用戶分配此角色。使用傳輸客戶端有效地意味着用戶被授予訪問群集狀態的權限。這意味着用戶可以查看所有索引,索引模板,映射,節點以及集群基本所有內容的元數據。但是,此角色不授予查看所有索引中的數據的權限 watcher_admin 授予對.watches索引的寫入權限,讀取對監視歷史記錄的訪問權限和觸發的監視索引,並允許執行所有監視器操作 watcher_user 授予讀取.watches索引,獲取觀看動作和觀察者統計信息的權限
官網地址
https://www.elastic.co/guide/en/x-pack/6.2/built-in-roles.html
cluster權限,可以分配給角色的權限
權限詳情
all 所有集群管理操作,如快照,節點關閉/重新啟動,設置更新,重新路由或管理用戶和角色 monitor 所有集群只讀操作,如集群運行狀況,熱線程,節點信息,節點和集群統計信息,快照/恢復狀態,等待集群任務 monitor_ml 所有只讀機器學習操作,例如獲取有關數據傳輸,作業,模型快照或結果的信息 monitor_watcher 所有只讀操作,例如獲取watch和watcher統計信息 manage 構建monitor並添加更改集群中值的集群操作。這包括快照,更新設置和重新路由。此特權不包括管理安全性的能力 manage_index_templates 索引模板上的所有操作 manage_ml 所有機器學習操作,例如創建和刪除數據傳輸,作業和模型快照。數據處理以具有提升特權的系統用戶身份運行,包括讀取所有索引的權限 manage_pipeline 攝取管道的所有操作 manage_security 所有與安全相關的操作,例如對用戶和角色的CRUD操作以及緩存清除 manage_watcher 所有觀察者操作,例如放置watches,執行,激活或確認。Watches作為具有提升特權的系統用戶運行,包括讀取和寫入所有索引的權限。Watches作為具有提升特權的系統用戶運行,包括讀取和寫入所有索引的權限 transport_client 傳輸客戶端連接所需的所有權限。遠程群集需要啟用跨級群搜索
indices權限
權限詳情
all 索引上的任何操作 monitor 監控所需的所有操作(恢復,細分信息,索引統計信息和狀態) manage 所有monitor特權加索引管理(別名,分析,緩存清除,關閉,刪除,存在,刷新,映射,打開,強制合並,刷新,設置,搜索分片,模板,驗證) view_index_metadata 對索引元數據(別名,別名存在,獲取索引,存在,字段映射,映射,搜索分片,類型存在,驗證,warmers,設置)進行只讀訪問。此特權主要供Kibana用戶使用 read 只讀操作(計數,解釋,獲取,mget,獲取索引腳本,更多像這樣,多滲透/搜索/ termvector,滲透,滾動,clear_scroll,搜索,建議,tv) read_cross_cluster 只讀訪問來自遠程集群的搜索操作 index 索引和更新文件。還授予對更新映射操作的訪問權限 create 索引文件。還授予對更新映射操作的訪問權限 delete 刪除文件 write 對文檔執行所有寫入操作的權限,包括索引,更新和刪除文檔以及執行批量操作的權限。還授予對更新映射操作的訪問權限 delete_index 刪除索引 create_index 創建索引。創建索引請求可能包含在創建索引時添加到索引的別名。在這種情況下,該請求最好有manage權限,同時設置索引和別名
官網地址
https://www.elastic.co/guide/en/x-pack/6.2/security-privileges.html