笔记四十九: 管集群身份认证与用户鉴权
数据泄露
- 5700 万用户数据泄漏
- 1.08 亿条投注信息泄漏
原因分析
- ES 在默认安装后,不提供任何形式的安全防护
- 错误的配置信息导致公网可以访问 ES 集群
- 在
elasticsearch.yml
文件中,server.host
被错误的配置为0.0.0.0
- 在
数据安全性的基本需求
- 身份认证
- 鉴定用户是否合法
- 用户鉴权
- 指定哪个用户可以访问哪个索引
- 传输加密
- 日志审计
一些免费的方案
- 设置 Nginx 的反向代理
- 安装免费的 Security 插件
- Search Guard - https://search-guard.com/
- ReadOnly REST - https://github.com/sscarduzio/elasticsearc...
- X-Pack 的 Basic 版
- 从 ES 6.8 & ES 7.0 开始,Security 纳入 x-pack 的 Basic 版本中,免费使用一些基本的功能
- https://www.elastic.co/what-is/elastic-sta...
Anthentication - 身份认证
- 认证体系的几种类型
- 提供用户名和密码
- 提供秘钥或 Kerberos 票据
- Realms : X-Pack 中的认证服务
- 内置 Realms (免费)
- File / Native (用户名密码保存在 Elasticsearch)
- 外部 Realms (收费)
- LDAP / Active Directory / PKI / SAML / Kerberos
- 内置 Realms (免费)
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
创建内置的用户和角色
- 内置的角色与用户
用户 角色 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.
使用 Security API 创建用户
POST /_security/user/lsk
{
"password": "password",
"roles": ["admin"],
"full_name": "Crazy Zard",
"email":"541306829@qq.com",
"metadata": {
"intelligence":7
}
}
开启并配置 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”
创建 Role
创建用户
本作品采用《CC 协议》,转载必须注明作者和本文链接
开启并配置 X-Pack 的认证与鉴权 下面有一个命令错误了
bin/elasticsearch-password interactive
正确的应该是: bin/elasticsearch-setup-passwords interactive