| 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/ |