zoukankan      html  css  js  c++  java
  • 基于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."
      }
      
  • 相关阅读:
    机器学习十四--深度学习-卷积
    机器学习十三——垃圾邮件分类2
    机器学习十二----朴素贝叶斯-垃圾邮件分类
    机器学习十一 ——分类与监督学习,朴素贝叶斯分类算法
    机器学习九----主成分分析
    机器学习八——特征选择
    基于D3.js 绘制一个折柱混合图
    一个轮播图
    贪吃蛇
    数组中哪些方法是响应式的
  • 原文地址:https://www.cnblogs.com/wangzhen3798/p/13426127.html
Copyright © 2011-2022 走看看