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

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

Elastic:集群相关知识点总结(二)集群安全security,角色用户基础权限控制RBAC 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

如果只需要开启最小化的安全配置的话,接下来就只需要生成账号密码即可,但是按照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

那么我们总共需要添加的配置就如下所示,我们需要在需要配置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

注意这里识别的证书路径默认是在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

这里执行后会要求输入文件名和密码,我这里选择不输入,直接enter
如果需要配置文件名和密码的可以输入

可以看到目录下多了一个.p12文件

(2)根据授权证书,生成节点证书,注意这里生成的这个节点证书elastic-certificates.p12才是我们需要的证书

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

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

cp elastic-certificates.p12 config/

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

scp elastic-certificates.p12 [email protected]:/var/local/elasticsearch/config
scp elastic-certificates.p12 [email protected]:/var/local/elasticsearch/config
scp elastic-certificates.p12 [email protected]:/var/local/elasticsearch/config

建立连接时会要求输入节点的root账号密码,直接输入即可

3、因为使用root账号远程拷贝的证书,因此还需要将证书赋权给elastic账号,否则启动es节点的时候会报错文件无权限,注意赋权前需要

# 切换至root账户
su
# 给elastic赋权
chown -R elastic:elastic /var/local/elasticsearch/config/elastic-certificates.p12
# 切换回elastic账户
su elastic

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

./bin/elasticsearch -d

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

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

./bin/elasticsearch-setup-passwords interactive

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

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

6、重新访问9200,输入账户密码,正常显示节点信息了

并没有给同集群下的11节点配置过密码,但是使用elastic同样能够登记,也说明了同集群中是共享账号密码的

7、在kibana配置文件中设置es账户密码,也就是刚刚设置的账户密码(考试时无需设置,会帮你设置好)

elasticsearch.username: "elastic"
elasticsearch.password: "elastic"

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

(2)在kinaba中配置

elasticsearch.username: root
elasticsearch.password: 123456

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

1.4 超过30天试用怎么办?

删除data/nodes文件夹即可

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

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

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

2.1 案例

以下我们以一个实例来举例:
· 创建一个用户benjamin5,密码123456,邮箱[email protected]
· 他可以登陆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!"}

执行会发现报错,提示我们要创建索引的话需要如下索引权限
auto_configure,create_index,manage,all

那么我们就按照他的提示,再修改一下之前配置的角色的权限即可
这里需要注意根据提示来看,要再配置auto_configure,create_index,manage,all这些权限,但实际我们已经配置了create权限,create_index是不用配置的,因为我们要求只能查看和新增,那么manage权限肯定不能配置,all权限就更不能配置了。

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

查看索引

GET product/_doc/_search

结果符合预期

然后我们再尝试删除索引,发现报错,提示权限不足

DELETE product


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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5660168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存