shield实现ELK权限管理问题讲解

来源:互联网 发布:windows文件系统类型 编辑:程序博客网 时间:2024/05/22 14:58

在使用单机上,按我上篇博客讲解的,完全可以实现,但是我在实现集群,什么样的集群呢?我首先说一下,我的集群环境。
集群的使用的ELK的版本:
logstash.2.4.0
elasticsearch.2.4.0
kibana.4.6.0
shield.2.4.0
下面说一下我怎么样搭建的使用ELK的,logstash是单独的布置在要监控的主机上的,Elasticsearch和kibana是搭建在局域网的专有的服务器上;logstash实现的传送数据通过TCP和UDP直接发送数据;
1、logstash配置文件的书写

input {  tcp {    port => 5000    type => syslog    codec => plain { charset => "ISO-8859-1" }  }  udp {    port => 5000    type => syslog    codec => plain { charset => "ISO-8859-1" }  }}filter {  if [type] == "syslog" {    grok {      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }      add_field => [ "received_at", "%{@timestamp}" ]      add_field => [ "received_from", "%{host}" ]    }    date {      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]    }  }}output {  elasticsearch {       hosts => ["http://10.0.0.120:9200"]       index => "logstash-%{type}-%{+YYYY.MM.dd}"       user => "logstashserver"       password => "123456"  }  stdout { codec => rubydebug }}

2、roles.yml文件添加的角色代码

syslog_role:  indices:    'logstash-server,logstash-stdin':      - indices:admin/mappings/fields/get      - indices:admin/validate/query      - indices:data/read/search      - indices:data/read/msearch      - indices:admin/get

修改kibana4_server角色如下

kibana4_server:  cluster:      - cluster:monitor/nodes/info      - cluster:monitor/health  indices:    '.kibana':      - indices:admin/exists      - indices:admin/mapping/put      - indices:admin/mappings/fields/get      - indices:admin/refresh      - indices:admin/validate/query      - indices:data/read/get      - indices:data/read/mget      - indices:data/read/search      - indices:data/write/delete      - indices:data/write/index      - indices:data/write/update      - indices:admin/create

3.可能遇到问题

1)数据发送到Elasticsearch上但是在kibana上无法显示出来,这个问题可能是两台虚拟机的时钟不同步,因为kibana上默认的是显示15分钟内变化的数据。如果时钟相差很大就无法显示出来。我是在部署的时候遇到了这个问题,困扰我很长时间,最后用REST API查看数据发现时钟不同步导致的。

2)虽然shield实现了用户权限的管理,但是存在一定的不足之处,在用户登录的时候是授权了kibana的权限,这个权限是可以看到所有的用户创建的index,这个index是在kibana上创建的index,但是用户只能访问自己的index,其他的知识看到而已,无法做到完全的屏蔽,主要是因为这个kibana权限是读.kibana文件,而所有用户的index都是记录在这个文件上的。
4、测试用到的命令
向TCP端口用命令推送数据:
echo -n “454545454545454” >/dev/udp/本机的IP/开放的端口号

0 0