在 8.0 中,我们很高兴为所有用户带来简化的安全功能。 从 7.1 开始,我们向所有人免费提供了确保 Elastic Stack 安全所需的所有功能。
然而,我们知道设置安全性并不好玩,你需要专注于你的项目目标。 好消息给你! 从 8.0 开始,自管理集群默认启用 Elastic Stack 安全性,配置工作几乎为零。 只需启动新的 Elasticsearch 和 Kibana 版本并继续充分利用 Elastic Stack,我们将为你提供支持! 如果你使用的是 Elastic Cloud,请不要担心——我们已经为你解决了安全问题。
Elastic Stack 8.0 安装介绍
Elastic Stack 8.0 安装介绍_哔哩哔哩_bilibili
轻松获得所需的所有安全性
简化的安全性包括以下功能,这些功能跨越多个层和产品,默认启用:
- 用户认证
- 具有基于角色的访问控制的用户授权
- Kibana Spaces 多租户
- 使用 TLS 的加密节点到节点通信
- 使用 HTTPS 与 Elasticsearch API 进行加密通信
根据他们的角色,轻松控制访问你资源的人员及其访问级别 | |
使用空间(Spaces)轻松保护组织团队或客户的功能和资源 | |
通过节点身份验证和加密通信,轻松安全地将节点添加到集群 | |
与 Elasticsearch 的通信是安全的。 通过 UI 一步轻松安全地连接 Kibana |
Stack Security 团队对我们来说最重要的是,我们的用户在安装和运行 Elastic Stack 时可以从尽可能多的安全性中受益 — 同时消除任何摩擦。因此,我们设定了一个雄心勃勃的目标:以精简、轻松和透明的方式提供所有之前列出的安全功能。我们认为你不应该将时间花在繁琐的配置上。同时,你不应该在安全性上妥协。
此外,简化的安全性不使用跨不同实例的通用默认值,当功能在技术上启用但基于已知的“秘密”时,这会给人一种错误的安全感。相反,在引导过程中,每个新部署都会创建并使用唯一的凭证、证书和加密密钥。
今天,我们很高兴为你带来这项雄心勃勃的计划的成果。
如果你使用 Elastic 的托管云服务或编排产品、Elastic Cloud Enterprise (ECE) 和 Elastic Cloud on Kubernetes (ECK),你不会有任何变化——堆栈安全性已默认配置。
要开始使用,只需启动 Elasticsearch 和 Kibana,使用新的 Web UI 将它们连接起来,它们就可以安全地协同工作,开箱即用。当然,你可以自定义任何你需要的内容,以满足你组织的安全要求。
分两步安全启动新部署
首次下载并运行 Elasticsearch 时,你将收到一个注册令牌和 elastic 超级用户的凭据。 这实际上是你启动 Elastic Stack 并使用我们之前描述的安全功能运行所需的所有信息,因此请妥善保管。你可以在官方的地址找到详细的描述。当我们首次运行 Elasticsearch 时:
bin/elasticsearch
当 Elasticsearch 启动后,你需要像后滚动你的屏幕,并看到如下所示的内容:
如上所示,我们看到超级用户 elastic 的密码及 Kibana 的 enrollment token (注册 token)。我们需要拷贝它们供以后使用。我们可以使用如下的命令来得到证书的 fingerprint:
openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt
如果这个时候,我们在 Chrome 下去访问 Elasticsearch 的地址 https://localhost:9200,我们会得到如下的信息:
显然这是因为它是一个自签名的证书而导致的。我们在这个屏幕上打入 thisisunsafe:
在上面的界面输入之前生成的密码:
如果你使用的是 Safari 浏览器:
最终,我们输入用户名及密码:
如果大家觉得每次这样很麻烦,我们可以把自签名的证书加载到系统里去。我们可以这么做:
openssl x509 -in http_ca.crt -out cert.pem
上面的命令将会生成一个 cert.pem 的文件。我们可以直接把它拖进 macOS 中的 keychain access 中:
最终,我们可以看到:
这样,当我们再次使用 https://localhost:9200 来访问时:
我可以直接就进入到登录页面了。关于其它操作系统的证书安装,我在这里就不再赘述了。你可以参考文章 “Security:如何安装 Elastic SIEM 和 EDR” 阅读更多关于更新证书方面的知识。
我们接下来启动 Kibana:
bin/kibana
如上所示,它让我们去上面的链接去配置 Kibana:
我们把之前的 Elasticsearch 运行输出的 enrollment token 拷贝进来。 点击上面的 Configure Elastic。Kibana 将设置所有内容,无需进行任何配置,并将通过 TLS 连接到 Elasticsearch。
设置完成后,你就可以开始了。 使用 Elasticsearch 步骤中提供的凭据以超级用户身份登录,然后开始使用新的安全部署。
我们拷贝之前在 Elasticsearch 中输出的密码,并输入到上市的 Password 输入框中。点击 Log in:
这样我们就进入到 Kibana 的界面中了。 请注意在上面的 Kibana 中,它的访问地址不是 https 形式的,而是 http 的,所以你可以通过 http://localhost:9200 来进行访问。
如果你需要向集群添加更多节点,请通过运行:
bin/elasticsearch-create-enrollment-token -s node
获取 Elasticsearch 注册 token。
请记住,自动配置过程仅在第一次启动新集群时执行。 如果已经设置了明确的安全配置,或者集群已经从以前的版本升级,则不会进行任何更改。 升级助手将指导用户完成从 7.17 升级所需的步骤。
我们可以在 config/kibana.yml 中找到这样的配置(虽然在默认的情况下都已经配置好了):
elasticsearch.serviceAccountToken: AAEAAWVsYXN0aWMva2liYW5hL215LXRva2VuOkVVbFBuY3VUUmNpZVBqbXU0S1Y2cGc
对于一些开发者来说,生成上面的 token 可能不是很清楚。我们可以使用如下的命令来生产上面的 token:
./bin/elasticsearch-service-tokens create elastic/kibana my-token
$ ./bin/elasticsearch-service-tokens create elastic/kibana my-token
SERVICE_TOKEN elastic/kibana/my-token = AAEAAWVsYXN0aWMva2liYW5hL215LXRva2VuOkVVbFBuY3VUUmNpZVBqbXU0S1Y2cGc
运用 Metricbeat 收集指标
如果你对如何使用 Beats 还不是很熟的话,那么请阅读我之前的教程:
- Beats:Beats 入门教程 (一)
- Beats:Beats 入门教程 (二)
如何把域名访问添加到 Elasticsearch 的访问中去
如何把域名访问添加到 Elasticsearch 的访问中去_哔哩哔哩_bilibili
在上面的配置中,由于 https 的使用,我们在配置 Beats 需要注意一些问题。我们再次打开 Elasticsearch 的安装目录:
$ pwd
/Users/liuxg/elastic/elasticsearch-8.0.0
$ ls config/certs/
http.p12 http_ca.crt transport.p12
在 Elasticsearch 的 config 目录中,我们可以看到一个叫做 http_ca.crt 的文件。我们把这个文件拷贝到一个目录,或者直接到 Metricbeat 的安装目录下:
$ pwd
/Users/liuxg/elastic/metricbeat-8.0.0-darwin-x86_64
$ ls
LICENSE.txt http_ca.crt metricbeat.yml
NOTICE.txt kibana module
README.md logs modules.d
data metricbeat
fields.yml metricbeat.reference.yml
从上面,我们可以看到有一个叫做 http_ca.crt 的文件。接下来我们来配置 metricbeat.yml 文件:
metricbeat.yml
如上所示,我们已经对 output.elasticsearch 进行了配置。
如果我们不想使用 ssl 进行安全验证,我们也可以做如下的配置:
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["localhost:9200"]
# Protocol - either `http` (default) or `https`.
protocol: "https"
# Authentication credentials - either API key or username/password.
#api_key: "id:api_key"
username: "elastic"
password: "Y4f0Q2dVhbS1X_*b0+7B"
ssl.verification_mode: none
我们接下来运行如下的命令:
./metricbeat test config
$ ./metricbeat test config
Config OK
我们再接下来使用如下的命令来测试输出:
./metricbeat test output
$ ./metricbeat test output
elasticsearch: https://localhost:9200...
parse url... OK
connection...
parse host... OK
dns lookup... OK
addresses: ::1, 127.0.0.1
dial up... OK
TLS...
security... WARN server's certificate chain verification is disabled
handshake... OK
TLS version: TLSv1.3
dial up... OK
talk to server... OK
version: 8.0.0
上面标明我们的 output 配置是正确的。我们接下来使用如下的命令来 setup:
./metricbeat setup
$ ./metricbeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
它表明我们的命令的运行是成功的。如果你对 setup 命令有什么疑问的话,请参阅我之前的文章 “Beats:解密 Filebeat 中的 setup 命令”。
我们接下来使用如下的命令来运行 Metricbeat:
./metricbeat -e
我们回到 Kibana 的 Dashboard 中进行查看:
这样,我们就看到了当前 host 的指标信息。
关于其它 Beats 的配置和 Metricbeat 的配置类似。这里就不再赘述了。
使用 API key 来配置 Metricbeat
在上面配置 Metricbeat 的时候,我们尝试使用用户名及密码来配置的。特别指出的是:在实际的使用中,千万要避免使用 elastic 这个超级用户来进行配置,因为它的权限太大了。强烈建议创建一个具有适当权限的一个用户来进行配置。如果你还不知道该如何创建一个用户,请参考文章 “Elasticsearch:用户安全设置”。
我们也可以通过 Elasticsearch 控制台生成 Elasticsearch API 密钥,并将 Metricbeat 配置为使用新密钥安全地连接到 Elasticsearch。
我们把上面的 API Key 拷贝出来,并针对 metricbeat.yml 做如下的配置:
$ ./metricbeat test config
Config OK
$ ./metricbeat test output
elasticsearch: https://localhost:9200...
parse url... OK
connection...
parse host... OK
dns lookup... OK
addresses: ::1, 127.0.0.1
dial up... OK
TLS...
security: server's certificate chain verification is enabled
handshake... OK
TLS version: TLSv1.3
dial up... OK
talk to server... OK
version: 8.4.3
从上面的检测结果中,我们可以看出来,配置及输出测试是成功的。
$ ./metricbeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
我们接下来运行如下的命令就可以采集数据了:
./metricbeat -e
使用 fingerprint 来配置 Beats
我们还可以使用 fingerprint 来进行连接。Fingerprint 的好处是,我们不必把把证书拷贝到 Logstash 运行的服务器中。请参考 “Beats:使用 fingerprint 来连接 Beats/Logstash 和 Elasticsearch”
运用 Logstash 来采集数据
我们可以阅读文章 “Logstash:如何连接到带有 HTTPS 访问的集群”。
快速了解一下是如何工作的
当你第一次下载并运行 Elasticsearch 时,Elasticsearch 将透明地执行以下任务:
- 为 TLS 设置:它将生成证书颁发机构、传输和 HTTP 层证书,以及 TLS 舞蹈所需的所有相关“好东西”——当然包括私钥、证书指纹等。它还将存储密码安全。
- 设置安全设置:这还包括用于传输和 HTTP 加密的设置:xpack.security.ssl.http.enabled 和 xpack.security.ssl.transport.enabled
- 准备传入连接:它将生成一种特殊类型的令牌,即注册令牌,它封装了 Kibana 连接到 Elasticsearch 所需的所有信息,并启用其注册 API,该 API 会监听新连接。
- 为 elastic 内置超级用户生成密码。
所有这些任务对用户都是透明的。
现在,当用户第一次运行 Kibana 时,他们只需要在新的 Kibana 启动 UI 中输入注册令牌,Kibana 就会解压缩所需的所有信息并连接到 Elasticsearch 。通过注册请求,Elasticsearch 将为 kibana_system 用户生成并设置密码。 Kibana 会将配置和凭据保存在 kibana.yml 和密钥库中。
请注意,Kibana 不会通过浏览器启用 Web HTTP TLS。这是我们建议考虑的附加步骤,以进一步提高系统的安全性。
如何配置 Elasticsearch 不带安全性
在某些情况下,为了测试的方便,你可能需要我们的 Elasticsearch 集群不带有安全,这样更便于我们测试我们的软件或应用。我们在启动 Elasticsearch 之前,我们必须对 Elasticsearch 的配置做一些修改:
config/elasticsearch.yml
xpack.security.enabled: false
xpack.security.http.ssl.enabled: false
我们把上面的两行添加到 Elasticsearch 的配置文件中。然后启动 Elasticsearch。这样启动后的 Elasticsearch 就没有安全配置了。你可以通过 http://localhost:9200 来进行访问。启动后的 Kibana 我们也不需要输入用户名及密码了。
如何配置 Elasticsearch 只带有基本安全
在有些时候,我们并不希望配置 Elasticsearch 具有 HTTPS 的访问。我们只想配置 Basic authentication。这个时候,我们在启动 Elasticsearch 之前,针对 Elasticsearch 的配置文件做如下的修改:
config/elasticsearch.yml
xpack.security.enabled: true
xpack.security.http.ssl.enabled: false
然后,我们依据之前的文章 “Elasticsearch:设置 Elastic 账户安全” 来配置 Elasticsearch 及 Kibana 即可。
另外一中配置的方法是:完全按照本文章刚开始的步骤选择默认的方式先安装,这样集群具有 HTTPS 的访问。让后我们需要做如下的修改:
- config/elasticsearch.yml
我们需要修改上面的配置 xpack.security.http.ssl.enabled 为 false。然后重新启动 Elasticsearch。经过这样的修改 Kibana 将不能正常访问 Elasticsearch,这是因为 Elasticsearch 的访问地址现在是 HTTP 而不是之前的 HTTPS。为此,我们需要重新修改 Kibana 的配置。
- config/kibana.yml
在上面,我们需要针对 elasticsearch.hosts 进行修改。之前的 https://192.168.0.3:9200 修改为 http://192.168.0.3:9200 的访问。重新启动 Kibana 即可。
对 Elastic Stack、Elastic 解决方案和其他产品的影响
我们希望你确信安全性按预期工作。我们现在只允许加载我们的 Elasticsearch 安全模块——不再可以用可以拦截和管理传入 REST 请求的第三方插件替换它。
至于解决方案,Elastic Observability、Security 和 Enterprise Search 已经假设 Stack Security 已启用。这里没有任何变化,只是设置这些组件会更容易(因为默认情况下已经启用了堆栈安全性)。其他产品(如 Elastic Agent)会自动设置为安全连接 Elasticsearch。
立即开始使用 Elastic Stack 8.0
下载 Elasticsearch 和 Kibana 以创建安全的 Elastic Stack 部署。如果你想了解有关简化安全性的更多信息,请参阅我们的指南。否则,你可以在 Elasticsearch 服务上启动安全且免费的云试用部署,开始你的搜索、观察和保护之旅。文章来源:https://www.toymoban.com/news/detail-404217.html
我们欢迎你的反馈,并且一如既往,你可以在 Twitter (@elastic) 和 Elastic 论坛上找到我们。文章来源地址https://www.toymoban.com/news/detail-404217.html
到了这里,关于Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!