简介
官方链接
ElasticSearch于6.8及7.1版本开始提供免费的x-pack, 并已默认集成,只需通过简单的配置即可开启。
我们知道 Elastic 安全是非常重要的。没有这个我们的数据可以被任何的人进行访问,串改,删除。Elastic Stack 的安全是由 x-pack 所提供的。在 Elastic Stack 7.0 版本之前,这个是商用的版本,需要进行安装,并购买。从Elastic Stack 7.0之后,x-pack 都已经在发布版中,所以不需要进行安装。我们只需要进行配置就可以了。
通常我们的ES节点部署在内网当中,不对外暴露9200等端口,kibana是一款非常强大的可视化工具,devTools使开发人员可以方便的操作集群,索引,但是这个页面非开发人员也是可以看到的,因此第一步就是先要屏蔽非es使用方,提供一个登录认证功能。
启用Elastic安全功能
使用基本和试用许可证时,默认情况下会禁用 Elasticsearch 安全功能。 要启用它们,首先,我们必须停止所以正在运行的 Elastic Stack 软件:
- 停止 Kibana Start and stopping Kibana
- 停止 Elasticsearch Stopping Elasticsearch
- 添加 xpack.security.enabled
首先在elasticsearch.yml中加入以下配置
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
备注:
这一步加完之后启动Es,访问http://localhost:9200/就会弹出验证界面,但是这个时候还没有设置用户名和密码,等后续设置完用户名和密码之后,可以输入(elastic,elastic)进入
- 启用 single-node 发现模式
如果你有多个节点,则可以在群集中的每个节点上启用 Elasticsearch 安全功能,并为节点间通信配置传输层安全性(TLS),这超出了本教程的范围。 通过启用单节点发现,我们推迟了 TLS 的配置。 例如,添加以下设置:
代码语言:javascript复制elasticsearch.yml 文件中启用 single-node 发现模式:
discovery.type: single-node
- 重启 Elasticsearch
- 为内置用户编辑创建密码
我们可以参照链接来创建我们的密码。您可以将 内置用户 用于特定的管理目的:apm_system,beats_system,elastic,kibana,logstash_system 和 remote_monitoring_user。
在使用它们之前,我们必须为它们设置密码。在 Elasticsearch 的目录里安装打入如下的命令:
代码语言:javascript复制./elasticsearch-setup-passwords interactive
执行命令:分别设置各个组件的密码(pws=elastic)
lihuandeMacBook-Pro:bin lihuan$ ./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]:
passwords must be at least [6] characters long
Try again.
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]
lihuandeMacBook-Pro:bin lihuan$
ES的设置结束,接下来是kibana,切换至kibana/bin目录。
对于一些用户喜欢一个随机的密码,那么你可以使用如下的方式来创建你自己密码:
代码语言:javascript复制./bin/elasticsearch-setup-passwords auto
这样它可以帮我生成一些随机的密码。
- 为 Kibana 添加内置用户
启用 Elasticsearch 安全功能后,用户必须使用有效的用户 ID 和密码登录 Kibana。
删除旧验证:
代码语言:javascript复制查看keystore列表:
./kibana-keystore list
操作:
lihuandeMacBook-Pro:bin lihuan$ ls
kibana kibana-keystore kibana-plugin
lihuandeMacBook-Pro:bin lihuan$ ./kibana-keystore list
ERROR: Kibana keystore not found. Use 'create' command to create one.
如果发现已安装,但忘记了密码,可以删除原有的配置:
./kibana-keystore remove elasticsearch.username
./kibana-keystore remove elasticsearch.password
操作:
lihuandeMacBook-Pro:bin lihuan$ ./kibana-keystore remove elasticsearch.username
./kibana-keystore remove elasticsearch.password
lihuandeMacBook-Pro:bin lihuan$ ./kibana-keystore remove elasticsearch.password
lihuandeMacBook-Pro:bin lihuan$
添加验证:
配置 Kibana 以使用内置 kibana 用户和您创建的密码
如果您不介意在配置文件中显示密码,请取消注释并更新 Kibana 安装目录下的 config 子目录中的 kibana.yml文 件中的以下设置:
代码语言:javascript复制elasticsearch.username: "kibana"
elasticsearch.password: "your_password"
这里的 “your_password” 就是我们在上一节 Elasticsearch 中使用 elasticsearch-setup-passwords 命令配置的内置用户密码。
如果您不想将你的用户 ID 和密码放在 kibana.yml 文件中,请将它们存储在密钥库中。 运行以下命令以创建 Kibana 密钥库并添加安全设置:
代码语言:javascript复制最后添加ES密码,虽然可以在kibana.yml中配置,但是不安全,要考虑该目录的Linux权限,增加了复杂性,这也是官方提供keystore工具的原因之一:
./kibana-keystore add elasticsearch.username
./kibana-keystore add elasticsearch.password
操作:username=elastic password=elastic
lihuandeMacBook-Pro:bin lihuan$ ./kibana-keystore add elasticsearch.username
Enter value for elasticsearch.username: *******
lihuandeMacBook-Pro:bin lihuan$ ./kibana-keystore add elasticsearch.password
Enter value for elasticsearch.password: ******
lihuandeMacBook-Pro:bin lihuan$
注意:这里的用户名密码是在Es配置的时候添加的Kibana用户名和密码,不可以重新设置
出现提示时,请为这些设置值指定 kibana 内置用户及其密码。 启动 Kibana 时会自动应用这些设置。
上面的两种方法可以任选其中的一个。
- 重启 Kibana
sh kibana
访问:http://localhost:5601/
创建用户
在上面,我们已经使用内置用户 elastic 登录我们的 Kibana。现在我们去 Manage/Sercurity/Users 页面:
显示的页面如下:
在这个页面里,我们可以看到一些内置的用户。我们选择 "Create new user。
在这里,我们输入选择我们的用户名及密码信息,然后点击 Create user。您会注意到,在创建用户时,您可以为其分配角色。目前前我们暂不分配一个角色 - 我们将在后续步骤中再回过头来看看。
我们可以点击 Management / Security / Roles来查 看我们的 role 列表:
每个角色定义一组特定的操作(如读取,创建或删除),这些操作可以在特定的安全资源(例如索引,别名,文档,字段或集群)上执行。 为了帮助您启动和运行,有内置角色。
我们将 kibana_use r角色分配给你的用户。 返回 Management / Security / Users 页面并选择你的用户。 添加 kibana_user 角色并保存更改。 例如:
通过这样的设置,这个 liuxg 的用户可以对 Kibana 进行所有功能的访问。我们可以点击 Kibana 最右角上方的一个图标进行logout,然后用最新创建的账号进行登录,看看是否成功。
我们可以为我们的账号创立一个 superuser 账号,这样这个账号基本上就会具有所有的 role。这个对我们做一些测试是非常有帮助的。