Elasticsearch、Elasticsearch-head、Kibana 安全设置账号密码验证登陆
X-Pack 是 Elastic Stack 的一个扩展,提供安全性、警报、监视、报告、机器学习等功能。 安装 Elasticsearch 7.x 时,会默认安装X-Pack,无需单独安装,且基础级安全永久免费。
操作步骤:
- 在 elasticsearch 的 config 目录下的 elasticsearch.yml 的底部添加下面配置
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
xpack.security.enabled: true
xpack.security.audit.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
- 使用 非root 用户 启动 elasticsearch 服务
- 新开一个窗口 用 root 用户 在elasticsearch 根目录下运行以下命令
bin/elasticsearch-setup-passwords interactive
输入 y 确认配置密码,然后按要求分别输入密码
或者可以使用以下方式生成随机密码:
bin/elasticsearch-setup-passwords auto
- 在 kibana 的 config 目录下的 kibana.yml 的底部添加下面配置,账号为 elastic ,密码为上面第3步为 elastic 设置的密码
# 配置登陆账号密码
elasticsearch.username: "elastic"
elasticsearch.password: "your_password"
如果不希望账号密码出现在配置文件中,可以使用以下方式存储在密钥库中
在kibana安装目录下,使用 非root用户 运行以下命令以创建 Kibana 密钥库并添加安全设置
bin/kibana-keystore create
bin/kibana-keystore add elasticsearch.username
bin/kibana-keystore add elasticsearch.password
如果想要删除,可以使用 remove 参数
bin/kibana-keystore remove elasticsearch.username
bin/kibana-keystore remove elasticsearch.password
- 重启 elasticsearch、elasticsearch-head、kibana
- elasticsearch、kibana的访问方式照常,elasticsearch-head 的访问网址为
http://<服务器IP地址>:9100/?auth_user=elastic&auth_password=<PASSWORD>
其中,账号密码为 第3步 设置的 elastic 和 它对应的密码
SpringBoot 中 Elasticsearch 配置类 注册 RestHighLevelClient Bean 的方式
private String host = 127.0.0.0;//修改为 elasticsearch 服务器地址
private Integer port = 9200;
private String scheme = "http";
private String userName = "elastic";
private String password = "your_password"; // 修改为你设置的密码
@Bean
public RestHighLevelClient restHighLevelClient(){
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(userName, password));
return new RestHighLevelClient(
RestClient.builder(
new HttpHost(host,port,scheme)
).setHttpClientConfigCallback(httpClientBuilder -> {
httpClientBuilder.disableAuthCaching();
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
})
);
}
- 可以在 Stack Management 中 管理用户 和 角色
入口:主页 → 管理 Elastic Stack → 安全性设置
或者直接访问地址:
- 用户管理
http://<服务器IP>:5601/app/kibana#/management/security/users
- 角色管理
http://<服务器IP>:5601/app/kibana#/management/security/roles
更多详情请参考 官方文档