文章目录
- X-Pack简介
- 之前的安全方案
- ES开启认证
- ES服务升级https协议
- 开启集群节点之间的证书认证
X-Pack简介
X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。
X-Pack的发展演变:
1,5.X版本之前:没有x-pack,是独立的:security安全,watch查看,alert警告等独立单元。
2,5.X版本:对原本的安全,警告,监视,图形和报告做了一个封装,形成了x-pack。
3,6.3 版本之前:需要额外安装。
4,6.3版本及之后:已经集成在一起发布,无需额外安装,基础安全属于付费黄金版内容。 7 .1版本:基础安全免费
X-Pack分基础级、黄金级、白金级,不同等级功能不同,基础级免费所以一般我们使用基础级
这里我们使用X-Pack来做
之前的安全方案
免费之前,一般采用以下方案保证安全:
方案一:全部“裸奔”,相信这在国内占据了非常大的比重。
内网部署,不对外提供服务。或者ES作为业务基础支撑,不公网开放9200等常用端口,开放的是业务的服务端口。
可能暴露问题:公司或团队内部开放9200、5601端口,基本head插件、kibana都能连接,极易导致线上索引或数据可能被误删。
方案二:简单防护。
一般使用Nginx身份认证+防火墙策略控制。 (这种方式后续可以测试验证一下)
方案三:整合使用了第三方安全认证方案。
比如:SearchGuard、ReadonlyREST。
方案四:付费购买了Elastic-Xpack黄金版或白金版服务。
一般是银行等土豪大客户,对安全、预警、机器学习等付费功能需求迫切,如:宁波银行付费购买白金服务。
ES开启认证
ES环境部署不在赘述,参考之前博客
修改 config/elasticsearch.yml配置文件,增加以下两项内容,开启 X-Pack认证
xpack.security.enabled: true #X-Pack 认证总开关,开启之后访问ES 9200就必须进行用户名和密码认证
xpack.security.transport.ssl.enabled: true # 开启总开关后必须开启该选项,否则无法启动
并设置ES用户密码,执行完成后记得保存自动修改的用户名和密码防止忘记。
bin/elasticsearch-setup-passwords auto
再次访问ES http://10.XX.XX.22:9200 就要求输入用户名密码才能访问
ES服务升级https协议
执行以下命令生成证书
/bin/elasticsearch-certutil ca #直接回车
/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 #直接回车 --ca后的内容为 第一条名称生成的 文件名称
功生成两个文件:elastic-certificates.p12 elastic-stack-ca.p12
将文件放置在config/cert目录下 (需要新建cert目录)
修改 config/elasticsearch.yml配置文件,增加以下内容,开启 https访问:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: cert/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: cert/elastic-certificates.p12
重启并再次访问ES服务必须通过https 访问 https://10.XX.XX.22:9200
开启集群节点之间的证书认证
修改 config/elasticsearch.yml配置文件,增加以下内容:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: cert/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: cert/elastic-certificates.p12
重启服务即可。后续有机会验证一下
参考文档:https://blog.csdn.net/laoyang360/article/details/90554761
https://blog.csdn.net/github_30641423/article/details/123746349