ELK elasticsearch7 设置账号、权限

摘要:
它比较完整。我们在完整版本中直接安装的ELK默认没有帐户和密码。在LK中没有设置用户信息,即logstash和kibana,因为它们的信息数据来自弹性搜索,而索引实际上设置的用户密码是es。这主要记录第一个es集群。ES集群,因为ES集群之前已经编写过,请参阅上一篇文章https://www.cnblogs.com/a393060727/p/12292868.html直接访问群集。它将被显示http://IP:端口/_目录/节点?查看kibana管理页面开始。

比较完整一篇,完整版

我们直接安装的ELK默认是没有账号与密码的。但是我们一旦放到生成上,就需要做一定的权限过滤,有些数据有些账号才能看到。否则都能看到,就很不科学了,有可能导致一些有心的人,搞成信息泄露。这个时候我们就需要设置账号密码了。

用户信息设置在LK中,也就是logstash、kibana中是没有的,因为他们的信息数据都是来源于elasticsearch中,索引真正设置用户密码的是es。

这里主要记录下先es集群。后配置登录用户才能访问数据。

ES集群,因为之前已写过 es集群,可看之前文章

https://www.cnblogs.com/a393060727/p/12292868.html

直接访问集群。就显示出来

http://IP:端口/_cat/nodes?pretty

ELK elasticsearch7 设置账号、权限第1张

现在我们要对之前的配置做一定的修改。达到需要用户密码才可以访问的目的。

查看上面链接查看es集群。

ELK elasticsearch7 设置账号、权限第2张

查看kibana管理页

ELK elasticsearch7 设置账号、权限第3张

 进入正题。

1、elasticsearch配置

文件修改点:

之前配置完全不变,增加两个配置项,然后设置初始默认密码,即可。

// 启用密码
xpack.security.enabled: true
// 使用默认密码
xpack.security.authc.accept_default_password: true

之前的配置 

es04.yml
cluster.name: esinner
node.name: es04
node.master: true
node.data: true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 172.19.0.14
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]
cluster.initial_master_nodes: ["172.19.0.16"]
discovery.zen.minimum_master_nodes: 2
http.cors.allow-headers: Authorization


es05.yml
cluster.name: esinner
node.name: es05
node.master: true
node.data: true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 172.19.0.15
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]
cluster.initial_master_nodes: ["172.19.0.16"]
discovery.zen.minimum_master_nodes: 2
http.cors.allow-headers: Authorization


es06.yml
cluster.name: esinner
node.name: es06
node.master: true
node.data: true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 172.19.0.16
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]
cluster.initial_master_nodes: ["172.19.0.16"]
discovery.zen.minimum_master_nodes: 2
http.cors.allow-headers: Authorization

修改配置后:

es04.yml
cluster.name: esinner
node.name: es04
node.master: true
node.data: true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 172.19.0.14
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]
cluster.initial_master_nodes: ["172.19.0.16"]
discovery.zen.minimum_master_nodes: 2
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.authc.accept_default_password: true



es05.yml
cluster.name: esinner
node.name: es05
node.master: true
node.data: true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 172.19.0.15
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]
cluster.initial_master_nodes: ["172.19.0.16"]
discovery.zen.minimum_master_nodes: 2
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.authc.accept_default_password: true


es06.yml
cluster.name: esinner
node.name: es06
node.master: true
node.data: true
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 172.19.0.16
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]
cluster.initial_master_nodes: ["172.19.0.16"]
discovery.zen.minimum_master_nodes: 2
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.authc.accept_default_password: true

启动容器

// 容器指定自动重启、内存限制512m、使用内部网络(据说可以更快),指定容器IP,指定对外映射端口(其中9200是网页http用,9300是程序tcp用),将数据挂载到宿主机,容器名称命名。。
docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d --net esnetwork --ip 172.19.0.14 -p 9204:9200 -p 9304:9300 -v /home/soft/ES/config/es04.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data/data04:/usr/share/elasticsearch/data -v /home/soft/ES/logs/logs04:/usr/share/elasticsearch/logs --name es04 elasticsearch:7.1.1 docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d --net esnetwork --ip 172.19.0.15 -p 9205:9200 -p 9305:9300 -v /home/soft/ES/config/es05.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data/data05:/usr/share/elasticsearch/data -v /home/soft/ES/logs/logs05:/usr/share/elasticsearch/logs --name es05 elasticsearch:7.1.1 docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d --net esnetwork --ip 172.19.0.16 -p 9206:9200 -p 9306:9300 -v /home/soft/ES/config/es06.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data/data06:/usr/share/elasticsearch/data -v /home/soft/ES/logs/logs06:/usr/share/elasticsearch/logs --name es06 elasticsearch:7.1.1

服务启动成功后,需要在主节点master上设置密码后,从1个点无需配置,自动同步。

// 查看容器启动情况
[root@localhost data]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9cff40539dd1 elasticsearch:7.1.1 "/usr/local/bin/dock…" 3 hours ago Up 2 minutes 0.0.0.0:9206->9200/tcp, 0.0.0.0:9306->9300/tcp es06 3b37327ea7f5 elasticsearch:7.1.1 "/usr/local/bin/dock…" 3 hours ago Up 2 minutes 0.0.0.0:9205->9200/tcp, 0.0.0.0:9305->9300/tcp es05 ec5e2a2b8f43 elasticsearch:7.1.1 "/usr/local/bin/dock…" 3 hours ago Up 2 minutes 0.0.0.0:9204->9200/tcp, 0.0.0.0:9304->9300/tcp es04 // 进入容器es04
[root@localhost data]# docker exec
-it es04 /bin/bash
// 设置默认账号密码,如下,这些账号在不通的服务系统接入的时候使用,其中elastic是类似超级管理员。权限最大。 [root@ec5e2a2b8f43 elasticsearch]# bin/elasticsearch-setup-passwords interactive Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user. You will be prompted to enter passwords as the process progresses. Please confirm that you would like to continue [y/N]y // 这里需要手动输入密码 Enter password for [elastic]: Reenter password for [elastic]: Enter password for [apm_system]: Reenter password for [apm_system]: Enter password for [kibana]: Reenter password for [kibana]: Enter password for [logstash_system]: Reenter password for [logstash_system]: Enter password for [beats_system]: Reenter password for [beats_system]: Enter password for [remote_monitoring_user]: Reenter password for [remote_monitoring_user]:
// 当出现如下内容后,证明设置成功。 Changed password
for user [apm_system] Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [beats_system] Changed password for user [remote_monitoring_user] Changed password for user [elastic]

设置kibana配置文件中,加入用户名密码,其实只是加上,kibana启动后,会根据这个用户名密码访问es,判断是否能够访问,与权限无关,我们只需要给上面设置的用户kibana就可以。

我的配置文件如下,然后重启。

这里主要是配置了当前服务名,端口,集群es地址(其实写一个也可以,但是一旦不巧你写的那个节点挂掉后,就无法访问了。所以建议多写几个。)

kibana我的用户名与密码一致

2、kibana.yml

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://192.168.89.138:9204","http://192.168.89.138:9205", "http://192.168.89.138:9206" ]
elasticsearch.username: "kibana"
elasticsearch.password: "kibana"
server.port: 5601

启动kibana

// 容器指定自动重启、内存限制512m、使用内部网络(据说可以更快),指定容器IP,指定对外映射端口,将数据挂载到宿主机,容器名称命名。。
docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" 
-d --name kibana -p 5601:5601 
-v /home/soft/ELK/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml 
192.168.89.132/third/kibana:7.1.1

启动完成后,访问服务kibana。可以看到已经有用户名密码对话框了。输入对应用户名字

http://192.168.89.139:5601/

ELK elasticsearch7 设置账号、权限第4张

登录成功,但是,信息无法查看。权限没开通,返回如下信息。

{"statusCode":403,"error":"Forbidden","message":"Forbidden"}

我使用超级用户elastic访问就可以进去了

ELK elasticsearch7 设置账号、权限第5张

登录进入系统后。进入管理按钮(Management),就可以看到多了一块东西,就是用户与角色权限配置

这里是用户信息,可以看到这些用户就是我们在es重置密码的默认用户。

ELK elasticsearch7 设置账号、权限第6张

 接下来,我们给kibana用户配置相应的角色,权限。就可以用kibana登录查看信息了。

3、logstash配置。

我们数据来源是通过logstash收集写入的,

所以这里的配置文件也需要加上es的账号密码,我将logstash_system配置在配置文件中。

logstash我这采用的是与filebeat结合使用。因为logstash启动处理消耗内存有点巨大。所以只在一台服务器上用他做接收,数据过滤,转存信息到ES中。

配置文件 logstash.yml

path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash

另外配置conf.d目录下。

增加文件 命名无所谓,反正是.conf结尾,logstash 就可以识别。change.conf

作用 

 input 是数据源

filter 数据过滤,因为这里字段很多,所以我将很多不必要的节点字段过滤掉了。

output  信息存储到哪里。我们是ES所以就这样了。

input {
beats {
port => 5044
codec => "json"
}
}

filter {
date {
match => [ "@timestamp" , "yyyy/MM/dd:HH:mm:ss Z" ]
}
mutate {
remove_field => ["host","ecs","json","agent","input","log","@version","tags"]
}
}

output {
elasticsearch {
hosts => ["192.168.89.138:9204","192.168.89.138:9205","192.168.89.138:9206"]
user => "logstash_system"
password => "logstash_system"
index => "%{[fields][systemid]}-%{+YYYY.MM.dd}"
}
}

启动脚本。

docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" 
-it -d -p 5044:5044 -p 9600:9600 --name logstash 
-v /home/soft/ELK/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml 
-v /home/soft/ELK/logstash/config/conf.d/:/usr/share/logstash/conf.d/ 
192.168.89.132/third/logstash:7.1.1

启动运行查看,看到数据进来了。

未修改加入用户名密码返回日志

[2020-03-12T15:57:14,349][WARN ][logstash.outputs.elasticsearch] Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://192.168.89.138:9206/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError, :error=>"Got response code '401' contacting Elasticsearch at URL 'http://192.168.89.138:9206/'"}

增加用户名密码后

4、总结:没做过感觉很复杂,做过后,感觉我也能做。只是网上写的经验各种的复制粘贴一大堆。能有用的还需要看造化了。

免责声明:文章转载自《ELK elasticsearch7 设置账号、权限》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[解决方法] spring-mongo mongodb 2.x 升级到 3.x 配置中出现的一些问题斐讯 N1 刷 Armbian 5.64下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ELK常见错误分析(转)

ELK 常见错误处理 ELK 这里就不介绍了,如何安装请参考博客之前的文章。在这里感谢ttlsa团队,同时,我很荣幸能加入到ttlsa团队中,分享点滴,凉白开说发文章有红包,期待这篇群主能给多少红包。哈哈。 好了,不闲扯,下面总结下ELK使用过程中遇到的常见问题以及解决方案。 1. Kibana No Default Index Pattern War...

ElasticSearch 分组查询的几个例子

facets接口可以根据query返回统计数据,其中的 terms_stats 是分组统计,根据key的情况返回value的统计数据,类似group by的意思。 "terms_stats" : { "key_field" : "", "value_field" : "" } 例子:查询每个ip的请求执行时间 查询语句: 1: { 2: "si...

[转]angular 禁止缓存

本文转自:https://www.cnblogs.com/jonney-wang/p/9797906.html angular 单页面开发,会存在和管理很多HTML和JS文件,缓存有时是个麻烦。 在开发和测试阶段,F12调出调试工具,禁止缓存F5刷新下就好了。 但是在客户那里缓存就体验效果不好,甚至认为有问题,联系客服,影响工作效率。 主要做几点就可以了,...

Nacos Config 多环境的配置

Spring Boot Profile 我们在做项目开发的时候,生产环境和测试环境的一些配置可能会不一样,有时候一些功能也可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息。但是 Spring 中为我们提供了 Profile 这个功能。我们只需要在启动的时候添加一个虚拟机参数,激活自己环境所要用的 Profile 就可以了。 操作起来很简单,只需...

Logstash:处理多个input

我们知道Logstash的架构如下:   它的整个pipleline分为三个部分:    input插件:提取数据。 这可以来自日志文件,TCP或UDP侦听器,若干协议特定插件(如syslog或IRC)之一,甚至是排队系统(如Redis,AQMP或Kafka)。 此阶段使用围绕事件来源的元数据标记传入事件。    filter 插件:插件转换并丰富数据 ...

C# 操作自定义config文件

示例文件:DB.config 1.读取 1 //先实例化一个ExeConfigurationFileMap对象,把物理地址赋值到它的 ExeConfigFilename 属性中; 2 ExeConfigurationFileMap fileMap = newExeConfigurationFileMap(); 3 fileMap.ExeConfigFi...