1.X-Pack介绍
X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。
自6.8以及7.1+版本之后,基础级安全永久免费。
2.单节点ES X-Pack安全如何配置
2.1 安全配置
默认情况下,拥有安全免费许可证时,Elasticsearch安全功能被禁用。 要启用安全功能,需要设置xpack.security.enabled。
在每个节点的elasticsearch.yml配置文件中,新增:
xpack.security.enabled: true
2.2 为节点间通信配置传输层安全性(TLS / SSL)
使用范围:配置传输层安全性适用于具有多个节点的集群以及需要外网通信访问的单节点ES。
使用环回地址127.0.0.1的单节点ES可以不用配置。
2.2.1 加密通信
Elasticsearch节点可能存储是机密的数据,而无处不在的网络攻击对这些数据垂涎欲滴。
网络攻击包括对数据的嗅探,对数据的操纵,以及试图获得对服务器的访问权限,进而访问存储数据的文件。
保护节点的安全有助于降低来自网络的攻击的风险。
2.2.2 生成节点证书
1、证书实现加密通信的原理
TLS需要X.509证书(X.509 证书是一个数字证书,它使用 X.509 公有密钥基础设施标准将公有密钥与证书中包含的身份相关联。X.509 证书由一家名为证书颁发机构 (CA) 的可信实体颁发。CA 持有一个或多个名为 CA 证书的特殊证书,它使用这种证书来颁发 X.509 证书。只有证书颁发机构才有权访问 CA 证书)才能对与之通信的应用程序执行加密和身份验证。 为了使节点之间的通信真正安全,必须对证书进行验证
。
在Elasticsearch集群中验证证书真实性的推荐方法是信任签署证书的证书颁发机构(CA)。
这样,只需要使用由同一CA签名的证书,即可自动允许该节点加入集群。
2、借助elasticsearch-certutil命令生成证书
bin/elasticsearch-certutil ca -out config/elastic-certificates.p12 -pass ""
2.2.3 配置加密通信
启用安全功能后,必须使用TLS来确保节点之间的通信已加密。
在elasticsearch.yml中心新增配置如下:
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
2.3 重启ES
2.4 设置集群密码
借助:elasticsearch-setup-passwords 设置集群密码。
核心:
auto - 随机生成密码。
interactive - 自定义不同用户的密码。
注意:必须配置好xpack之后,才能设置密码。否则会报错。
./bin/elasticsearch-setup-passwords interactive
会有很多密码配置(/ω\)
ps:上一张我的配置文件
cluster.name: my-firstApplication
node.name: node-1
path.data: /path/to/data
path.logs: /path/to/logs
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
#设置9200端口可以对外访问;比如head插件连es
http.cors.enabled: true
http.cors.allow-origin: "*"
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
3、多节点集群X-Pack安全如何配置?
最简单的方法,
假定是初始部署集群阶段。
- 步骤1:清空data文件;
- 步骤2:将配置好的带证书的文件copy到另一台机器;
- 步骤3:根据集群配置ip、角色等信息即可。
4、配置小结
X-Pack安全配置的核心三步骤:
- 第一:设置:xpack.security.enabled: true。
- 第二:生成TLS证书。
- 第三:配置加密通信。
- 第四:设置密码。
这些对于安全来说只是皮毛,更多的角色、权限、Space需要借助Kibana实现。
5、集成springboot
5.1 pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
5.2修改配置文件
spring:
elasticsearch:
rest:
uris: http://192.168.0.10:9200
username: kibana
password: wang123456