1.安装shield
bin/plugin install license
bin/plugin install shield
2.重启Elasticsearch
先关闭进程
ps–ef | grep elasticsearch
kill-9 pid
启动es
setsid./elasticsearch
3.用户配置
安装完成后,需要配置对应角色的用户,shield预定了三个用户角色
分别是:
1)admin 可以操作任何的集群和索引的动作
2)power_user 可以监控集群和执行任何索引操作
3)user 可以在任何索引上执行读操作。
配置对应角色的用户命令是:
bin/shield/esusers useradd 用户名 -r 角色
按回车输入对应密码(密码至少是6个字符或者数字长度)
用户名密码配置成功之后可以在config/shield下面看到 users和users_roles文件
users中是用户名和密码,密码是加密过的
users_roles是你建立的用户所属的角色
创建管理员用户 bin/shield/esusers useradd es_admin -r admin
登陆管理员 curl -u es_admin -XGET http://192.168.134.129:9200
如果出现失败,可能需要在/etc/elasticsearch/elasticsearch.yml中加入下面的内容:
shield: authc: realms: default: type: esusers order: 0 enabled: true files: users: "/etc/elasticsearch/shield/users" users_roles: "/etc/elasticsearch/shield/users_roles" |
创建user用户
bin/shield/esusersuseradd es_read -r user
4. 启用消息验证
bin/shield/syskeygen
将生成的秘钥复制到集群中的其余节点上(系统密钥是一个对称密钥,所以同一个密钥必须位于集群中的每个节点上。)
5.启用审核
在elasticsearch.yml:中添加shield.audit.enabled:true,启动审核功能,Shield会存储与自己Elasticsearch集群尝试和成功交互的记录,可以使用这些信息来跟踪正在对您的集群做了什么,并确定潜在安全。默认情况下,事件被记录到一个专门的elasticsearch-access.log文件中ES_HOME/logs。您还可以将事件存储在Elasticsearch索引中,以便于分析和控制记录的事件
6.HTTP方式访问Elasticsearch
1、在浏览器上访问Elasticsearch
格式:http://192.168.134.129:9200/_plugin/head/
2、在服务器上使用curl
curl -u es_admin-XGET http://192.168.134.129:9200
7.java api操作
第一种
官方的针对TransportClient中加入shield的代码配置如下
TransportClient client = newTransportClient(ImmutableSettings.builder().put("cluster.name","myClusterName").put("shield.user","transport_client_user:changeme")).addTransportAddress(newInetSocketTransportAddress("localhost",9300)).addTransportAddress(newInetSocketTransportAddress("localhost",9301));
第二种:
1、加入shield-2.3.5.jar包
2、修改setting
想要使用的用户和密码,请修改为你实际的。
importorg.elasticsearch.shield.ShieldPlugin;
Settings settings = Settings.settingsBuilder().put("cluster.name", "pasm")
.put("shield.user","adminName:adminname").build();
3.修改client
以下为你需要连接的ES的ip和port,请修改为你实际值。
Client client = TransportClient.builder().addPlugin(ShieldPlugin.class).settings(settings)
.build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.134.129"), 9200));
8.Shield用户管理基本操作
新增用户
bin/shield/esusersuseradd 用户名 -r 角色
查看所有用户
bin/shield/esuserslist
修改用户密码
bin/shield/esuserspasswd 账户
删除用户
bin/shield/esusersuserdel es_read