ES有很多的安全组件可用,例如: X-pack,Sarch Guard。但目前开源免费的,仅Search Guard。

1 前置条件

Elastic Search 6 服务安装成功,且成功运行。
ES的开源安全组件Search Guard-6安装成功,且成功运行。

本操作目前仅在search guard-6插件中实测成功。
更高或更低版本的search guard插件,可能在本小节的”Step3”步骤(使新密码在ES集群中生效)中个别参数有差异,可参照下述文件进行修改。

[ElasticSearch]#Search Guard#sgadmin参数说明

ES的开源安全组件Search Guard-6启用【官网演示的认证模式】,且启用成功。

2 操作步骤

下述操作建议在ES集群的master节点中执行即可。
为方便理解下述操作,假定master节点IP为172.15.3.17。

Step1 获取新密码的Search Guard的加密字符串

[root@es1 ~]#sh /usr/share/elasticsearch/plugins/search-guard-6/tools/hash.sh -p newPasswd
WARNING: JAVA_HOME not set, will use /usr/bin/java
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(hash加密串)

[ElasticSearch]修改开源安全组件Search Guard-6 用户密码-冯金伟博客园

Step2 配置master节点(node17)所有用户的新密码
(配置时,需使用到Step1中的hash加密串)

[root@es1~]#vi /usr/share/elasticsearch/plugins/search-guard-6/sgconfig/sg_internal_users.yml

[ElasticSearch]修改开源安全组件Search Guard-6 用户密码-冯金伟博客园

Step3 使新密码在ES集群的当前节点和其它所有节点中生效

[root@es1 ~]#cd /usr/share/elasticsearch/plugins/search-guard-6/tools/
[root@es1 ~]#./sgadmin.sh 
	-h 172.15.3.17 
	-cd ../sgconfig/ 
	-icl -nhnv -cacert /etc/elasticsearch/root-ca.pem 
	-cert /etc/elasticsearch/kirk.pem 
	-key /etc/elasticsearch/kirk-key.pem 
	--accept-red-cluster

[ElasticSearch]修改开源安全组件Search Guard-6 用户密码-冯金伟博客园

Step4 验证
关闭并重新打开浏览器;输入集群内任一节点的url;输入用户的新密码。
若能登录,则修改成功。

[浏览器] https://172.15.3.17:9200/_cluster/health?pretty

[ElasticSearch]修改开源安全组件Search Guard-6 用户密码-冯金伟博客园
[ElasticSearch]修改开源安全组件Search Guard-6 用户密码-冯金伟博客园

Step5 更新ES客户端/程序端的配置

3 相关补充

ElasticSearch 插件管理

查看已安装的插件

root# cd /usr/share/elasticsearch/
root# bin/elasticsearch-plugin list
search-guard-6

或 (查看集群内各节点的插件安装情况)

[浏览器] https://172.15.3.xx:9200/_cat/plugins?v

ElasticSearch 安装新插件

root# cd /usr/share/elasticsearch/
root# bin/elasticsearch-plugin install {插件名称 | 指定插件版本具体位置}
	Eg: bin/elasticsearch-plugin install x-pack
	Eg: bin/elasticsearch-plugin install file:///D:workElasticSearchx-pack-5.5.2.zip
root# bin/elasticsearch-plugin install 

ElasticSearch 卸载插件

root# cd /usr/share/elasticsearch/
root# bin/elasticsearch-plugin remove [pluginname]

Search guard 健康状态检查

要检查Search Guard是否已安装并已启动并正在运行,请访问运行状况检查端点,例如:

https://<hostname>:9200/_searchguard/health
{
  message: null,
  mode: "strict",
  status: "UP"
}

[ElasticSearch]修改开源安全组件Search Guard-6 用户密码-冯金伟博客园

补充: X-pack用户与安全管理方式

使用X-pack安全特性前,需更改配置开启xpack

xpack.security.enabled: true

查看所有用户

root# cd /usr/share/elasticsearch/
root# ./bin/elasticsearch-users list
No users found

添加用户

root# cd /usr/share/elasticsearch/
root# ./bin/elasticsearch-users useradd newUser -p newUserPasswd -r superuser

查看X-pack的License生效情况
license申请地址: https://license.elastic.co/registration

[POST方式]
root# curl -XPOST --insecure -u admin:admin 'https://172.15.3.xx:9200/_xpack/license/start_trial?acknowledge=true&pretty
{
  "acknowledged" : true,
  "trial_was_started" : false,
  "error_message" : "Operation failed: Trial was already activated."
}

[GET方式]
https://172.15.3.xx:9200/_xpack/license/
{
  "license" : {
    "status" : "active", //Current Status
    "uid" : "45e8402a-461b-4d00-b737-c778b718dede",
    "type" : "basic",
    "issue_date" : "2019-11-14T15:54:48.364Z", // issue_date
    "issue_date_in_millis" : 1573746888364,
    "expiry_date" : "2020-09-27T03:33:11.423Z",// expiry_date
    "expiry_date_in_millis" : 1601177591423,   
    "max_nodes" : 1000,
    "issued_to" : "xxx_elastic", //Cluster Name: xxx_elastic
    "issuer" : "elasticsearch",  //OS User: elasticsearch
    "start_date_in_millis" : -1
  }
}

X 文献

Elasticsearch安全认证的几种方法 – 高屋建瓴(ling)/CSDN
[ElasticSearch]#Search Guard#sgadmin参数说明 – 强烈推荐/博客园
[ElasticSearch] ES集群状态由非正常状态(red)恢复为正常状态(green)的思路与实践 – 强烈推荐/博客园
[ElasticSearch]#解决问题#修改Search Guard密码时 报错:ERR: Seems there is no Elasticsearch running on localhost:9300 – Will exit – 博客园

search-guard-7 官网 : 配置密码
search-guard-6 官网 : 安装SearchGuard
search-guard-6 官网 : 添加用户
search-guard-6 官网 : 使用sgadmin与pem证书
elastic 官网 : x-pack设置用户密码
elasticsearch.yml 配置项详解 – 推荐/官网

申请elasticsearch中x-pack插件许可证 – 博客园

重置elasticsearch的超级管理员密码 – 亲测无效/简书
Elasticsearch(七) – X-Pack 用户管理 – CSDN