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基础版开始免费使用一些基础的安全功能,比如身份验证、用户鉴权
认证体系的几种类型:
提供用户名、密码
提供秘钥、kerberos票据
在ES中提供的这种认证服务我们称之为 Realms,它分为两种,一种收费、一种免费
内置的Realms(免费)
在这种情况下,用户名和密码都保存在Elasticsearch 的索引中
外部的Realms(收费)
如果ES的安全机制需要与企业内的其它服务器应用安全集成的话,比如AD/LDAP/PKI/kerberos.需要购买专用的ES 安全服务
什么是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
其实,在前面的章节中,我也讲到了这块的部署应用,那么今天再来实操验证此安全功能。我将以一台CVM多进程的方式论证一下这个逻辑。步骤如下:(以 ES 6.8.2 为列)
1,修改配置文件 ,打开认证、授权功能
只需要开启此命令即可 xpack.security.enabled:"true"
2, 创建默认的用户和分组 ES默认提供了多个用户以及组权限,需要设置密码
/bin/elasticsearch-password interactive
3,当集群开始身份验证后,配置Kibana,创建不同的用户测试
闲话少说,接下来,上实际部署过程。启动3个es进程模拟3个节点
接下来,给集群的默认用户创建密码
那么我们为每一个默认的用户都确定一个密码,然后按回车。依次类推直到完成。
使用curl 命令验证一下:确认是可以的。
接下来,设置Kibana,让Kibana也具备用户鉴权的功能。
kibana.conf配置文件中,改一下如下信息,这个Kibana用户是专门用来与ES进行连接使用的。
然后我们启动Kibana服务,并登录访问。用超级用户elastic登录
在kibana界面菜单栏--点击management--Security,点击打开:如下
先创建Roles。选择Roles---->create role, role name自己定义,这里比如card-onlyread
接下来,只允许这个角色在kibana操作,对索引index_test 只允许读该索引。 配置如下
另外,我们还得允许该角色对kibana进行访问,所以还要给它读得权限
然后点击create role即可
好,那么我们将创建了一个角色,解析来,再创建一个用户,将该用户加入该角色进行测试,点击users- create new user创建用户,点击完成即可
kibana,开发工具里输入如下命令:
首先,查询一下 GET test_index/_search 可以执行
其次,删除索引,看能否执行?DELETE test_index 不能执行,报以下错误。因为没有权限。
其次,那咱们再改一下用户所属组得权限。增加一个delete权限,再来验证。
Delete test_index
那么本节中我给大家介绍了安全对于数据得重要性以及搭建一个安全的ES集群环境---如何在Elasticsearch中通过x-pack的安全功能保护的企业真实数据,好的,今天就讲到这里。你GET了吗?
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。