elastic5 searchguard实现权限控制日志收集

公司新上的项目要做日志检索 机器不太够 弄了一台给各个项目组用,为了各个项目组分开查看各自的日志,就重新装了一下,之前用的es2.4,刚好elastic5出来也有一段时间了,就想着搞一下
注:用的elastic 5.1.1

1.安装elk请自行百度,或者看我之前写的一篇简单的文章

2.安装searchguard
5.0以后不需要安装search-guard-ssl plugin searchguard里面包含有ssl配置
5.0的所有elk所有组建安装目录都在/usr/share/下
bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.1.1-9
证书可以通过脚本生成活着网页生成,这里使用脚本自行生成。
使用https://github.com/floragunncom/search-guard-ssl提供的证书生成脚本,对于脚本的执行过程及原理请自行百度。
声称证书时需要修改gen_node_cert.sh中san的相关信息为你的节点信息。
使用了keytool进行san(Subject Alternative Name Certificate)证书生成。
具体参数含义请看:http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html

3.配置search guard

es配置文件中添加

searchguard.ssl.transport.enabled: true
searchguard.ssl.transport.keystore_filepath: node0.jks
searchguard.ssl.transport.keystore_password:  yourpwd
searchguard.ssl.transport.truststore_filepath: truststore.jks
searchguard.ssl.transport.truststore_password: yourpwd
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.enable_openssl_if_available: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.keystore_filepath: node0.jks
searchguard.ssl.http.keystore_password: yourpwd
searchguard.ssl.http.truststore_filepath: truststore.jks
searchguard.ssl.http.truststore_password: yourpwd
searchguard.audit.type: internal_elasticsearch
searchguard.authcz.admin_dn:
  - CN=sgadmin  #这里为集群管理员  根据生成方式不同可能有所不同 

在安装的时候遇到了一些环境问题无法解决,因为不是新装的机器,假如有朋友遇到问题实在无法解决 可以使用官方提供的完整配置包(Search-Guard-Bundle )
https://github.com/floragunncom/search-guard/wiki/Search-Guard-Bundle  
tar -xzvf elasticsearch-<UUID>.tar.gz
./elasticsearch
./sgadmin.sh

假如启动正常至少证明环境是没问题的 就是自己的配置问题

3.配置角色
plugins/search-guard-5/sgconfig下包含角色 组,用户,角色,角色映射的配置文件
1).组可以被授予一系列权限
2).在用户文件中定义所属的组
3).在role配置文件中定义了某种角色被赋予的权限
4).在mapping文件中定义了用户和角色的映射关系
请更改系统默认用户的弱密码
plugins/search-guard-5/tools/hash.sh 进行密码生成
配置完成后使用sgadmin.sh将角色写入es

4.配置kibana使用searchguard
安装search guard插件
./kibana-plugin install https://github.com/floragunncom/search-guard-kibana-plugin/releases/download/v5.1.1-alpha/searchguard-kibana-alpha-5.1.1.zip

默认的kibanaserver用户已经有设置kibana所需的用户权限,如果新添加的用户无法认证则可以通过es的用户查看缺少什么权限进行添加
elasticsearch.url: "https://localhost:9200"
elasticsearch.username: "kibanaserver"
elasticsearch.password: "xxxx"
elasticsearch.ssl.ca: CN=sgadmin.key.pem
searchguard.cookie.password: "xxxxxxxx"

如果之前配置的searchguard.ssl.http.enabled: false不开启则配置elasticsearch.ssl.verify: false 将https换为http
5.配置logstash 
output {
    elasticsearch {
       xxx
       ssl => true
       ssl_certificate_verification => true
       truststore => "/path/to/elasticsearch-2.3.3/config/truststore.jks"
       truststore_password => changeit
    }
}

6.权限划分
配置后则可以认证以及授权,为了让不同的人只查看自己的日志,则需要对索引活着type进行设置,为了分别存储在不同的索引,我配置的type都以项目名为开头
filebeat里面配置:
document_tyte: test-xxx
在searchguard授权文件授权索引为test-*
这是我的role配置
sg_testuser:
  cluster:
    - indices:*
  indices:
    'test-*':
      '*':
        - READ
    '?kibana':
      '*':
        - indices:*

在logstash indexer中配置输出到es index为
index => "%{type}-%{+YYYY.MM.dd}"

在logstash 5.1.1中使用的启动脚本是upstart

initctl start logstash
kibana修改使用中文地图
tilemap.url: 'http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'
 
mysql的grok正则
"(?m)^#\s+User@Host:\s+%{USER:user}\[[a-zA-Z0-9._-]+\]\s@\s\s\[%{IPV4 :clientip}\]\s\sId:\s%{NUMBER:row_id}\n^#\sSchema:\s%{USERNAME:db_name}\s\sLast_errno:\s%{NUMBER:lasteerr_num}\s\sKilled:\s%{NUMBER:killed_num}\n^#\sQuery_time:\s%{BASE16FLOAT:query_time}\s\sLock_time:\s%{BASE16FLOAT:lock_time}\s\sRows_sent:\s%{NUMBER:rows_send}\s\sRows_examined:\s%{NUMBER:rows_examined}\s\sRows_affected:\s%{NUMBER:rows_affected}\n^#\sBytes_sent:\s%{NUMBER:bytes_sent}\n([a-z]+\s%{USERNAME:use_db};\n)?SET\stimestamp=%{NUMBER:log_date};\n(/\*\s(?<log_notes>(.*))\s\*/\s)?(?<sql_exec>(.*));(\s#\sTime:\s(?<notes_time>(.*)))?"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值