前言| ES作为一款当下非常流行的轻量级存储搜索引擎,其安全性也变得日益重要。否则就会非常容易造成敏感数据泄露的严重问题。主要是因为使用者并没有将ES的安全功能打开。那么出现这种问题产生的原因是什么呢?原因大致如下:
1,ES在默认安装后,不提供任何形式的安全防护;
2,错误的配置信息导致公网可以访问ES集群;
---- 在elasticsearch.yml 的配置文件中,server.host被错误的配置为0.0.0.0
一、数据安全性的基本需求 1,身份验证:鉴定用户是否合法;
2,用户鉴权:指定哪个用户可以访问哪个索引
3,传输加密
4,日志审计
二、那么怎么满足这类安全需求呢? 方案大致可以如下几种:
1,设置Nginx反向代理,让用户在访问ES集群的时候需要提供用户验证信息,这个方法目前使用比较普遍。特别是针对ES低版本基础版、开源版;
2,安装免费的security插件,比如Search Guard、ReadOnly REST
3,ES的商业包 x-pack的Basic版 ,从ES6.8基础版开始免费使用一些基础的安全功能,比如身份验证、用户鉴权
三、Authentication - 身份认证 认证体系的几种类型:
提供用户名、密码
提供秘钥、kerberos票据
在ES中提供的这种认证服务我们称之为 Realms,它分为两种,一种收费、一种免费
内置的Realms(免费)
在这种情况下,用户名和密码都保存在Elasticsearch 的索引中
外部的Realms(收费)
如果ES的安全机制需要与企业内的其它服务器应用安全集成的话,比如AD/LDAP/PKI/kerberos.需要购买专用的ES 安全服务
四、RBAC - 用户鉴权 什么是RBAC? Role Based Access Control. 定义一个角色,并分配一组权限。权限包括索引级、字段级、集群级的不同操作。然后通过将角色分配给用户,使得用户拥有这些权限。
在ES中定义的这些权限有哪些呢?
1,集群权限 Cluster Privileges
all/monitor/manager/manager_index/manage_index_template/manage_rollup
2,索引权限 indices Privileges
all/create/create_index/delete/delete_index/index/manage/read/write/view_index_metadata
五、开启并配置X-Pack的认证与鉴权 其实,在前面的章节中,我也讲到了这块的部署应用,那么今天再来实操验证此安全功能。我将以一台CVM多进程的方式论证一下这个逻辑。步骤如下:(以 ES 6.8.2 为列)
1,修改配置文件 ,打开认证、授权功能
只需要开启此命令即可 xpack.security.enabled:"true"
2, 创建默认的用户和分组 ES默认提供了多个用户以及组权限,需要设置密码
/bin/elasticsearch-password interactive