前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch集群的身份验证、用户鉴权操作

Elasticsearch集群的身份验证、用户鉴权操作

原创
作者头像
南非骆驼说大数据
发布2020-04-25 19:50:49
11.7K0
发布2020-04-25 19:50:49
举报

前言|

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

3,当集群开始身份验证后,配置Kibana,创建不同的用户测试

闲话少说,接下来,上实际部署过程。启动3个es进程模拟3个节点

进程1
进程1
进程2
进程2
进程3
进程3

接下来,给集群的默认用户创建密码

给用户设定密码
给用户设定密码

那么我们为每一个默认的用户都确定一个密码,然后按回车。依次类推直到完成。

为elastic创建密码
为elastic创建密码

使用curl 命令验证一下:确认是可以的。

Curl验证
Curl验证

接下来,设置Kibana,让Kibana也具备用户鉴权的功能。

kibana.conf配置文件中,改一下如下信息,这个Kibana用户是专门用来与ES进行连接使用的。

kibana用户密码设置
kibana用户密码设置

然后我们启动Kibana服务,并登录访问。用超级用户elastic登录

登录Kibana
登录Kibana

在kibana界面菜单栏--点击management--Security,点击打开:如下

Security界面
Security界面

先创建Roles。选择Roles---->create role, role name自己定义,这里比如card-onlyread

创建角色
创建角色

接下来,只允许这个角色在kibana操作,对索引index_test 只允许读该索引。 配置如下

另外,我们还得允许该角色对kibana进行访问,所以还要给它读得权限

然后点击create role即可

好,那么我们将创建了一个角色,解析来,再创建一个用户,将该用户加入该角色进行测试,点击users- create new user创建用户,点击完成即可

将用户加入该roles组
将用户加入该roles组

最后一步:验证结果,退出当前得用户,用新创建得用户登录,实现对索引得操作,看能否实现?

kibana,开发工具里输入如下命令:

首先,查询一下 GET test_index/_search 可以执行

其次,删除索引,看能否执行?DELETE test_index 不能执行,报以下错误。因为没有权限。

无法删除索引
无法删除索引

其次,那咱们再改一下用户所属组得权限。增加一个delete权限,再来验证。

Delete test_index

删除成功
删除成功

六,总结

那么本节中我给大家介绍了安全对于数据得重要性以及搭建一个安全的ES集群环境---如何在Elasticsearch中通过x-pack的安全功能保护的企业真实数据,好的,今天就讲到这里。你GET了吗?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言|
  • 一、数据安全性的基本需求
  • 二、那么怎么满足这类安全需求呢?
  • 三、Authentication - 身份认证
  • 四、RBAC - 用户鉴权
  • 五、开启并配置X-Pack的认证与鉴权
    • 最后一步:验证结果,退出当前得用户,用新创建得用户登录,实现对索引得操作,看能否实现?
    • 六,总结
    相关产品与服务
    多因子身份认证
    多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档