当前位置: 首页 > news >正文

ES鉴权设计以及相关探讨

文章目录

  • 1. es的鉴权设计
  • 2. es鉴权应用范围
  • 3. es鉴权的常用方法
    • 3.1 认证体系
    • 3.2 x-pack认证
      • 3.2.1 开启并配置 X-Pack 的认证与鉴权
      • 3.2.2 默认用户和角色
      • 3.2.3 创建用户和角色
      • 3.2.4 通过用户名和密码访问es
  • 4. 参考文档

鉴权,分别由组成

  • : 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致
  • : 完成身份的后,还需要判断用户是否有相关操作的权限。

因此对于某一个用户来说,通常情况下,需要完成才能够满足一个完整的业务场景,因此通常将鉴权放在一起考量。本文探讨es的鉴权常用的鉴权方式以及相关鉴权设计方式。


1. es的鉴权设计

es通常不需要进行鉴权设计,但是由于一些项目的安全性要求,会进行要求鉴权配置

: 身份认证

身份的认证有4种方式:

  • SASL/GSSAPI:kerberos认证方式,一般使用随机密码的keytab认证方式,密码是加密的,也是企业里使用最多的认证方式,在0.9版本引入;
  • SASL/PLAIN:这种方式其实就是一个账号/密码的认证方式,不过它有很多缺陷,比如用户名密码是存储在文件中,不能动态添加,密码明文等等!这些特性决定了它比较鸡肋,但好处是足够简单,这使得我们可以方便地对它进行二次开发,在0.10版本引入;
  • SASL/SCRAM:针对SASL/PLAIN方式的不足而提供的另一种认证方式。这种方式的用户名/密码是存储中zookeeper的,因此能够支持动态添加用户。该种认证方式还会使用sha256或sha512对密码加密,安全性相对会高一些,在0.10.2版本引入;
  • SASL/OAUTHBEARER:是基于OAuth 2.0的认证框架,实现较为复杂,目前业内应该较少使用,在2.0版本引入。

: 操作权限
5种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,

注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限。

2. es鉴权应用范围

es的鉴权范围,通常会包括2个层面

  • es之间的通信
  • 客户端跟es之间的通信

3. es鉴权的常用方法

  • 设置 Nginx 的反向代理
  • 安装免费的 Security 插件
  1. https://search-guard.com/
  2. https://github.com/sscarduzio/elasticsearch-readonlyrest-plugin
  • X-Pack 的 Basic 版(从 ES 6.8 & ES 7.0 开始,Security 纳入 x-pack 的 Basic 版本中,免费使用一些基本的功能 https://www.elastic.co/what-is/elastic-stack-security)

最常用的是X-Pack ,使用的是简单认证模式

3.1 认证体系

认证体系的几种类型

  • 提供用户名和密码
  • 提供秘钥或 Kerberos 票据
  • Realms : X-Pack 中的认证服务
  • 内置 Realms (免费): File / Native (用户名密码保存在 Elasticsearch)
  • 外部 Realms (收费): LDAP / Active Directory / PKI / SAML / Kerberos

3.2 x-pack认证

3.2.1 开启并配置 X-Pack 的认证与鉴权

  • 修改配置文件,打开认证于授权
bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -E http.port=9200 -E xpack.security.enabled=true - E xpack.security.transport.ssl.enabled=true
  • 创建默认的用户和分组
bin/elasticsearch-passwords interactive
  • 当集群开启身份认证之后,配置 Kibana

3.2.2 默认用户和角色

用户角色
elasticSupper User
kibanaThe user that is used by Kibana to connect and communicate with Elasticsearch.
logstash_systemThe user that is used by Logstash when storing monitoring information in Elasticsearch.
beats_systemThe user that the different Beats use when storing monitoring information in Elasticsearch.
apm_systemThe user that the APM server uses when storing monitoring information in Elasticsearch.
Remote_monitoring_userThe user that is used by Metricbeat when collecting and storing monitoring information in Elasticsearch.

3.2.3 创建用户和角色

使用 Security API 创建用户

POST /_security/user/lsk
{"password": "password","roles": ["admin"],"full_name": "Crazy Zard","email":"541306829@qq.com","metadata": {"intelligence":7}
}

3.2.4 通过用户名和密码访问es

使用用户名和密码查询es集群

curl -XGET -u user:pass -H 'Content-Type: application/json' 'http://localhost:9200/_cluster/health?pretty'

4. 参考文档

  • es官网
http://www.lryc.cn/news/295202.html

相关文章:

  • 为什么SpringBoot胖Jar不好
  • Java学习笔记2024/2/6
  • 2024 高级前端面试题之 前端安全模块 「精选篇」
  • SpringBoot Security安全认证框架初始化流程认证流程之源码分析
  • 2024美赛预测算法 | 回归预测 | Matlab基于RIME-LSSVM霜冰算法优化最小二乘支持向量机的数据多输入单输出回归预测
  • test1
  • 远程主机可能不符合 glibc 和 libstdc++ Vs Code 服务器的先决条件
  • 备战蓝桥杯---数据结构与STL应用(进阶2)
  • SpringBoot:多环境配置
  • input框中添加一个 X(关闭/清空按钮)
  • Unity3d Shader篇(三)— 片元半兰伯特着色器解析
  • 【vue3学习P5-P10】vue3语法;vue响应式实现
  • 相机图像质量研究(3)图像质量测试介绍
  • PaddleDetection学习5——使用Paddle-Lite在 Android 上实现实时的人脸检测(C++)
  • 全套电气自动化样例图纸分享,使用SuperWorks自动化版免费设计软件!
  • 带你实现用自己域名打开Tomcat
  • python coding with ChatGPT 打卡第18天| 二叉树:从中序与后序遍历序列构造二叉树、最大二叉树
  • java基础训练题(1)
  • 【自定义序列化器】⭐️通过继承JsonSerializer和实现WebMvcConfigurer类完成自定义序列化
  • 闲聊电脑(5)装个 Windows(一)
  • 力扣(leetcode)第414题第三大的数(Python)
  • 使用wda框架实现IOS自动化测试详解
  • LeetCode--代码详解 2.两数相加
  • 【Django开发】美多商城项目第3篇:用户注册和图片验证码开发(附代码,文档已分享)
  • 代码随想录算法训练营DAY10 | 栈与队列 (1)
  • flinkjar开发 自定义函数
  • Golang 学习(一)基础知识
  • C++学习:string的了解
  • Webpack源码浅析
  • Hadoop:HDFS学习巩固——基础习题及编程实战