elasticsearch安装与使用(5)-- search guard安装与配置
一、安装search guard插件必须要安装两部分:
①search-guard-xx
②search-guard-ssl
(XX指的是与elasticsearch引擎对应的版本)
github地址:
https://github.com/floragunncom/search-guard
这里以elasticsearch 2.3.5版本为例
进入到elasticsearch安装目录(如果是用RPM包安装的,默认位置是,也可用命令whereis elasticsearch查看安装位置)
cd /usr/share/elasticsearch
安装方法:
(1)search-guard
elasticsearch版本:elasticsearch 2.x
bin/plugin install -b com.floragunn/search-guard-/<version>
elasticsearch 2.3.5版本:
bin/plugin install -b com.floragunn/search-guard-/2.3.5.10
elasticsearch版本:elasticsearch 5.x
bin/elasticsearch-plugin install -b com.floragunn:search-guard-:<version>
(2)search-guard-ssl
elasticsearch 2.x
bin/plugin install -b com.floragunn/search-guard-ssl/<version>
elasticsearch 2.3.5版本:
bin/plugin install -b com.floragunn/search-guard-ssl/2.3.5.19
elasticsearch 5.x
bin/elasticsearch-plugin install -b com.floragunn:search-guard-ssl:<version>
注意事项:
当es的版本大于2.2时,安装过程中可能会有如下提示:

这个是正常现象,只要看到有以下提示就表示安装成功:
Installed search-guard-ssl into /usr/share/elasticsearch/plugins/search-guard-ssl
Installed search-guard-2 into /usr/share/elasticsearch/plugins/search-guard-2
二、生成证书文件
1.下载search guard 源码工具,里面包含证书生成工具
git clone https://github.com/floragunncom/search-guard-ssl.git
2.切换到search guard ssl 源码目录,进入example-pki-scripts文件夹,里面有3个脚本
cd search-guard-ssl/example-pki-scripts
gen_client_node_cert.sh 创建客户端证书
gen_node_cert.sh 创建节点证书
gen_root_ca.sh 创建根证书
2.进入example-pki-scripts/etc目录,里面是证书生成时的一些配置文件,可根据需要修改相应的信息
root-ca.conf 根证书配置
signing-ca.conf 签名证书配置
其中自定义的信息如下:
.domainComponent = "www.test.com” 域名
.domainComponent = "www.test.com" 域名
organizationName = "Test" 组织名称
organizationalUnitName = "Test Root CA" 组织单位名称
commonName = "Test Root CA" 通用名称
以上信息随便填写,只要保证生成证书时跟证书、签名证书中的信息一致即可
3.生成证书
返回到example-pki-scripts目录下,修改example.sh文件:
修改之后如下:
#!/bin/bash set -e ./clean.sh ./gen_root_ca.sh ./gen_node_cert.sh && ./gen_node_cert.sh && ./gen_node_cert.sh ./gen_client_node_cert.sh test ./gen_client_node_cert.sh test
参数说明:
./gen_root_ca.sh 12345678 12345678
第一个参数为CA_PASS,即CA密码(根证书密码)
第二个参数为TS_PASS,即TS密码(truststore,信任证书密码)
./gen_node_cert.sh 0 12345678 12345678
第一个参数为node编号,生成证书后的文件名为node-0*
第二个参数为KS_PASS(keystore文件密码)
第三个参数为CA_PASS
./gen_client_node_cert.sh test 12345678
第一个参数为客户端节点名称,生成证书后的文件名为test*
第二个参数为KS_PASS
第三个参数为CA_PASS
4.运行example.sh文件,会在当前目录下生成各种证书文件:
sh example.sh

三、配置
1.证书上传到elasticsearch
将example-pki-scripts文件夹中的node-0-keystore.jks和truststore.jks复制到elasticsearch的配置目录中(/etc/elasticsearch)
cp node--keystore.jks /etc/elasticsearch cp truststore.jks /etc/elasticsearch
将example-pki-scripts文件夹中的test-keystore.jks和truststore.jks复制到elasticsearch程序目录下的plugins/search-guard-2/sgconfig下,如果这个节点是主节点,则所有节点的search guard配置都从这个节点中配置,然后分发到其它节点中
cp test-keystore.jks /usr/share/elasticsearch/plugins/search-guard-/sgconfig/ cp truststore.jks /usr/share/elasticsearch/plugins/search-guard-/sgconfig/
2.修改elasticsearch配置文件:
vim /etc/elasticsearch/elasticsearch.yml
修改以下配置:
cluster.name: test node.name: node-0 54 network.host: 0.0.0.0
增加以下配置:
# search-guard配置 # 配置ssl searchguard.ssl.transport.enabled: true searchguard.ssl.transport.keystore_filepath: node--keystore.jks searchguard.ssl.transport.keystore_password: searchguard.ssl.transport.truststore_filepath: truststore.jks searchguard.ssl.transport.truststore_password: searchguard.ssl.transport.enforce_hostname_verification: false searchguard.ssl.transport.resolve_hostname: false # 配置http # http配置,这里我只是为了测试方便,配置完,应该设置为true searchguard.ssl.http.enabled: false searchguard.ssl.http.keystore_filepath: node--keystore.jks searchguard.ssl.http.keystore_password: searchguard.ssl.http.truststore_filepath: truststore.jks searchguard.ssl.http.truststore_password:
searchguard.allow_all_from_loopback: true # 这里注意,下面的配置一定要和签的客户端证书一致,否则不能插入配置 searchguard.authcz.admin_dn: - CN=test, OU=client, O=client, L=Test, C=DE
注意事项:
配置文件中的所有配置项开头必须要留一个空格符,否则会启动不了elasticsearch,这个是配置文件的格式
3.配置完后重启elasticsearch
systemctl restart elasticsearch systemctl status elasticsearc
四、将配置写入运行中的elasticsearch
进入到elasticsearch安装目录中
cd /usr/share/elasticsearch/
运行如下命令将配置写入到elasticsearch中:
./plugins/search-guard-/tools/sgadmin.sh -cn 集群名称 -h hostname -cd plugins/search-guard-/sgconfig -ks plugins/search-guard-/sgconfig/admin-keystore.jks -kspass password -ts plugins/search-guard-/sgconfig/truststore.jks -tspass password -nhnv
hostname:指的是elasticsearch的elasticsearch.yml配置文件中 network.host 设置的值
根据上面的配置,输入的命令如下:
./plugins/search-guard-/tools/sgadmin.sh -cn test -h 0.0.0.0 -cd plugins/search-guard-/sgconfig -ks plugins/search-guard-/sgconfig/test-keystore.jks -kspass -ts plugins/search-guard-/sgconfig/truststore.jks -tspass -nhnv
需要注意:
如果提示没有操作权限,则必须先把hash.sh文件的权限开放
chmod -R plugins/search-guard-/tools/sgadmin.sh
的是这时候elasticsearch的服务必须是运行状态。如果插入配置失败,检查配置文件,比如前面提到的,生成客户端证书的时候dname的参数 必须与配置文件中searchguard.authcz.admin_dn:下的认证列表进行对应。
如成功写入配置,则会显示以下信息:

五、search guard 配置文件介绍
search-guard中的用户权限管理
相关配置文件的介绍
searchguard 主要有5个配置文件在plugins/search-guard-2/sgconfig 下:
1、sg_config.yml:主配置文件不需要做改动。
2、sg_internal_users.yml:本地用户文件,定义用户密码以及对应的权限。
3、sg_roles.yml:权限配置文件
4、sg_roles_mapping.yml:定义用户的映射关系
5、sg_action_groups.yml:定义权限
修改内置用户密码,然后再运行一次search guard 配置写入命令。
1.则先用plugins/search-guard-2/tools/hash.sh生成hash字符串,生成密码:
cd /usr/share/elasticsearch/ plugins/search-guard-2/tools/hash.sh -p
如果提示没有操作权限,则必须先把hash.sh文件的权限开放
chmod -R plugins/search-guard-/tools/hash.sh
获得哈希生成后的密码

2.将字符串复制到sg_internal_users.yml文件的对应用户密码位置,在密码下面记得写入原密码的提示,难保你那天忘记了。
vim plugins/search-guard-/sgconfig/sg_internal_users.yml

3.添加用户权限
vim /usr/share/elasticsearch/plugins/search-guard-/sgconfig/sg_roles_mapping.yml
在39行处的sg_all_access添加你新增的用户名,就获得所有权限了

4.重新写入配置
先回到elasticsearch的安装文件夹
cd /usr/share/elasticsearch/
./plugins/search-guard-/tools/sgadmin.sh -cn test -h 0.0.0.0 -cd plugins/search-guard-/sgconfig -ks plugins/search-guard-/sgconfig/test-keystore.jks -kspass -ts plugins/search-guard-/sgconfig/truststore.jks -tspass 12345678 -nhnv
5.测试
curl -XGET "http://shifu:123456@127.0.0.1:9200"
如果密码设置成功则显示

现在每次想访问你网站的9200端口都必须要有搜索认证的保护了。

elasticsearch安装与使用(5)-- search guard安装与配置的更多相关文章
- elasticsearch 6.x 安装search guard
前言 es之前版本一直无用户验证功能,不过官方有提供一x-pack,但是问题是付费.在es的6.3.2版本中,已经集成了x-pack,虽然es团队已经对x-pack开源,但是在该版本中如果需要使用到安 ...
- ELK之elasticsearch6安装认证模块search guard
参考:https://www.cnblogs.com/marility/p/9392645.html 1,安装环境及软件版本 程序 版本 安装方式 elasticsearch 6.3.1 rpm ...
- Elasticsearch 5.0 安装 Search Guard 5 插件 (五)
一.Search Guard 简介 Search Guard 是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...
- Elasticsearch 5.0 安装 Search Guard 5 插件
一.Search Guard 简介 Search Guard 是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...
- (转) Elasticsearch 5.0 安装 Search Guard 5 插件
一.Search Guard 简介 Search Guard 是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...
- ELK之安装了search guard认证后安装elasticsearch-head
安装searc guard参考https://www.cnblogs.com/minseo/p/10576126.html 安装elasticsearch-head参考 https://www.cnb ...
- 原创 | 手摸手带您学会 Elasticsearch 单机、集群、插件安装(图文教程)
欢迎关注笔者的公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site/ ...
- ELK 架构之 Elasticsearch、Kibana、Logstash 和 Filebeat 安装配置汇总(6.2.4 版本)
相关文章: ELK 架构之 Elasticsearch 和 Kibana 安装配置 ELK 架构之 Logstash 和 Filebeat 安装配置 ELK 架构之 Logstash 和 Filebe ...
- elastic-search单机部署以及中文分词IKAnalyzer安装
前提条件 elasticsearch使用版本5.6.3,需要jdk版本1.8,低于该版本不能使用 下载 https://artifacts.elastic.co/downloads/elasticse ...
随机推荐
- SpringBoot定时器
使用Component注解注解一个类,这个类就变成了一个组件.组件可以有很多不同的特性,比如Scheduled注解为组件的某个函数添加了定时的特性. @Component public class M ...
- android调节屏幕亮度
一:只改变当前程序android屏幕亮度(1)方法:lp.screenBrightness 取值 0.0 -- 1.0 ※设定值(float)的范围,默认小于 0(系统设定).0.0(暗)-1.0(亮 ...
- GO语言学习 ---nil
nil是什么 相信写过Golang的程序员对下面一段代码是非常非常熟悉的了: if err != nil { // do something.... } 当出现不等于nil的时候,说明出现某些 ...
- RHCE7 管理II-3使用VIM编辑器
vim的不同版本: 1.vim-minial 提供vi和相关命令.在RHEL 7的最小安装中 2.vim-enhanced 提供vim命令.提供语法突出显示.文件类型插件和拼写检查等功能 3.vim- ...
- RCU介绍
RCU原理: RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的.对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个 ...
- Linux内核(11) - 子系统的初始化之内核选项解析
首先感谢国家.其次感谢上大的钟莉颖,让我知道了大学不仅有校花,还有校鸡,而且很多时候这两者其实没什么差别.最后感谢清华女刘静,让我深刻体会到了素质教育的重要性,让我感到有责任写写子系统的初始化. 各个 ...
- c#实现用SQL池(多线程),定时批量执行SQL语句
在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题, ...
- 工作中常用的mysql操作
一.在一个数据库中定义的存储过程或者是函数在另一数据库的存储过程中引用 1.我首先在数据库player_db中构建了一个函数:p_exp_to_level BEGIN ; ; RETURN v_lev ...
- 禁止用户使用密码的方式登录服务器,让其使用key的方式登录
这里我的远程登录工具xshell 所以这里我要做的是 第一步是在xshell中配置公私钥 密钥类型选择为rsa,长度为2048,并点击下一步,如下所示: 继续下一步 如果给密钥设置了密码,那么在使用这 ...
- 【OC语法快览】二、存取方法
Accessors 存取方法 All instance variables are private in Objective-C by default, so you should use acces ...