1.离线安装x-pack:
(6版本以后内置xpack,只需要开启)
下载es对应的相应版本的x-pack,修改版本号即可通过官方链接下载:
https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-6.1.1.zip
下载后放到指定位置如/usr/
x-pack-6.1.1.zip
并到es安装目录下运行:
./bin/elasticsearch-plugin install file://
/usr/
x-pack-6.1.1.zip
安装完重启即可,默认用户 elasitc:changeme
restful访问方式改为 curl -u elastic:changeme -XGET .......
安装后使用head修改yml文件:
head需要:
http.cors.enabled: true
http.cors.allow-origin:’*’
安装x-pack后需要:
http.cors.allow-headers: “Authorization”
访问head格式更改为:
http://localhost:9100/?auth_user=elastic&auth_password=changeme
破解x-pack参考:
http://blog.csdn.net/mvpboss1004/article/details/65445023
http://blog.csdn.net/qq_20641565/article/details/78286894
2.xpack.security权限简介
xpack权限均基于角色(role)分配,具体用户(user)基于相应角色(role)创建。具体权限如下:
集群层面:
all:所有集群管理操作,如快照,节点关闭/重新启动,设置更新,重新路由或管理用户和角色。
monitor:所有集群只读操作,如集群健康状态,热线程,节点信息,节点和集群统计信息,快照/恢复状态,挂起的集群任务。
monitor_ml:所有只读机器学习操作,例如获取有关数据输入,作业,模型快照或结果的信息。
monitor_watcher:所有只读的观察者操作,如获取手表和观察者的统计数据。
manage:构建monitor并添加更改集群中的值的集群操作。 这包括快照,更新设置和重新路由。此权限不包括管理安全性的功能。
manage_index_templates:索引模板上的所有操作。
manage_ml:所有机器学习操作,如创建和删除数据Feed,作业和模型快照。
manage_pipeline:所有摄取管道的操作
manage_security:所有安全相关的操作,如用户和角色的CRUD操作和缓存清除。
manage_watcher:所有观察者操作,如手表,执行,激活或确认。
transport_client:传输客户端连接所需的所有权限。 远程集群需要启用跨群集搜索。
索引层面:
all:对索引的任何操作
monitor:监控所需的所有操作(恢复,细分信息,索引统计信息和状态)
manage:所有monitor权限加索引管理(别名,分析,缓存清除,关闭,删除,存在,刷新,映射,打开,强制合并,刷新,设置,搜索碎片,模板,验证)。
view_index_metadata:对索引元数据(别名,别名,获取索引,存在,字段映射,映射,搜索碎片,类型存在,验证,加热器,设置)的只读访问。 这个特权主要可供Kibana用户使用。
read:只读操作
read_cross_cluster:只能从远程集群访问搜索操作
index:插入更新文档,不能查删。
create:创建文档(不能查删(包括自己创建的文档),可以更新文档)
delete:删除文档(不能查曾,只能删除文档)
write: 对文档执行所有写入操作的权限,其中包括索引,更新和删除文档以及执行批量操作的权限。还授予对更新映射操作的访问权限。
delete_index:对指定的索引有删除权利(只能删除,不能建查任何索引)
create_index:对指定的索引有创建权利(只能创建,不能查删任何索引)
文档层面:
文档级安全权限限制对索引中特定文档的访问,可以再角色定义中通过查询匹配来指定访问文档的权限
字段层面:
字段级安全权限限制对文档中特定字段的访问,可以在角色定义中指定每个角色可以访问的字段
查询时只显示规定字段,其余权限归属索引。
3.java客户端api
maven pom.xml导入(maven库里没有xpack包则需要用es官网的maven库):
<repositories>
<repository>
<id>elasticsearch-releases</id>
<url>https://artifacts.elastic.co/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.1.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>x-pack-transport</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
连接es集群:
Settings settings = Settings.builder()
.put("cluster.name", "my-application")
.put("xpack.security.transport.ssl.enabled", false)
.put("xpack.security.user", "elastic:changeme")
.put("client.transport.sniff", true)
.build();
client = new PreBuiltXPackTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
XPackClient xClient = new XPackClient(client);