ES添加认证

原创
2020/07/05 12:01
阅读数 2.6K

1. 开启认证

在elasticsearch.yml中添加:

xpack.security.enabled: true

2. 配置节点间通信互信

2.1 创建一个yml文件,例如cert.yml

添加集群中所有节点信息,例如

instances:
  - name: "node01" 
    dns: 
      - "host-node01"
    ip:
      - "192.168.99.101"
  - name: "node02"
    dns: 
      - "host-node02"
    ip:
      - "192.168.99.102"
  - name: "node03"
    dns: 
      - "host-node03"
    ip:
      - "192.168.99.103"

instances中每一项代表集群中的一个节点
其中name为elasticsearch.yml中配置的 node.name

2.2 生成证书

./bin/elasticsearch-certutil cert --in cert.yml --keep-ca-key

根据提示输入产生的文件,直接回车即可
根据提示输入ca文件的密码 根据提示输入每个节点文件的密码
完成后会创建certificate-bundle.zip,将其解压后得到:

ca/ca.p12
node01/node01.p12
node02/node02.p12
node03/node03.p12

其中ca.p12是用来创建节点证书的,如果将来要增加节点,可以使用:

./bin/elasticsearch-certutil cert --ca ca.p12 --name node04 --dns host-node04 -ip 192.168.99.104

根据提示输入ca的密码,该密码就是创建ca.p12时输入的密码

2.3 节点添加配置

将产生的节点证书分别放置在各节点安装目录的config目录下,并且在elasticsearch.yml中添加:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.path: ${node.name}.p12 
xpack.security.transport.ssl.truststore.path: ${node.name}.p12

因为在cert.yml中的name字段设置为了 node.name,所以${node.name}.p12就是文件的名字

2.4 将${node.name}.p12密码保存在keystore中

./bin/elasticsearch-keystore create 

创建keystore。因为默认config有elasticsearch.keystore文件因此可以不执行。

./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

根据提示输入p12文件密码

3. 启动ES

4. 给内建用户创建密码

在client节点上执行以下命令:

./bin/elasticsearch-setup-passwords interactive

根据提示给内建用户创建密码

5. 创建用户

5.1 native realm

该方式就是使用kibana进行用户管理。首先,安装kibana并在kibana.yml中配置kibana用户密码:

elasticsearch.username: "kibana"
elasticsearch.password: "your_password"

kibana是内建用户,其密码在第4步中设置的。 如果不希望密码显示配置在yml中配置密码,可以将用户名和密码写入keystore中,命令如下:

./bin/kibana-keystore create
./bin/kibana-keystore add elasticsearch.username
./bin/kibana-keystore add elasticsearch.password

启动kibana并在Management>Security>Users页面下创建用户

5.2 file realm

该方式是在es的config目录下的users和users_roles文件中增加了用户信息。该方法在特殊状况中会非常有用,例如集群故障,安全索引出问题或者忘记了用户名密码等。做法是在每台节点上执行以下命令:

./bin/elasticsearch-users useradd myusernamejjj

根据提示输入密码,在给myusernamejjj增加角色:

./bin/elasticsearch-users.bat roles myusernamejjj -a superuser

superuser为内建的超级用户。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部