elasticsearch 集群登录配置
 
elasticsearch 默认集群配置好是没有登录认证的,直接就进去了,包括 kibana 也是,
这样不太安全,所以添加一个登录的过程
 
网上有很多帖子说是在 elasticsearch.yml 配置下面这几种参数
 http.cors.enabled: true
 http.cors.allow-origin: "*"
 http.cors.allow-headers: Authorization
 xpack.security.enabled: true
 xpack.security.transport.ssl.enabled: true
然后执行
 elasticsearch-setup-passwords interactive
然而我尝试在我们四台 es 集群上配置后依次启动报 Connection refused 错
 
 
另一种方式是尝试生成证书,然后引入证书(pkcs#12 format),这种方式可以,方法如下:
1. 生成 ca 证书:
  执行:$ bin/elasticsearch-certutil ca
  Please enter the desired output file [elastic-stack-ca.p12]: 直接回车
  Enter password for certs: 直接回车
  执行后 elasticsearch-7.6.1 根目录下生成 elastic-stack-ca.p12 证书
2. 根据第 1 步生成的 ca 证书,生成私钥:
  执行:$ bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
  Enter password for CA (elastic-stack-ca.p12): 直接回车
  Please enter the desired output file [elastic-certificates.p12]: 直接回车
  Enter password for elastic-certificates.p12: 直接回车
  执行后 elasticsearch-7.6.1 根目录下生成 elastic-certificates.p12 私钥
3.cd 进入 es/config 目录,创建 certs,将 elastic-certificates.p12 拷贝进去
  $ cd elasticsearch-7.6.1/config
  $ mkdir certs
  $ cp elasticsearch-7.6.1/elastic-certificates.p12 certs/
4. 同样操作,依次将 elastic-certificates.p12 拷贝到其他 3 台服务器相同路径下,
  注意 es 以普通用户执行,root 用户会报错,要对拷贝过去的证书授予普通用户权限
5. 修改 elasticsearch.yml, 配置下面 5 个参数
  $ vi config/elasticsearch.yml
  xpack.security.enabled: true
  xpack.security.transport.ssl.enabled: true
  xpack.security.transport.ssl.verification_mode: certificate
  xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
  xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
6.kill 掉 es 各个节点进程,依次重启,$ bin/elasticsearch -d
7. 集群启动成功(log 正常)后,设置密码,我这边统一都设为一样的 elastic521,好记
  $ bin/elasticsearch-setup-passwords interactive
  此时 es 登录配置就结束了,用户名默认为 elastic,密码为 elastic521,elastic 是默认
  的 es 超级用户
8. 下面是 kibana 登录,我们需要修改 $ config/kibana.yml
  elasticsearch.username: "kibana"
  elasticsearch.password: "xxx"  
  这里 xxx 是我们在第 7 步为 kibana 生成的密码
  重启 kibana,$ bin/kibana &
9. 登录 kibana,使用 kibana 登录时会 403,可以使用 elastic/elastic521 登录 kibana
  创建一个 role,再创建一个 user 绑定这个 rule
  比如创建一个 role 为 testrole,创建一个 user 为 testuser
  然后 kibana 退出超级用户,使用 testuser 登录即可
  注意同时赋予 kibana_admin 权限
10. 程序里注意添加认证,以 python 为例:
  from elasticsearch import Elasticsearch 
  es = Elasticsearch (hosts=['xx', 'xx', 'xx', 'xx'], http_auth=('elastic', 'elastic521'))
  res = es.get (index="xxx", id='xxx')
 
 
参考:https://www.codenong.com/cs109535035/