search-guard环境部署,登录验证,权限配置

1.环境部署

es集群部署忽略,注意要用es:es,把es,kibana,search相关的包全部修改用户和组

chown -R es:es 包名称

安装和es对应版本的插件,版本参考:https://github.com/floragunncom/search-guard/wiki,可以采用在线安装

es插件:./bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.6.2-19.1

kibana插件:./bin/kibana-plugin install file:///server/searchguard-kibana-5.6.2-5.zip

证书生成插件:git clone https://github.com/floragunncom/search-guard-ssl.git

修改example.sh文件的内容

添加两个证书

# 生成一个sgadmin客户端证书,用于配置管理

./gen_client_node_cert.sh sgadmin changeit capass

# 生成一个javaapi访问的客户端证书

./gen_client_node_cert.sh javaapi changeit capass

生成证书:./example.sh

拷贝证书相关文件到节点的es/conf目录下

cp *.jks /home/hadoop/Desktop/elaticsearch-5.2.2/config/

修改es的配置文件:

searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks

searchguard.ssl.transport.keystore_password: changeit

searchguard.ssl.transport.truststore_filepath: truststore.jks

searchguard.ssl.transport.truststore_password: changeit

# 设置不校验hostname

searchguard.ssl.transport.enforce_hostname_verification: false

searchguard.ssl.transport.resolve_hostname: false

#配置restful为https访问,此处为了方便暂时不配置

#searchguard.ssl.http.enabled: true

#searchguard.ssl.http.keystore_filepath: node-0-keystore.jks

#searchguard.ssl.http.keystore_password: changeit

#searchguard.ssl.http.truststore_filepath: truststore.jks

#searchguard.ssl.http.truststore_password: changeit

#配置管理员证书DN

searchguard.authcz.admin_dn:

- CN=sgadmin,OU=client,O=client,L=Test, C=DE

# 配置节点识别证书DN

searchguard.nodes_dn:

- 'CN=node-*.example.com,OU=SSL,O=Test,L=Test,C=DE'

network.host: 10.2.26.39

cluster.name: fk-cluster

node.name: 10.2.26.39

http.port: 9200

transport.tcp.port: 9300

node.max_local_storage_nodes: 1

cluster.routing.allocation.same_shard.host: true

discovery.zen.ping.unicast.hosts: ["10.2.26.39:9300"]

discovery.zen.minimum_master_nodes: 1

bootstrap.memory_lock: false

bootstrap.system_call_filter: false


将yml文件拷贝到其它节点es的conf目录下,修改其中部分参数,比如ip等

在kibana节点上:

[root@fk config]# more kibana.yml

server.port: 5601

server.host: 10.2.26.39

elasticsearch.url: "http://10.2.26.39:9200"

elasticsearch.username: "kibanaserver"

elasticsearch.password: "kibanaserver"

xpack.security.enabled: false  (这个如果不加,在访问页面可能不让你输入密码)

.初始化用户配置信息

cd elasticsearch-version/plugins/search-guard-5/tools/

修改脚本执行权限:chmod +x *.sh

在所有节点上,首先启动es服务,然后再执行

cd /opt/elasticsearch-6.2.3/plugins/search-guard-6/tools

./sgadmin.sh -h master -cn vm-cluster -cd ../sgconfig -ks ../../../config/sgadmin-keystore.jks -kspass changeit -ts ../../../config/truststore.jks -tspass changeit -nhnv

重启es和kibana,使其生效

2.登录验证:


3.权限配置

sg_internal_users.yml: 存储用户名密码,密码可以使用plugin/tools/hash.sh生成

  用户可以加入一个用户组,后面使用用户组与权限进行映射

sg_roles.yml:权限设置,定义什么类型的权限

sg_roles_mapping.yml: 映射角色关系,可以把权限映射给用户,也可以映射给用户组

sg_action_groups.yml: 定义一些用户动作的权限与es索引之间的关系

sg_config.yml:全局设置


超级管理员可以任意操作

相关es demo:

curl '10.2.26.39:9200/_cat/indices?v'

es无用户名和密码访问:curl  'ip:9200/_cat/indices?v'

es用用户名和密码访问:curl -uadmin:admin 'ip:9200/_cat/indices?v'

es删除某个索引:curl -uadmin:admin -XDELETE 'http://ip:9200/binlog-2018.08.31'

某个用户操作某个索引:curl -uliuwei:liuwei 'ip:9200/logstash*/_search?v'

注意:

参考官网说明:https://docs.search-guard.com/latest/authentication-authorization

目前问题:

1、logstah用户,索引配置了DELETE,但是删除不了logstash开头的索引?

问题解决:

delete只有删除单条,或者deletebyquery权限

在index下添加:indices:admin/delete,千万不能在cluster下加


search-guard环境部署,登录验证,权限配置_第1张图片
search-guard环境部署,登录验证,权限配置_第2张图片
search-guard环境部署,登录验证,权限配置_第3张图片
search-guard环境部署,登录验证,权限配置_第4张图片

目前需求是:公司有4个组,每个组只能查看自己的索引,并且可以删除,修改操作

只要定义相关配置文件,修改模板的权限即可!已经测试过

下一步会验证6.2版本的es的相关权限,欢迎大家指导

测试后发现,6.2版本的kibana插件无法安装,存在问题

*************************

采用6.3.1版本的es和kiaban

安装:

./bin/elasticsearch-plugin install -b com.floragunn:search-guard-6:6.3.1-23.0

./bin/kibana-plugin install file:///server/search-guard-kibana-plugin-6.3.1-14.zip

你可能感兴趣的:(search-guard环境部署,登录验证,权限配置)