当前位置:   article > 正文

Elastic:集群相关知识点总结(二)集群安全security,角色用户基础权限控制RBAC_elasticsecurity

elasticsecurity

0.引言

集群的安全管理对于生产环境来说不可或缺,接下来我们来看看最基础集群安全配置是如何设置的。

基于elasticsearch7.13.0

1.集群安全security

官方文档:
Secure the Elastic Stack > configure security for the Elastic Stack > set up minimal security for Elasticsearch
Secure the Elastic Stack > configure security for the Elastic Stack > set up basic security for Elasticsearch

注意:以下所有步骤已经验证过真实可行,如果发现你的结果与我示例的不一致,请细心检查是否有忽略步骤或者操作错误

1.1 配置security

为了方便大家理解,并且能够脱离第三方文档独立进行集群安全的配置,以下配置步骤完全依赖官方文档,且会给出官方文档对应步骤,后续可直接参考官方文档进行配置。

1、首先我们需要开启集群安全,这个配置需要在 Secure the Elastic Stack » Configure security for the Elastic Stack » Set up minimal security for Elasticsearch中找到

如果只需要开启最小化的安全配置的话,配置这两项即可

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
  • 1
  • 2

接下来就只需要执行以下指令指定密码

./bin/elasticsearch-setup-passwords interactive
  • 1

但是按照Elastic认证考试和实际生产环境来说,为了保障更加安全的集群,我们需要通过证书的方式来配置,因此还需要添加ssl配置
这个配置可以在Secure the Elastic Stack > configure security for the Elastic Stack > set up basic security for Elasticsearch中找到

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
  • 1
  • 2
  • 3
  • 4
  • 5

那么我们总共需要添加的配置就如下所示,我们需要在需要配置security的每个节点中添加如下配置

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意这里识别的证书路径默认是在config下的,所以后续我们生成的证书是需要转移到config文件夹下

2、生成证书
打开Secure the Elastic Stack > configure security for the Elastic Stack > set up basic security for Elasticsearch
可以看到文档中已经说明了生成证书的步骤:
在这里插入图片描述
(1)在es安装目录下执行以下命令,生成授权证书

./bin/elasticsearch-certutil ca
  • 1

这里执行后会要求输入文件名和密码,我这里选择不输入,直接enter
如果需要配置文件名和密码的可以输入
在这里插入图片描述
可以看到目录下多了一个.p12文件
在这里插入图片描述
(2)根据授权证书,生成节点证书,注意这里生成的这个节点证书elastic-certificates.p12才是我们需要的证书

./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
  • 1

在这里插入图片描述

(3)最后一步,如果是多节点集群,那么需要把这个证书复制到其他节点中,如果需要和其他集群绑定远程集群(使用跨集群搜索、跨集群复制等功能),那么其他集群中的每个节点也需要复制该证书
但是在复制之前,我们需要先将该证书转移到config目录下

cp elastic-certificates.p12 config/
  • 1

这里的复制,我们可以通过scp指令来实现,我这里的需要配置两个集群,一个集群3节点,一个集群单节点,因此,我需要把这个证书复制到其他3个节点中的es的config文件夹下

scp elastic-certificates.p12 root@172.16.188.11:/var/local/elasticsearch/config
scp elastic-certificates.p12 root@172.16.188.12:/var/local/elasticsearch/config
scp elastic-certificates.p12 root@172.16.188.8:/var/local/elasticsearch/config
  • 1
  • 2
  • 3

建立连接时会要求输入节点的root账号密码,直接输入即可
在这里插入图片描述
3、因为使用root账号远程拷贝的证书,因此还需要将证书赋权给elastic账号,否则启动es节点的时候会报错文件无权限,注意赋权前需要

# 切换至root账户
su
# 给elastic赋权
chown -R elastic:elastic /var/local/elasticsearch/config/elastic-certificates.p12
# 切换回elastic账户
su elastic
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4、启动es节点
配置密码前我们需要先启动所有es节点,并且需要以后台进程的形式启动,这样我们才能在启动时输入指令

./bin/elasticsearch -d
  • 1

启动后访问ip:9200会发现需要输入账户密码了,到这里以前的就成功了,下一步,我们来创建账户密码
在这里插入图片描述

5、生成账号密码
执行指令生成账户密码,注意这里以elastic账户来执行,这一步的指令可以在Set up minimal security for Elasticsearch文档中找到

./bin/elasticsearch-setup-passwords interactive
  • 1

执行后会弹出是否继续的确认,输入y即可,然后会弹出为当前账户输入密码的提示,需要输入6次密码,确认6次,总共12次,中间注意不要输错,这里我输入的密码为elastic
在这里插入图片描述

生成账号密码的操作在一个集群中的任意一个节点执行过就可以了,因为security识别账号密码是以集群为单位的

6、重新访问9200,输入账户密码,正常显示节点信息了
在这里插入图片描述
并没有给同集群下的11节点配置过密码,但是使用elastic同样能够登记,也说明了同集群中是共享账号密码的
在这里插入图片描述
7、在kibana配置文件中设置es账户密码,也就是刚刚设置的账户密码(考试时无需设置,会帮你设置好)

elasticsearch.username: "elastic"
elasticsearch.password: "elastic"
  • 1
  • 2

在这里插入图片描述

8、启动kibana,输入账号密码,正常登陆
在这里插入图片描述
在这里插入图片描述

9、在另一个集群中也如上述步骤生成账号密码

1.2 总结

集群安全的配置看上去步骤多,但实际多配置几遍,自己总结下配置步骤,结合官方文档,无需背下配置,相信你自己,会轻松掌握这个知识点的!

1.3 配置过程中密码设置错了或者设置为自定生成了怎么办?

1、如果知道原密码
可以通过更新密码接口,更改用户密码
文档:REST APIs » Security APIs » Change passwords API
Set up a cluster for high availability » Back up a cluster » Restore a cluster’s security configuration

POST /_security/user/jacknich/_password
{
“password” : “new-password”
}

2、不知道原密码,暴力重置
关闭es,删除data/nodes文件夹
然后重新启动,重新生成用户密码

3、不知道原密码,通过管理员修改
(1)添加一个超级管理员,然后用这个管理员来修改elastic的密码

# 生成超级管理员root
./bin/elasticsearch-users useradd root -p 123456 -r superuser
  • 1
  • 2

(2)在kinaba中配置

elasticsearch.username: root
elasticsearch.password: 123456
  • 1
  • 2

(3)然后用root登陆kibana
(4)修改elastic密码
POST /_security/user/elastic/_password
{
“password” : “new-password”
}

1.4 超过30天试用怎么办?

如果你在kibana中开启了会员试用且超过30天了,可以通过以下方法延期:
1、生产环境的话需要付费开通会员
2、自己的本地环境,或者不关心数据的测试环境,可直接删除data/nodes文件夹恢复30天试用

2. 角色用户基础权限控制 RBAC

es的权限控制是以角色用户的模式运行的,即将权限绑定到角色上,权限包括该角色对集群可进行哪些操作、可操作哪些索引、可对索引进行哪些操作(增删改查等)、可操作索引中哪些字段、不能操作哪些字段(该维度需要开启白金会员或者30天试用)。然后将角色分配到用户,这样用户就拥有了一系列权限。包括可以登陆kibana的权限

角色用户权限是建立在开启security的前提下的,我们可以通过kibana可视化配置,也可以通过api配置,下面我们以kibana配置举例
进入Stack Management,在security模块点击进入Roles(注意:如果你没有开启security是看不到这个模块的)
在这里插入图片描述

2.1 案例

以下我们以一个实例来举例:
· 创建一个用户benjamin5,密码123456,邮箱55555@sina.com
· 他可以登陆kibana
· 拥有创建索引的权利,可以查看索引但不能删除这些索引。
· 只能查看product索引,但不允许查看product索引中的admin_field字段

2.2 步骤

创建角色
使用*来表示所有
在这里插入图片描述

创建用户
注意这里添加了一个kibana_admin角色,用于给该用户赋予能够登陆kibana的权限,旧版本中使用kibana_user,7.13版本kibana_user依然可用,但是会标黄警告
在这里插入图片描述

2.3 测试

我们推出登陆,使用benjamin5账号来登陆
在这里插入图片描述
插入索引

PUT product/_bulk
{"index":{}}
{"name": "phone", "admin_field": "you can't see!"}
{"index":{}}
{"name": "phone", "admin_field": "can't see!"}
{"index":{}}
{"name": "fruit", "admin_field": "password"}
{"index":{}}
{"name": "fruit", "admin_field": "you can't see!"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

执行会发现报错,提示我们要创建索引的话需要如下索引权限
auto_configure,create_index,manage,all
在这里插入图片描述
那么我们就按照他的提示,再修改一下之前配置的角色的权限即可
这里需要注意根据提示来看,要再配置auto_configure,create_index,manage,all这些权限,但实际我们已经配置了create权限,create_index是不用配置的,因为我们要求只能查看和新增,那么manage权限肯定不能配置,all权限就更不能配置了。

所以实际上我们只需要再配置一个auto_configure权限即可。kibana中的提示是按照从小到大的关系给出的,所以我们在配置时,可以先从提示的前面一两个权限添加,然后测试是否可行。
添加后再执行发现成功了
在这里插入图片描述
查看索引

GET product/_doc/_search
  • 1

结果符合预期
在这里插入图片描述
然后我们再尝试删除索引,发现报错,提示权限不足

DELETE product
  • 1

在这里插入图片描述
针对角色权限的配置,更多的是需要自己动手实践、摸索,这样才能真正理解、熟悉。

【针对ES知识点有疑惑的地方,可以留言告诉我】

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/953607
推荐阅读
相关标签
  

闽ICP备14008679号