文章标题

来源:互联网 发布:软件著作权颁发机构 编辑:程序博客网 时间:2024/06/04 01:12

前言
接着上文书说,上文我们已经安装了 es 的各种插件 今天安装的是安全的插件可以将用户的权限分开
一、安装search guard插件必须要安装两部分:
①search-guard-xx (XX指的是与elasticsearch引擎对应的版本)
②search-guard-ssl
各种版本下载地址【http://www.mvnrepository.com/artifact/com.floragunn】
这里我们一2.3.3为例因为我们的环境上的都是这个版本。
进入elasticsearch安装目录@
cd /usr/local/soft/elasticsearch-2.3.3
安装 ps:【https://github.com/floragunncom/search-guard/wiki】需要版本对用
(1)search-guard
elasticsearch版本:elasticsearch 2.x
bin/plugin install -b com.floragunn/search-guard-2/
elasticsearch 2.3.3版本:@
bin/plugin install -b com.floragunn/search-guard-2/2.3.3.12
elasticsearch版本:elasticsearch 5.x
bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:

(2)search-guard-ssl
elasticsearch 2.x
bin/plugin install -b com.floragunn/search-guard-ssl/
elasticsearch 2.3.3版本:@
bin/plugin install -b com.floragunn/search-guard-ssl/2.3.3.21
elasticsearch 5.x
bin/elasticsearch-plugin install -b com.floragunn:search-guard-ssl:

注意事项:
当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
二、生成证书文件
{考虑到有的环境不能联网 可以直接将es目录下的search-guard-ssl scp 发送到另一个环境中 这样就要执行 sh clean.sh 命令 清空已经生成的jks文件就可以了省去了下载的步骤}
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
3.生成证书
返回到example-pki-scripts目录下,修改example.sh文件:
修改之后如下:

!/bin/bash

set -e

./clean.sh

./gen_root_ca.sh 12345678 12345678

./gen_node_cert.sh 0 12345678 12345678&& ./gen_node_cert.sh 1 12345678 12345678 && ./gen_node_cert.sh 2 12345678 12345678

./gen_client_node_cert.sh test 12345678 12345678

参数说明:
./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 ./*.jks /usr/local/soft/elasticsearch-2.3.3/config/
cp ./*.jks /usr/local/soft/elasticsearch-2.3.3/plugins/search-guard-2/sgconfig/
将example-pki-scripts文件夹中的test-keystore.jks和truststore.jks复制到elasticsearch程序目录下的plugins/search-guard-2/sgconfig下,如果这个节点是主节点,则所有节点的search guard配置都从这个节点中配置,然后分发到其它节点中
ps这里可能会遇到些问题 其他的节点在es的/plugins/下安装search-guard-xx (XX指的是与elasticsearch引擎对应的版本)
②search-guard-ssl
cp *.jks /usr/local/soft/elasticsearch-2.3.3/plugins/search-guard-2/sgconfig/

2.修改elasticsearch配置文件:
vim /etc/elasticsearch/elasticsearch.yml
增加如下配置{前边要有空格}
searchguard.ssl.transport.enabled: true
searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks
searchguard.ssl.transport.keystore_password: 12345678
searchguard.ssl.transport.truststore_filepath: truststore.jks
searchguard.ssl.transport.truststore_password: 12345678
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false

配置http

http配置,这里我只是为了测试方便,配置完,应该设置为true

searchguard.ssl.http.enabled: true
searchguard.ssl.http.keystore_filepath: node-0-keystore.jks
searchguard.ssl.http.keystore_password: 12345678
searchguard.ssl.http.truststore_filepath: truststore.jks
searchguard.ssl.http.truststore_password: 12345678
searchguard.allow_all_from_loopback: true

这里注意,下面的配置一定要和签的客户端证书一致,否则不能插入配置

searchguard.authcz.admin_dn:
- CN=test, OU=client, O=client, L=Test, C=DE
四、将配置写入运行中的elasticsearch
进入到elasticsearch安装目录中
cd /usr/share/elasticsearch/
运行如下命令将配置写入到elasticsearch中:
./plugins/search-guard-2/tools/sgadmin.sh -cn 集群名称 -h hostname -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/admin-keystore.jks -kspass password -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass password -nhnv
hostname:指的是elasticsearch的elasticsearch.yml配置文件中 network.host 设置的值
根据上面的配置,输入的命令如下:
./plugins/search-guard-2/tools/sgadmin.sh -cn my-es -h data11.Hadoop -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass 12345678 -nhnv
需要注意:
如果提示没有操作权限,则必须先把hash.sh文件的权限开放
chmod -R 777 plugins/search-guard-2/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 123456
如果提示没有操作权限,则必须先把hash.sh文件的权限开放
chmod -R 777 plugins/search-guard-2/tools/hash.sh
获得哈希生成后的密码

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

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

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

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

有问题留言给我相互交流

原创粉丝点击