实现原理

由于Kibana的日志信息都存储在Elasticsearch中,所以只要给Elasticsearch开启X-PACK中的安全功能,并给预置的账号设置好密码即可。Elasticsearch设置好之后,就可以在Kibana中对用户、角色、权限进行管理了,本文使用的ELK组件版本均为7.6.2

Elasticsearch设置密码

  • 修改Elasticsearch的配置文件并开启X-PACK中的安全功能,该配置文件在安装目录的config文件夹下面,例如elasticsearch-7.6.2\config\elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
  • 启动Elasticsearch服务,启动命令在bin目录下,例如elasticsearch-7.6.2\bin\elasticsearch.bat

  • bin目录下使用如下命令elasticsearch-setup-passwords interactive修改预置账号的密码,期间需要设置多个账号密码,我都设置成了123456

图片

  • 期间设置了好几个账号,我们先来了解下这些账号都有啥作用吧;
elastic:超级管理员账号
kibana:Kibana访问专用账号
logstash_system:Logstash访问专用账号
beats_system:FileBeat访问专用账号
apm_system:APM系统专用账号
remote_monitoring_user:远程监控账号
  • 接下来我们需要在Kibana的配置文件中添加可以访问Elasticsearch的账号,该配置文件在安装目录的config文件夹下面,例如kibana-7.6.2\config\kibana.yml
elasticsearch.username: "kibana"
elasticsearch.password: "123456"
  • 启动Kibana服务,启动命令在bin目录下,例如kibana-7.6.2\bin\kibana.bat

  • 当Kibana启动完成后,我们访问的时就需要登录认证了,使用超级管理员账号elastic:123456可以进行登录,访问地址:http://localhost:5601

图片

  • 登录成功后,在我们的Management选项中可以找到安全相关的配置,在此我们可以对用户、角色、权限进行设置。

图片

SpringBoot安全访问

由于Elasticsearch开启X-PACK中的安全功能,当我们的SpringBoot应用访问Elasticsearch时,也需要设置用户名和密码了!

  • 我们可以直接在SpringBoot中设置超级管理员账号,但这不是个好办法,我们还是自己建个角色和账号吧!

  • 首先在Kibana中创建一个应用访问专用的角色app_user

图片

  • 创建一个用户并配置好该角色,账号密码为app:123456

图片

  • 修改SpringBoot应用的配置文件application.yml,配置好账号密码即可正常访问了!
spring:
  elasticsearch:
    rest:
      uris: http://localhost:9200
      username: app
      password: 123456

Logstash安全访问

由于Elasticsearch开启X-PACK中的安全功能,向Elasticsearch输出日志的Logstash也需要设置用户名和密码了!

  • 首先修改我们原来的Logstash配置文件logstash.conf,在output节点下设置访问Elasticsearch的用户名和密码,直接使用我们创建的app:123456账号即可;
input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
    type => "debug"
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4561
    codec => json_lines
    type => "error"
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4562
    codec => json_lines
    type => "business"
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4563
    codec => json_lines
    type => "record"
  }
}
filter{
  if [type] == "record" {
    mutate {
      remove_field => "port"
      remove_field => "host"
      remove_field => "@version"
    }
    json {
      source => "message"
      remove_field => ["message"]
    }
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    action => "index"
    codec => json
    index => "mall-tiny-%{type}-%{+YYYY.MM.dd}"
    template_name => "mall-tiny"
    user => app
    password => "123456"
  }
}
  • 使用指定配置文件启动Logstash服务,启动命令在bin目录下,例如logstash-7.6.2\bin\logstash.bat
logstash -f logstash.conf
  • 接下来在Kibana中就可以查看到应用输出的日志了!

图片

项目源码地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-log


更多相关文章

  1. AWS-EC2遗失秘钥或密码如何重置密码或秘钥?
  2. centos7修改root密码
  3. 数据库密码配置项都不加密?心也太大了!
  4. 设置密码输入的默认值,以便可以读取
  5. 我正在尝试使用带有post方法的AJAX将用户名和密码发送到php文件
  6. PHP中对用户密码进行加密
  7. php扫马、内网查mysql数据库账号密码(内网webshell渗透)
  8. 豆瓣的账号登录及api操作
  9. PHP万能密码登陆

随机推荐

  1. 动画 anim
  2. Appium API
  3. Error--->android工程导入找不到R文件
  4. saaaaaaaaa
  5. Android studio 导入github工程
  6. android -布局控件禁用多点触控
  7. android_lesson_2
  8. [置顶] android Properties的使用
  9. android apk包签名和align
  10. 自定义全屏Dialog