当前位置: 首页 > 工具软件 > Shield > 使用案例 >

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

娄森
2023-12-01

在使用单机上,按我上篇博客讲解的,完全可以实现,但是我在实现集群,什么样的集群呢?我首先说一下,我的集群环境。
集群的使用的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/开放的端口号

 类似资料: