使用双向 TLS 的 Elastic Agent 部署模型
编辑使用双向 TLS 的 Elastic Agent 部署模型
编辑与仅服务器提供证书的单向 TLS 相比,相互传输层安全性 (mTLS) 提供了更高水平的安全性和信任度。它不仅确保服务器是它声称的那样,而且客户端也经过身份验证。这在双方都需要建立信任并验证彼此身份的场景中尤其宝贵,例如在安全的 API 通信、Web 服务或远程身份验证中。
有关使用单向或双向 TLS 建立组件之间 TLS 连接的流程摘要,请参阅 单向和双向 TLS 证书流程。
概述
编辑使用双向 TLS,会发生以下身份验证和证书验证:
- 客户端身份验证:客户端在 TLS 握手期间向服务器呈现其数字证书。此证书由受信任的证书颁发机构 (CA) 颁发,并包含客户端的公钥。
- 服务器身份验证:服务器还向客户端呈现其数字证书,以证明其身份并共享其公钥。服务器的证书也由受信任的 CA 颁发。
- 证书验证:客户端和服务器都通过针对 CA 的公钥检查数字签名来验证彼此的证书(请注意,客户端和服务器不必使用相同的 CA)。
Fleet 托管的 Elastic Agent 具有两个主要连接以确保正确的操作:
- 连接到 Fleet Server(控制平面,用于签入、下载策略等)。
- 连接到输出(数据平面,例如 Elasticsearch 或 Logstash)。
为了引导,Elastic Agent 最初必须与位于本地或 Elastic Cloud 中的 Fleet Server 建立安全连接。此连接验证过程可确保代理的真实性。验证后,代理将接收策略配置。此策略下载使代理了解它需要与之交互的其他组件。例如,它可以深入了解它应该将数据写入的输出目标。
当需要 mTLS 时,Elastic Agent、Fleet 和 Fleet Server 之间的安全设置通过以下步骤配置:
- 启用 mTLS。
- 在注册 Elastic Agent 时,使用通过
elastic-agent install
或elastic-agent enroll
命令传递的参数配置 Elastic Agent 和 Fleet Server 之间的初始 mTLS 连接。 -
注册完成后,Elastic Agent 将从 Fleet Server 下载初始 Elastic Agent 策略。
- 如果 Elastic Agent 策略包含 mTLS 配置设置,则这些设置将优先于注册期间使用的设置:这包括用于 Elastic Agent 和 Fleet Server 之间连接的 mTLS 设置(以及 Kibana 中的 Fleet 应用程序,用于 Fleet 托管的 Elastic Agent),以及 Elastic Agent 和其指定的输出之间使用的设置。
- 如果 Elastic Agent 策略不包含任何 TLS、mTLS 或代理配置设置,则这些设置将保持其在 Elastic Agent 注册时指定的设置。请注意,无法通过 Elastic Agent 策略删除初始 TLS、mTLS 或代理配置设置;它们只能更新。
使用 Elastic Defend 集成运行 Elastic Agent 时,用于连接到 Fleet Server 和 Elasticsearch 的 TLS 证书 需要使用 RSA 生成。有关配置 TLS 或 mTLS 时可用的算法的完整列表,请参阅 为独立 Elastic Agent 配置 SSL/TLS。这些设置适用于独立和 Fleet 托管的 Elastic Agent。
本地部署
编辑请参阅 为自管理 Fleet Server 配置 SSL/TLS 中的步骤。要配置双向 TLS,请在安装 Elastic Agent 和 Fleet Server 时包含以下附加参数。
Elastic Agent 设置
编辑在本地安装 Elastic Agent 时,请使用以下选项:
|
Fleet Server 连接到 Elastic Agent 时受信任的 CA 证书列表 |
|
向 Fleet Server 提供的身份验证 Elastic Agent 证书 |
|
向 Fleet Server 提供的 Elastic Agent 证书密钥 |
|
包含 Elastic Agent 用于连接到 Fleet Server 的双向 TLS 私钥密码的文件路径 |
Fleet Server 设置
编辑在本地安装 Fleet Server 期间,Fleet Server 使用 Elasticsearch 和 Elastic Agent 进行身份验证。您可以使用以下 CLI 选项来促进这些安全连接:
|
用于 Elasticsearch 连接的 CA |
|
向 Elasticsearch 提供的 Fleet Server 证书 |
|
向 Elasticsearch 提供的 Fleet Server 证书密钥 |
|
Elastic Agent 连接到 Fleet Server 以及 Fleet Server 验证 Elastic Agent 身份时受信任的 CA 证书列表。 |
|
身份验证期间向 Elastic Agent 提供的 Fleet Server 证书 |
|
用于解密证书的 Fleet Server 私有证书密钥 |
Fleet 设置
编辑在 Kibana 中,导航到 Fleet,打开 设置 选项卡,然后选择要配置的 输出。在 高级 YAML 配置 中,添加以下设置:
|
Fleet Server 连接到 Elastic Agent 时受信任的 CA 证书列表 |
|
此证书将传递给在其策略中配置此输出的所有代理。代理在与输出建立 mTLS 连接时使用此证书。 您可以应用完整的证书,在这种情况下,所有代理都获得相同的证书;或者,如果证书对于每个代理都是唯一的,则可以指向代理上证书所在的本地目录。 |
|
此证书密钥将传递给在其策略中配置此输出的所有代理。证书密钥用于解密 SSL 证书。 |
指定这些 SSL 设置时,请注意以下事项:
- 证书颁发机构、证书和证书密钥需要指定为本地文件的路径。您不能指定目录。
- 您可以定义多个 CA 或 CA 路径。
- 只能定义一个证书和一个证书密钥。
在 高级 YAML 配置 中,应按以下格式添加这些设置:
ssl.certificate_authorities: - /path/to/ca ssl.certificate: /path/to/cert ssl.key: /path/to/cert_key
或
ssl.certificate_authorities: - /path/to/ca ssl.certificate: /path/to/cert ssl.key: /path/to/cert_key
Elastic Cloud 上的 Fleet Server
编辑在此部署模型中,所有进入 Elastic Cloud 的流量都在 Elastic Cloud 边界处终止其 TLS 连接。由于此终止不是基于每个租户进行处理的,因此此时无法使用特定于客户端的证书。
我们目前不支持此部署模型中的 mTLS。下面显示了一个替代部署模型,您可以在其中部署自己的安全代理,并在其中终止 TLS 连接。
使用代理的 Elastic Cloud 上的 Fleet Server
编辑在这种情况下,如果您有权访问代理,则可以在代理和代理之间配置 mTLS。
Elastic Agent 设置
编辑在本地安装 Elastic Agent 时,请使用以下选项:
|
Elastic Agent 连接到 Fleet Server 或 Elastic Agent 和 Fleet Server 之间的代理时受信任的 CA 证书列表 |
|
向 Fleet Server 或 Elastic Agent 和 Fleet Server 之间的代理进行身份验证时要提供的 Elastic Agent 证书 |
|
用于解密证书的 Elastic Agent 私有证书密钥 |
|
包含 Elastic Agent 用于连接到 Fleet Server 的双向 TLS 私钥密码的文件路径 |
本地 Fleet Server 和托管 Elasticsearch 服务
编辑在某些情况下,您可能希望在自己的场所部署 Fleet Server。在这种情况下,您可以提供自己的证书和证书颁发机构,以启用 Fleet Server 和 Elastic Agent 之间的 mTLS。
但是,与 Elastic Cloud 上的 Fleet Server 用例一样,数据平面 TLS 连接在 Elastic Cloud 边界处终止。Elastic Cloud 不是多租户服务,因此无法提供每个用户的证书。
与 Elastic Cloud 上的 Fleet Server 用例类似,可以在此类环境中放置安全代理以终止 TLS 连接并满足 mTLS 要求。
Elastic Agent 设置
编辑在本地安装 Elastic Agent 时,请使用以下选项,类似于 本地部署 Elastic Agent
|
Elastic Agent 连接到 Fleet Server 时受信任的 CA 证书列表 |
|
向 Fleet Server 提供的身份验证 Elastic Agent 证书 |
|
用于解密证书的 Elastic Agent 私有证书密钥 |
|
包含 Elastic Agent 用于连接到 Fleet Server 的双向 TLS 私钥密码的文件路径 |
Fleet Server 设置
编辑在本地安装 Fleet Server 期间,请使用以下选项,以便 Fleet Server 可以向代理然后向安全代理服务器进行身份验证:
|
通过安全代理用于 Elasticsearch 连接的 CA。此 CA 用于对来自安全代理的 TLS 连接进行身份验证。 |
|
Elastic Agent 连接到 Fleet Server 时受信任的 CA 证书列表 |
|
身份验证期间向 Elastic Agent 提供的 Fleet Server 证书 |
|
用于解密证书的 Fleet Server 私有证书密钥 |
集群设置
编辑这与本地部署中描述的内容相同。主要区别在于,您需要使用安全代理接受的证书,因为 mTLS 是在代理和安全代理之间设置的。