ES X-Pack基础安全如何配置
前提要求ELK版本为7.1+版本,7.1+版本的基础安全是免费提供的,这里必须点赞。
-
在elasticsearch中生成证书
./bin/elasticsearch-certutil ca -out config/elastic-certificates.p12 -pass ""
或者
./bin/elasticsearch-certutil cert \ --ca elastic-stack-ca.p12 \ --dns localhost \ --ip 127.0.0.1,::1 \ --out config/certs/node-1.p12 # --ca为CA证书路径名称 # -dns为节点DNS # --ip为节点ip # --out为生成节点证书的路径和名称等,输出文件是PKCS#12密钥库,其中包括节点证书,节点密钥和CA证书 # 或者使用命令 bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 效果跟上面这个一样,生成一个p12结尾的证书
提取用户证书:
openssl pkcs12 -in test.p12 -clcerts -nokeys -out cert.pem //pem格式
openssl pkcs12 -in test.p12 -clcerts -nokeys -out cert.crt //crt格式
如果需要携带秘钥,则去掉 -nokeys
openssl pkcs12 -in test.p12 -clcerts -out cert.pem //pem格式
openssl pkcs12 -in test.p12 -clcerts -out cert.crt //crt格式
提取私钥:
openssl pkcs12 -in test.p12 -nocerts -out key.pem
清除秘钥中的密码(在把秘钥部署到某些服务器上时可能需要清除密码)
openssl rsa -in key.pem -out newkey.pem -
编辑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: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
-
启动elasticsearch
./bin/elasticsearch -d
-
设置ELK各个组件的密码
./bin/elasticsearch-setup-passwords auto
或者自定义密码
./bin/elasticsearch-setup-passwords interactive
-
logstash中输出到elasticsearch的需要加上上一步生成的es用户名和密码,修改logstash的配置文件
output { elasticsearch { hosts => ["192.168.72.135:9200"] index => "%{[@metadata][test]}" user => "elastic" password => "l03xgeIOxmWDRNveVjMm" codec => json } stdout{ codec => rubydebug { metadata => true } } }
-
kibana启动也需要es的用户名和密码,修改kibana.yml配置文件
elasticsearch.username: "elastic" elasticsearch.password: "l03xgeIOxmWDRNveVjMm"
-
last
前面主要对elasticsearch的安全做了配置,更细分的权限配置在kibana中才能进行配置,
里面可以定义用户和角色,角色对应各种权限很丰富,可以针对索引,和命名空间,只读等等个性化的权限控制.
如下我创建了一个test用户,test角色,权限他只能访问test-1这一个索引,和只能查看日志
使用test账号登录可以看到左侧工程菜单里只有个日志功能,设置功能进去也没有权限,因为没给它权限,只能看test-1索引的日志。
over