kibana账号密码,Kibana账号密码忘了

http://www.itjxue.com  2023-01-07 21:33  来源:未知  点击次数: 

使用 Elasticsearch Operator 快速部署 Elasticsearch 集群

同样的,对于 Elasticsearch 应用,现在官方也推出了基于 Kubernetes Operator 的应用:Elastic Cloud on Kubernetes (ECK),用户可使用该产品在 Kubernetes 上配置、管理和运行 Elasticsearch 集群。

Elastic Cloud on Kubernetes

Elastic Cloud on Kubernetes(ECK)是一个 Elasticsearch Operator,但远不止于此。 ECK 使用 Kubernetes Operator 模式构建而成,需要安装在您的 Kubernetes 集群内,其功能绝不仅限于简化 Kubernetes 上 Elasticsearch 和 Kibana 的部署工作这一项任务。ECK 专注于简化所有后期运行工作,例如:

ECK 不仅能自动完成所有运行和集群管理任务,还专注于简化在 Kubernetes 上使用 Elasticsearch 的完整体验。ECK 的愿景是为 Kubernetes 上的 Elastic 产品和解决方案提供 SaaS 般的体验。

在 ECK 上启动的所有 Elasticsearch 集群都默认受到保护,这意味着在最初创建的那一刻便已启用加密并受到默认强密码的保护。

通过 ECK 部署的所有集群都包括强大的基础(免费)级功能,例如可实现密集存储的冻结索引、Kibana Spaces、Canvas、Elastic Maps,等等。您甚至可以使用 Elastic Logs 和 Elastic Infrastructure 应用监测 Kubernetes 日志和基础设施。您可以获得在 Kubernetes 上使用 Elastic Stack 完整功能的体验。

ECK 内构建了 Elastic Local Volume,这是一个适用于 Kubernetes 的集成式存储驱动器。ECK 中还融入了很多最佳实践,例如在缩小规模之前对节点进行 drain 操作,在扩大规模的时候对分片进行再平衡,等等。从确保在配置变动过程中不会丢失数据,到确保在规模调整过程中实现零中断。

安装 ECK

当然前提是你要有一个已经可运行的 kubernetes 集群(1.11版本以上),最好确保你的每个节点上至少有4GB内存可以使用,因为我们知道 Elasticsearch 是比较消耗资源的。

首先在集群中安装 ECK 对应的 Operator 资源对象:

安装成功后,会自动创建一个 elastic-system 的 namespace 以及一个 operator 的 Pod:

这个时候会安装上若干个 CRD 对象,当然这些 CRD 资源的控制器就在上面的 elastic-operator-0 这个 Pod 中:

然后我们可以利用 CRD 对象来创建一个非常简单的单个 Elasticsearch 集群:(elastic.yaml)

但是执行上面的命令会出现超时的情况:Error from server (Timeout): error when creating "STDIN": Timeout: request did not complete within requested timeout 30s,创建不成功。这主要是因为 ECK 添加了一个 validation webhook 的 Admission,我们可以临时将这个对象删除:

然后重新执行上面的创建命令即可成功。创建成功后需要等一小会儿待镜像拉取成功,然后就可以看到一个前缀为elastic的 Pod 运行成功:

同样可以查看自定义的Elasticsearch这个 CRD 资源对象:

我们可以看到集群的相关信息。

同样,也可以用 CRD 对象 Kibana 来部署 kibana 应用:(kibana.yaml)

注意属性spec.elasticsearchRef.name的值为上面我们创建的 Elasticsearch 对象的 name:elastic。直接添加这个资源对象即可:

最后我们可以去访问 kibana 来验证我们的集群,比如我们可以再添加一个 Ingress 对象:(ingress.yaml)

创建上面的 Ingress 对象:

然后我们需要获取访问 kibana 的用户名和密码,用户名默认是elastic,可以通过如下方式获取访问密码:

接下来在浏览器中打开上面的kibana.qikqiak.com地址,正常就会跳转到登录页面了:

使用上面的用户名和密码登录即可进入 kibana dashboard 页面:

更新集群

上面我们部署的 Elasticsearch 集群是一个单节点的,我们可以直接修改 Elasticsearch 的资源清单文件来修改集群配置。ECK 会确保我们在现有集群上进行修改不会中断应用。

比如,我们将集群升级到2个节点,只需要设置spec.nodes[0].nodeCount=2即可:

直接更新集群信息即可:

可以看到 elastic 这个 Elasticsearch 资源的状态是green,两个节点。

持久化

上面我们部署的集群默认是使用的emptyDir volume,我们知道emptyDir和 Pod 的生命周期是一致的,Pod 重建后数据肯定就没有了,在生产环境中肯定是不行的。

我们可以在集群中使用 PV/PVC 来进行持久化,同样,在上面的 Elasticsearch 资源对象中添加存储相关数据:

为了能够获得磁盘的最佳性能,ECK 支持每个节点使用 local volume,关于在 ECK 中使用 local volume 的方法可以查看下面几篇资料:

项目地址:

Elasticsearch、Logstash、Kibana手把手教你添加密码设置

? ??版本: elasticsearch-7.1.1(6.2或更早版本需要安装X-PACK, 新版本已包含在发行版中)

? ??配置:elasticsearch.yml

????新增以下配置

????xpack.security.enabled: true

????xpack.license.self_generated.type: basic

????xpack.security.transport.ssl.enabled: true

????保存后重启ES

????进入bin目录,输入”./setup-passwords interactive”初始化密码

????内置三个用户:

????elastic:内置超级用户

????kibana:仅可用于kibana用来连接elasticsearch并与之通信, 不能用于kibana登录

????logstash_system:用于Logstash在Elasticsearch中存储监控信息时使用

? ??在kibana.yml中配置用户名和密码

????elasticsearch.username: "kibana"

????elasticsearch.password: "*****"

????账号密码为es初始化中设置的密码

????重启kibana

????输入打开登录页面,使用elastic账号登录,并在角色和用户管理中添加用户指定 索引用于访问ES.

????在logstash.yml中配置用户名和密码

????xpack.monitoring.enabled: true

????xpack.monitoring.elasticsearch.username: logstash_system

????xpack.monitoring.elasticsearch.password: *****

????xpack.monitoring.elasticsearch.hosts: [""]

????在logstash指定的启动文件中加上具有索引权限的账号(登录kibana后创建的用户)

????http请求方式,在请求链接中添加账号和密码,注:密码中不要带@。

????http://{userName}:{passwords}@ip:port

Kibana嵌入web系统 账号免登录

我们知道Kibana通过url嵌入到web系统,但是如果elk配置了安全密码,kibana嵌入到web系统之后会,跳转到登录页面,我们既想显示我们特定给用户看的内容,又要保证安全,那这时候需要在nginx配置代理免登录,同时在kibana中配置好用户的权限。

这里引用的5602端口是nginx配置的

nginx添加配置

权限没配置好的可以先用elastic账号测试,配置完成之后就可以访问上面端口为5602的页面了。

6、ElasticSearch添加密码验证机制(规避了诸多小坑的操作步骤)

ElasticSearch版本7.6.2

1、验证当前版本是否支持安全功能

2、是否打开安全设置

3、基于FIPS的一些验证

4、配置节点间通讯传输的安全性

5、配置内置用户的密码/

6、选择用户验证用户身份的领域类型

7、设置角色和用户以控制对Elasticsearch的访问

8、启用审核以跟踪与Elasticsearch集群的尝试和成功的交互

1、验证当前版本是否支持安全功能

2、是否打开安全设置

3、配置节点间通讯传输的安全性

4、设置ssl的keystore、truststore的密码

5、重启ES集群是配置生效

6、配置内置用户的密码

7、修改kibana的配置

具体步骤:

Elasticsearch的安全策略需要X-Pack插件的支持,不过对于7.X以上版本X-Pack已经内置,所以不需要额外的操作。

xpack.security.enabled控制安全配置的开启,在默认情况下此参数被设置为false。要想开启安全策略需要在所有集群中讲此参数进行设置

仅仅开启安全设置再启动服务的时候会抛出错误

这是因为传输网络层用于集群中节点之间的内部通信。启用安全功能后,必须使用TLS来确保节点之间的通信已加密。为节点间通讯配置安全策略需要两个步骤:

在Elasticsearch集群中验证证书真实性的推荐方法是信任签署证书的证书颁发机构(CA)。这样,将节点添加到群集后,它们只需要使用由同一CA签名的证书,即可自动允许该节点加入群集。另外证书中可以包含与节点的IP地址和DNS名称相对应的主题备用名称,以便可以执行主机名验证。

* 为Elasticsearch集群创建发证机构 ,使用下面的步骤为集群创建一个CA授权证书

整个创建过程是这样的。在输入命令后控制台会输出此命令的信息描述,然后你需要先执行{①}的操作然后执行{②}的操作

①:此位置设置文档输出地址和名称。默认名称为elastic-stack-ca.p12。这个文件是PKCS#12密钥存储库,它包含您的CA的公共证书和用于为每个节点签署证书的私有密钥。

(也可以无需输入,直接回车,则会再当前目录,elasticsearch-7.6.2目录下, 和bin同级目录,生成文件elastic-certificates.p12,

然后在elasticsearch-7.6.2/config目录下,新建一个文件夹certs, 把文件elastic-certificates.p12复制到certs文件夹下即可。)

②:此位置设置证书的密码。计划将来向集群添加更多的节点,请记住其密码。

为Elasticsearch集群中的节点生成证书

使用下面的名称生成集群使用的生成节点证书。elastic-stack-ca.p12为上一步生成CA证书。

整个创建过程是这样的,类似之前的内容,在输入命令后控制台会输出此命令的信息描述,

输入elastic-stack-ca.p12的密码后,在elasticsearch-7.6.2文件夹下执行命令:

然后你需要先执行{①}的操作然后执行{②}的操作,最后执行{③}的操作

① : 此位置需要输入elastic-stack-ca.p12 CA授权证书的密码。

② : 此位置为需要输出证书位置。

③ : 此位置为证书的密码。使用空密码可以直接回车结束。

默认情况下,elasticsearch-certutil生成的证书中没有主机名信息。这意味着可以为集群中的任意节点使用此证书,但是必须关闭主机名验证。

将elastic-certificates.p12文件(只需要此文件)复制到每个节点上的Elasticsearch配置目录中的一个目录中。比如我是放到了每个节点的config/certs目录下。

然后修改每个节点的elasticsearch.yml配置。添加下面的参数:

xpack.security.transport.ssl.verification_mode

如果在elasticsearch-certutil cert命令中使用—dns或—ip选项,并且希望启用严格的主机名检查,此参数需要设置为full。而之前的例子证书中并没有输入ip以及dns等信息,所以我们没有使用严格的主机检查。

如果你在创建证书时没有输入密码,则这个时候重启集群后,如果elastic用户没有密码,则使用默认的引导密码。引导密码是一个临时密码,它允许您运行设置所有内置用户密码的工具。

如果你在创建证书时输入了密码,那可以通过下面的方法设置:

安全重启步骤:

1、暂停数据写入程序

2、关闭集群shard allocation,手动执行POST /_flush/synced

3、查看进程和杀死进程

4、重启节点

5、.确认进程是否启动,

6、并重新开启集群shard allocation

7、等待recovery完成,集群health status变成green

将写入es的程序暂停

curl -XPUT ‘ ’ -d ‘{“transient”:{“cluster.routing.allocation.disable_allocation”: true}}’

cd ~/bin

./elasticsearch -d

ps -ef | grep elasticsearch

curl -XPUT ‘ ’ -d ‘{“transient”:{“cluster.routing.allocation.disable_allocation”: false}}’

{

“error” : “Content-Type header [application/x-www-form-urlencoded] is not supported”,

“status” : 406

}

curl 10.3.14.154:9200/_cluster/health?pretty

重启完成后,我们需要为所有的内置用户设置密码。设置密码使用命令:

上面过程中我们需要设置多个默认用户的信息,每个内置用户负责不同的内容。

为以下用户分别设置密码:

elastic

kibana

logstash_system

beats_system

apm_system

remote_monitoring_user

截止到目前Elasticsearch的部分已经修改完毕,下面修改kibana配置以便于让其和Elasticsearch完成连接。

修改配置文件

修改kibana的配置文件config/kibana.yml在配置文件中添加下面内容:

kibana 使用ps -ef|grep kibana是查不到进程的,因为其实运行在node里面。但是我们也不能关闭所有node里面的软件,所以我们需要查询kibana监听端口5601的进程。

使用下面命令关闭kibana:

然后重启Kibana

此时访问kibana( )会提示需要输入账号密码。

注意此时需要输入的是elasticsearch的用户密码。

到此为止ES最基础的安全策略已经添加进来了。

参考文章:

kibana xpath的安装与使用

Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。

X-pack监控组件使您可以通过Kibana轻松地监控ElasticSearch。您可以实时查看集群的健康和性能,以及分析过去的集群、索引和节点度量。此外,您可以监视Kibana本身性能。当你安装X-pack在群集上,监控代理运行在每个节点上收集和指数指标从Elasticsearch。安装X-pack在Kibana上,您可以查看通过一套专门的仪表板监控数据。你可以选择性地安装X-pack这个插件:

以上就成功的在ES5.1中安装了X-PACK

以上就成功安装x-pack到Kibana

如果不需要该插件,也可以通过非常简单的方式删除:

bin/elasticsearch-plugin

remove x-pack

重启ElasticSearch

bin/kibana-plugin

remove x-pack

重启Kibana

以上安装之后,就会发现ES的访问和Kibana的访问都受到限制,需要账户,

那么默认的用户名和密码是多少呢

ElasticSearch:

用户名:elastic

密码:changeme

登录到Kibana会发现 elastic是一个最高级别的user,拥有所有权限,其角色是superuser。

当然在这里我们也可以添加自定义的用户,并为其分配角色,不同的角色对应不同的功能。

我们不仅可以通过kibana可视化的界面来管理用户

另外我们也可以通过ES的Reset Password API来管理用户。

修改了kibana的密码之后,还需要修改kibana.yml的配置文件中

参考:

xpack 过期

加免费授权

或者 disable xpack

disable xpack的方法:

在elasticsearch.yml里加这么一行 xpack.security.enabled: false,

我同时又在kibana.yml里加上xpack.security.enabled: false

ElasticSearch的安全配置

根据安全的3A要求,ES的安全需求分为以下几点:

此外ES是一款在网络上提供服务的产品,其通讯流量同样需要进行加密。

PS:最近根据之前写的文档做了一遍,发现还是有很多缺失的部分,因此重新做了一下更新。

ES的x-pack套件提供了基础的账号认证功能,其功能称为Realm。根据付费情况不同,Realm模块提供不同的认证能力。

此外还有一些开源的解决方案,此处不做赘述。

Realm的开启方式:

在ES启动或者配置文件中进行配置:

bin/elasticsearch -E xxx -E xpack.security.enabled=true

需要注意的是,打开Realm后,需要根据后文的配置将集群内部通讯加密功能打开,否则进行下一步时会报错,目前我尝试的是7.4版本,其他版本:

这个后来我经过研究发现,如果是使用basic类型的license,那么如果开启了x-pack的安全功能,传输层的ssl加密功能是一定要开启的。但是,如果使用trial类型的license,那么可以选择只开启安全功能,但是不启用传输层加密。不知道这是一个实现上的bug还是故意为之。

开启方法:

设置默认的用户和组:

bin/elasticsearch-setup-passwords interactive

这个命令名称在7.4版本上似乎和有些资料中描述的不太一致。

控制台输出:

为kibana设置用户和密码,修改kibana.yml:

ES会提供一些默认账号供使用,使用者也可以自己创建账号,并为其赋予相应的权限。

我自己配置了以后,使用kibana账号登录kibana居然登录不上,后来换成了elastic账号才能够正常登入kibana,具体原因没有研究,后面有机会再看。

ES的鉴权能力采用的是基于角色的访问控制的方法(RBAC)。下图是ES官方文档上的一张图,可以说明这种关系:

ES 提供了两种类型级别的权限,在这两种类别下又有更加细粒度的权限划分:

具体提供的权限列表可以从官方文档获取:

在ES中,用户可以创建角色,并将各种类型的权限赋予角色。

定义角色的官方文档在:

需要定义的内容分为5个部分:

用户和角色都可以在kibana页面上进行修改:

通讯流量加密包括集群内部的通讯流量加密以及集群与集群外的通讯流量加密。

集群内部通讯的流量加密需要通过对ES进行配置来完成。通过配置证书,使用ssl进行加密。

主要的目的是:1. 防止非法的ES节点加入集群,2. 防止通讯流量被监听。

首先需要制作一个证书,我在这里假设,你并没有预先获得一个CA,需要先生成一个:

这样,在ES的根目录下会产生一个证书文件,默认名称是 elastic-stack-ca.p12

然后使用这个ca生成证书和私钥:

默认情况下,会产生一个PKCS#12格式的文件: elastic-certificates.p12

将这个文件拷贝到预先创建的目录

修改elasticsearch.yml文件

需要注意一点经过实际操作,配置中的相对路径的基准是: $ES_HOME/config/ ,而非ES本身的根目录。这一点在配置后,启动ES节点会发现报错:

其中 verification_mode 会有3种模式:

certificate : 需要使用同样的证书才能加入集群

full : 除了验证证书以外,还需要检测hostname和ip

none : 不需要验证证书即可加入集群,一般在调试情况下使用。

至此,ES集群内部加密通讯配置完成。

参考文档:

ES本身对外提供基于http的rest接口,需要对这个接口的通信进行加密,需要在elasticsearch.yml中配置

使用 kibana 和ES进行通讯,需要修改 kibana 的配置文件 kibana.yml

需要注意的是,ES集群如果是使用自签的证书的话,需要加入配置:

即使这样,kibana后台也有大量的报错:

同时 kibana 也需要设置自己的http服务为https:

参考文档:

开启ES的审计日志,需要在ES的配置文件 elasticsearch.yml 中添加配置:

完成配置后,需要重启节点生效。

参考文档:

除了开关之外,ES的配置文件中还有很多详细的设置,更多详情可以参考:

在审计功能开启后,相应节点的日志目录下,会有一个 xxx_audit.json 的文件,里面会有相关的安全事件记录其中。

(责任编辑:IT教学网)

更多

推荐word文章