EFK教程(5) - ES集群开启用户认证
基于ES内置及自定义用户实现kibana和filebeat的认证
作者:“发颠的小狼”,欢迎转载
目录
▪ 用途
▪ 关闭服务
▪ elasticsearch-修改elasticsearch.yml配置
▪ elasticsearch-开启服务
▪ elasticsearch-建立本地内置用户
▪ kibana-创建私钥库
▪ kibana-WEB界面确认用户
▪ filebeat-在WEB界面创建角色及用户
▪ filebeat-服务器上创建密钥库
▪ filebeat-配置filebeat.yml
▪ 测试
▪ 附录
用途
前情提要:
▷ 在第一篇《EFK教程 - 快速入门指南》中,阐述了EFK的安装部署,其中ES的架构为三节点,即master、ingest、data角色同时部署在三台服务器上。
▷ 在第二篇《EFK教程 - ElasticSearch高性能高可用架构》中,阐述了EFK的data/ingest/master角色的用途及分别部署三节点,在实现性能最大化的同时保障高可用。
▷ 在第三篇《EFK教程(3) - ElasticSearch冷热数据分离》中,阐述了ES多实例部署,将不同热度的数据存在不同的磁盘上,实现了数据冷热分离、资源合理分配。
▷ 在第四篇《EFK教程(4) - ElasticSearch集群TLS加密通讯》中,阐述了ES集群创建CA、CERT证书,实现ElasticSearch集群之间数据通过TLS进行双向加密交互。
本文:
▷ ES集群开启内置用户和自定义用户
▷ kibana通过ES内置kibana用户连接ES集群
▷ filebeat通过ES自定义test-filebeat用户连接ES集群
关闭服务
在进行下面实验前,请先关闭所有ElasticSearch、kibana、filebeat进程
elasticsearch-修改elasticsearch.yml配置
按以上表格对应的实例新增conf目录下elasticsearch.yml配置参数
# 在所有实例上加上以下配置 # 开启本地用户 xpack.security.enabled: true # xpack的版本 xpack.license.self_generated.type: basic
elasticsearch-开启服务
开启所有ES服务
sudo -u elasticsearch ./bin/elasticsearch
elasticsearch-建立本地内置用户
本地内置elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user用户
# 在其中一台master节点操作 # interactive 自定密码 auto自动生密码 sudo -u elasticsearch ./bin/elasticsearch-setup-passwords interactive # 输入elastic密码 # 输入apm_system密码 # 输入kibana密码 # 输入logstash_system密码 # 输入beats_system密码 # 输入remote_monitoring_user密码
测试内部用户
通过base64将elastic用户进行加密,格式为“elastic:elastic的密码“
# 例如以下格式 curl -H "Authorization: Basic ZWxhc3RpYzplbGFzdGkxMjM0NTY3OA==" "http://192.168.1.31:9200/_cat/nodes?v"
如果不通过Basic访问或base64加密错误会报以下错误
kibana-创建私钥库
在192.168.1.21创建私钥库
cd /opt/kibana/ # 创建密钥库 sudo -u kibana ./bin/kibana-keystore create # 连接ES用户名,这里输入kibana sudo -u kibana ./bin/kibana-keystore add elasticsearch.username # 连接ES密码,这里输入刚刚设置kibana的密码 sudo -u kibana ./bin/kibana-keystore add elasticsearch.password
在192.168.1.21确认私钥库
sudo -u kibana ./bin/kibana-keystore list
启动服务
sudo -u kibana /opt/kibana/bin/kibana -c /opt/kibana/config/kibana.yml
kibana-WEB界面确认用户
登入kibana
在浏览器输入192.168.1.21:5601,用户名:elastic 密码:之前输入elastic的密码
filebeat-在WEB界面创建角色及用户
创建自定义的filebeat角色
关于角色权限的说明请自行查阅附录链接
创建自定义的filebeat用户
filebeat-服务器上创建密钥库
在192.168.1.11创建filebeat密钥库
cd /opt/filebeat/ #创建密钥库 ./filebeat keystore create #创建test-filebeat用户私钥 ./filebeat keystore add test-filebeat
确认filebeat密钥库
./filebeat keystore list
filebeat-配置filebeat.yml
配置filebeat.yml
# 文件输入 filebeat.inputs: # 文件输入类型 - type: log # 开启加载 enabled: true # 文件位置 paths: - /var/log/nginx/access.log # 自定义参数 fields: type: nginx_access # 类型是nginx_access,和上面fields.type是一致的 # 输出至elasticsearch output.elasticsearch: # 连接ES集群的用户名 username: test-filebeat # 连接ES集群的密码 password: "${test-filebeat密码}" # elasticsearch集群 hosts: ["http://192.168.1.31:9200", "http://192.168.1.32:9200", "http://192.168.1.33:9200"] # 索引配置 indices: # 索引名 - index: "nginx_access_%{+yyy.MM}" # 当类型是nginx_access时使用此索引 when.equals: fields.type: "nginx_access" # 关闭自带模板 setup.template.enabled: false # 开启日志记录 logging.to_files: true # 日志等级 logging.level: info # 日志文件 logging.files: # 日志位置 path: /opt/logs/filebeat/ # 日志名字 name: filebeat # 日志轮转期限,必须要2~1024 keepfiles: 7 # 日志轮转权限 permissions: 0600
启动filebeat
/opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml -d "publish"
测试
写入一条数据
curl -I "http://192.168.1.11"
在kibana中查看
附录
kibana角色权限相关文档链接
https://www.elastic.co/guide/en/elasticsearch/reference/7.3/security-privileges.html#privileges-list-cluster
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
运维编排场景系列-----定时清理Windows服务器日志
本文介绍在运维编排OOS的控制台,通过OOS服务下的定时运维功能,定时执行一个功能性模版,实现某些需定时管理服务器或定时管理其它服务的需求。 应用背景 运行中的实例内部运行了很多服务程序,随时间的推移系统会产生大量的日志文件或一些垃圾文件。其中产生的某些日志文件可能并无实际作用,时间久了产生越来越多的日志文件会占用实例中很大的存储空间,所以需要定期清理无用的日志文件,优化实例存储空间。 前提条件 实例状态为运行中(Running) 模版介绍: 模版功能: 获取实例 根据设置的时间天数,搜索到指定目录下模糊匹配的日志文件,来清理指定天数之前的匹配日志。(例如:清理5天前日志名称包含info.log.的所有日志。) 模版参数: 参数 说明 示例 LogFilePath 存放日志文件的绝对路径。 C:\Users\Administrator\testlogway LogKeepTime 清理几天之前的日志文件。 5 Targets 根据实例标签(tags)或实例ID(InstanceId)选定需要的实例。 i-11111111111 RateControl 固定参数。- 速率控制类型:并发控...
- 下一篇
ASP.NET Cookie是怎么生成的
ASP.NET Cookie是怎么生成的 可能有人知道Cookie的生成由machineKey有关,machineKey用于决定Cookie生成的算法和密钥,并如果使用多台服务器做负载均衡时,必须指定一致的machineKey用于解密,那么这个过程到底是怎样的呢? 如果需要在.NET Core中使用ASP.NET Cookie,本文将提到的内容也将是一些必经之路。 抽丝剥茧,一步一步分析首先用户通过AccountController->Login进行登录: //// POST: /Account/Loginpublic async Task Login(LoginViewModel model, string returnUrl){ if (!ModelState.IsValid) { return View(model); } var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); swit...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度