Elasticsearch核心技术与实战学习笔记 56 | 集群身份认证与用户鉴权
一 序
本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。
本周扫盲了下pmp的的预习课,所以耽误了ES学习。
二 安全问题
- ES 在默认安装后,不提供任何形式的安全防护
- 错误的配置信息导致公网可以访问 ES 集群
- 在
elasticsearch.yml
文件中,server.host
被错误的配置为0.0.0.0
- 在
这个就不如MySQL那种严谨了。
2.1 数据安全性的基本需求
- 身份认证
- 鉴定用户是否合法
- 用户鉴权
- 指定哪个用户可以访问哪个索引
- 传输加密
- 日志审计
2.2 一些免费的方案
- 设置 Nginx 的反向代理
- 安装免费的 Security 插件
- Search Guard - https://search-guard.com/
- X-Pack 的 Basic 版
- 从 ES 6.8 & ES 7.0 开始,Security 纳入 x-pack 的 Basic 版本中,免费使用一些基本的功能
Anthentication - 身份认证
认证体系的几种类型
- 提供用户名和密码
- 提供秘钥或 Kerberos 票据
Realms : X-Pack 中的认证服务
- 内置 Realms (免费)
File / Native (用户名密码保存在 Elasticsearch)
- 外部 Realms (收费)
LDAP / Active Directory / PKI / SAML / Kerberos
RBAC - 用户鉴权
什么是 RBAC:Role Based Access Control, 定义一个角色,并分配一组权限。权限包括索引 级,字段级,集群级的不同的操作。然后通过将角色分配给用户,使得用户拥有这些权限
User:The authenticated User
Role:A named set of permissions
Permission – A set of one or more privileges against a secured resource
Privilege – A named group of 1 or more actions that user may execute against a secured resource
Privilege
- Cluster Privileges
all / monitor / manager / manage_index / manage_index_template / manage_rollup
- Indices Privileges
all / create / create_index / delete / delete_index / index / manage / read /writeview_index_metadata
创建内置的用户和角色
使用 Security API 创建用户
开启并配置 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-password interactive
使用 docker 时并进入到容器中 elasticsearch-setup-passwords interactive
- 当集群开启身份认证之后,配置 Kibana
Demo
创建一个 Role,配置为某个索引只读权限 、创建一个用户,把用户加入 Role
配置 Kibana
- 修改 kibana.yml
- elasticsearch.username: “kibana”
- elasticsearch.password: “changeme”
kibana.yaml中配置的用户:用于 Kibana 启动时维护索引。与上面的es不是一个用户。