ES 集群权限分发

Elastic Search集群权限分发

部署环境及版本

Centos7

ElasticSearch7.10.2

kibana-7.10.2-linux-x86_64

1、集群权限配置

1-1、 停用集群,进入es安装目录

1692157143529-496a7aa3-047e-4400-8051-0d6c98c7253c.png

1-2、 打开es配置文件,开启x-pack验证,添加证书文件

以下操作需在所有节点执行

样例配置

1692157280249-c9f40242-0963-4f23-b169-8b7ce3461744.png

1-3、集群权限配置

1-4、 将config下的这三个文件分发给其余节点的config目录下

1692157602491-e542fe84-f33d-4a30-a868-e7c105d1de3f.png

1-5、 启动es。然后去登陆es的时候就需要密码,Localhost:9200验证

1692157637022-83619a1d-e2d1-40b2-a10c-dab0c6e0f1eb.png

1-6、接下设置内置用户的密码,执行以下命令根据图示操作

1692157766317-acf1930c-68f5-45fc-b2cf-bc18528412dd.png

做完如上的操作就完成了一些特定账号的密码设置:比如elastic超级管理员的密码,这样就可以对权限进行管理了,到这里为止,就可以去通过elastic用户去登陆es集群了,elastic用户作为超级用户,在开发的过程中不建议使用,所以需要自己管理和配置角色和用户

2、Kibana配置文件

2-1、进入kibana主目录

添加以下配置:

样例配置

1692158028077-e80f70c4-62dd-4850-b967-727d2c18a1cf.png

3、用户和角色管理

3-1、Security privileges(权限管理)

主要是先把权限赋给角色,该角色就拥有了赋有的权限了,然后指定用户为该角色,这样该用户也就有了该角色的权限。大概可以理解为,权限和用户之间的桥梁就是角色,把不同的权限赋给角色,然后把用户对应什么样子的角色就有该角色的权限。权限这里分为集群的权限和索引的权限,集群权限有所有的权限,有快照的权限,管理权限,监控权限等。索引权限有创建,删除,读,写等权限。

1692158193900-e327ed38-f04e-4525-b466-b980460db435.png

1692158203433-764d6dc2-1d16-4320-a4af-b14c361fe17b.png

3-2、role(角色)介绍操作

elasticsearch7内置了很多角色,但是很多内置角色都不是我们想要的,每个公司的需求都是不一样,如果集群很小,则可以简单控制权限就可以,如果集群大,用户多,则需要比较细粒度的控制权限,所以我们要根据自己的需求定义自己的所要的角色。角色的配置有两种方式,一种是界面的操作(kibana方式),这样就傻瓜式的操作,很简单。还有就是通过API的方式控制权限,这样的话需要花点时间熟悉下,操作相对来说复杂点,但是不需要额外的kibana。

1、登录kibana IP Localhost:5601

1692158334188-2ab0d52b-6f15-48ee-b6cb-96502164b22f.png

2、 进入家目录

1692158367423-26969d40-16e0-4d88-b864-a4d994ad021d.png

3、点击左下角

Display a different page on log in

1692158412736-284c3f26-2f4f-48af-86b5-ad03f5a83ea9.png

4、Security下三个选项,分别是用户、角色、APIKEY

安全界面

1692164794197-532b4303-648b-48a0-b140-df51a5643968.png

USER详情页

1692164831926-b517720b-0305-4837-b78a-da95523807af.png

ROLES详情页

1692164842237-c3a439da-4c5c-47ae-8a35-9dd4ef83bf8b.png

3-3、接下来就可以新建rolele

1692165045477-cd4b5bbf-040c-4733-9261-c86fea1226cc.png

1692165086629-ea4f0620-3ab4-44e5-b146-17a40c4ff48b.png

到这里为止通过kibana方式配置role的步骤就完了

3-4、API配置语法

3-5、user(用户)介绍和操作

elasticsearch7内置了很多用户,前面那步设置密码就是给里面的内置用户配置密码,在日常es开发中,内置用户基本不使用,所以主要自定义用户,自定义用户也同样有两种方式,同样是kibana和API方式,这两种方式也很简单

方式一(kibana方式)

1、登录kibana,点击users,然后点击新建

1692165561470-edb00e9e-a04c-4f85-9e9c-c6cbdd663fa2.png

2、配置用户的基本信息和指定配置的角色

1692165604885-b8ab28e8-babc-4c7e-9739-635b1d8d3a89.png

方式二(API方式)

配置用户的基本信息和指定配置的角色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
put _security/user/tony

{

"password": "j@rV1s",

"roles": [

"test1"

],

"full_name": "tony",

"email": "jacknich@example.com",

"metadata": {

"intelligence": 7

}

}

到这里,role和user的基本创建就介绍完了

4、总结:

1、以上为集群权限配置、role和user的基本用法,具体如何根据需求控制权限这些都是根据实际情况确定的,因为用户配置有很多,也支持ldap,这里只是用了最简单的方式,若想超级细粒度或者ldap方式或者其他方式对权限进行控制,最好去研究下官网,本文说的很简单,只是对基本的权限的控制。具体设计都是基于现有的业务场景或者用户的数量,或者是集群的规模确定权限是否细粒度。

5、此教程所参考的官方文档

1、集群保护相关

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/secure-cluster.html

2、创建集群认证机构,颁发证书

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/configuring-tls.html

3、设置内置密码

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/setup-passwords.html

4、权限管理

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/security-privileges.html

5、内置角色

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/built-in-roles.html

6、API方式配置权限

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/security-api-put-role.html

7、用户介绍

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/built-in-users.html

8、API创建用户

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/security-api-put-user.html

9、API更多用法

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/security-api.html


ES 集群权限分发
https://blogs.nover.fun/post/2024/09/ES 集群权限分发/
作者
Nover
发布于
2024年9月13日
许可协议