基於open_distro的ES用戶管理(認證)


基於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."
    }
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM