一、安装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安装与配置的更多相关文章

  1. elasticsearch 6.x 安装search guard

    前言 es之前版本一直无用户验证功能,不过官方有提供一x-pack,但是问题是付费.在es的6.3.2版本中,已经集成了x-pack,虽然es团队已经对x-pack开源,但是在该版本中如果需要使用到安 ...

  2. ELK之elasticsearch6安装认证模块search guard

    参考:https://www.cnblogs.com/marility/p/9392645.html 1,安装环境及软件版本 程序 版本 安装方式  elasticsearch  6.3.1  rpm ...

  3. Elasticsearch 5.0 安装 Search Guard 5 插件 (五)

    一.Search Guard 简介 Search Guard  是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...

  4. Elasticsearch 5.0 安装 Search Guard 5 插件

    一.Search Guard 简介 Search Guard  是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...

  5. (转) Elasticsearch 5.0 安装 Search Guard 5 插件

    一.Search Guard 简介 Search Guard  是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...

  6. ELK之安装了search guard认证后安装elasticsearch-head

    安装searc guard参考https://www.cnblogs.com/minseo/p/10576126.html 安装elasticsearch-head参考 https://www.cnb ...

  7. 原创 | 手摸手带您学会 Elasticsearch 单机、集群、插件安装(图文教程)

    欢迎关注笔者的公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site/ ...

  8. ELK 架构之 Elasticsearch、Kibana、Logstash 和 Filebeat 安装配置汇总(6.2.4 版本)

    相关文章: ELK 架构之 Elasticsearch 和 Kibana 安装配置 ELK 架构之 Logstash 和 Filebeat 安装配置 ELK 架构之 Logstash 和 Filebe ...

  9. elastic-search单机部署以及中文分词IKAnalyzer安装

    前提条件 elasticsearch使用版本5.6.3,需要jdk版本1.8,低于该版本不能使用 下载 https://artifacts.elastic.co/downloads/elasticse ...

随机推荐

  1. Android学习系列(5)--App布局初探之简单模型

    人类科技的进步源自探索,探索来自于发现本原,当然App布局没这么先进,本文也只是一个归类总结.这篇文章是Android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. Androi ...

  2. iOS - Label 数字动态变化

    1.数字动态变化 具体实现代码见 GitHub 源码 QExtension QCountingLabel.h /// 文本数字变化方式枚举 typedef NS_ENUM(NSUInteger, QC ...

  3. Python学习笔记011——内置函数eval()

    1 描述 eval()  函数用来执行一个字符串表达式,并返回表达式的值 2 语法 原文 eval(expression[, globals=None[, locals=None]]) express ...

  4. 为什么百度首页的HTML源代码最后一行要多一行?浪费空间呀!

     为什么百度首页的HTML源代码最后一行要多一行?浪费空间呀!

  5. 代码解说Android Scroller、VelocityTracker

    在编写自己定义滑动控件时经常会用到Android触摸机制和Scroller及VelocityTracker.Android Touch系统简单介绍(二):实例具体解释onInterceptTouchE ...

  6. JSP页面中文乱码

    近期搭建了一个JAVA WEB项目,引入了国际化的ResourceBundle. 顺便赞一个,Eclipse Mars,自带了中文转unicode编码的功能. ① 根据语言选择,初始化Resource ...

  7. Sql Server添加单引号

    " ' "(单引号)的运用:在sql server中,两个" ' "(单引号)在拼接字符串的情况下运用,就是表示拼接上了一个" ' "单引号 ...

  8. php json的相关操作

    类与json <?php class userinfo { var $user_name; var $user_ip; var $user_logintime; } $u = new useri ...

  9. 江南白衣 Java性能优化PPT

    会后江南白衣花费数日整理PPT,到1.4版本共66页,内容翔实且旁征博引,不断校正且力求做到极致的匠艺精神值得尊敬! 技术大牛飒然Hang如是说到: “技术大神中,除了陈皓就是白衣了,四十岁还能钻研. ...

  10. unity5 Text

    unity5中,添加Text对象: 在其它对象的脚本中如果想引用此Text,则应定义: public UnityEngine.UI.Text myText; 然后把对象拖到变量上即可. 注: 1,需要 ...