鉴权,分别由鉴和权组成
- 鉴: 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致
- 权: 完成身份的鉴后,还需要判断用户是否有相关操作的权限。
因此对于某一个用户来说,通常情况下,需要完成鉴和权才能够满足一个完整的业务场景,因此通常将鉴权放在一起考量。本文探讨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 插件
- https://search-guard.com/
- 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 默认用户和角色
用户 | 角色 |
---|---|
elastic | Supper User |
kibana | The user that is used by Kibana to connect and communicate with Elasticsearch. |
logstash_system | The user that is used by Logstash when storing monitoring information in Elasticsearch. |
beats_system | The user that the different Beats use when storing monitoring information in Elasticsearch. |
apm_system | The user that the APM server uses when storing monitoring information in Elasticsearch. |
Remote_monitoring_user | The user that is used by Metricbeat when collecting and storing monitoring information in Elasticsearch. |
3.2.3 创建用户和角色
使用 Security API 创建用户文章来源:https://www.toymoban.com/news/detail-828713.html
POST /_security/user/lsk
{
"password": "password",
"roles": ["admin"],
"full_name": "Crazy Zard",
"email":"541306829@qq.com",
"metadata": {
"intelligence":7
}
}
3.2.4 通过用户名和密码访问es
使用用户名和密码查询es集群文章来源地址https://www.toymoban.com/news/detail-828713.html
curl -XGET -u user:pass -H 'Content-Type: application/json' 'http://localhost:9200/_cluster/health?pretty',
4. 参考文档
- es官网
到了这里,关于ES鉴权设计以及相关探讨的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!