Elastic Serverless Forwarder 输入插件
编辑Elastic Serverless Forwarder 输入插件
编辑- 插件版本:v0.1.5
- 发布日期:2024-09-12
- 更改日志
对于其他版本,请参阅 版本化插件文档。
获取帮助
编辑有关插件的问题,请在 Discuss 论坛中发起主题。对于错误或功能请求,请在 Github 中提交问题。有关 Elastic 支持的插件列表,请查阅 Elastic 支持矩阵。
描述
编辑使用此输入,您可以通过 http(s) 连接接收来自 Elastic Serverless Forwarder 的事件,连接到配置的 port
。
最小配置
编辑SSL 已启用 | SSL 已禁用 |
---|---|
input { elastic_serverless_forwarder { port => 8080 ssl_certificate => "/path/to/logstash.crt" ssl_key => "/path/to/logstash.key" } } |
input { elastic_serverless_forwarder { port => 8080 ssl_enabled => false } } |
丰富
编辑此输入对事件提供 最少的丰富,并避免包含有关自身、接收数据客户端或从请求解码的原始事件的信息。
建议发送方注意 Logstash 中 保留的字段。ESF 默认发送 Logstash 需要的 @timestamp
字段,但如果此值缺失,则将使用当前时间填充。
安全
编辑此插件默认启用 SSL。
至少,您需要配置插件以显示其身份,或禁用 SSL。
此外,您可能希望使用 SSL 客户端身份验证对客户端进行身份验证,或使用下面所述的 HTTP 基本身份验证对请求进行身份验证。
SSL 身份
编辑为了与客户端建立 SSL 连接,此输入插件需要显示客户端信任的 SSL 证书,并能够访问关联的密钥。这些可以通过 ssl_certificate
、ssl_key
和可选的 ssl_key_passphrase
进行配置。
SSL 客户端身份验证
编辑默认情况下,此插件在 SSL 协商期间不会向客户端请求证书。
可以使用 ssl_client_authentication
将其配置为请求或要求客户端证书,这通常还需要将其配置为信任 ssl_certificate_authorities
列表。在验证所呈现的证书时,ssl_verification_mode
控制证书的验证方式。
ESF 目前不支持 显示 客户端证书,因此请求或要求客户端显示身份仅在与 SSL 终止代理结合使用时才有用。
HTTP 基本身份验证
编辑您可以通过配置 auth_basic_username
和 auth_basic_password
将此插件配置为使用 HTTP 基本身份验证对请求进行身份验证。
基本身份验证不能替代 SSL,因为它本身不提供机密性或安全性。当与 SSL 禁用一起使用时,HTTP 基本凭据实际上以明文形式传输,攻击者可以轻松地恢复它们。
将 Elastic Serverless Forwarder 与 Elasticsearch 输出一起使用
编辑以下是一些有关如何配置 Elastic Serverless Forwarder 输入以与 elasticsearch 输出一起使用的提示
-
当您将 Elastic Serverless Forwarder 输入与 Elasticsearch 输出插件 一起使用时,请在输出配置中设置
document_id
。output { elasticsearch { ... document_id => "%{[@metadata][_id]}" ... } }
- 从 Elastic Serverless Forwarder 1.10.0 版本开始,配置如上例所示的
document_id
就足够了(_id
字段不再可用,而是 Logstash 现在接收@metadata._id
字段)。 -
对于 Elastic Serverless Forwarder v1.9.0 及更早版本,请使用过滤器将字段
_id
重命名为@metadata._id
filter { # support ESF < 1.10 if [_id] and ![@metadata][_id] { mutate { rename => { "_id" => "[@metadata][_id]" } } } }
Elastic Serverless Forwarder 输入配置选项
编辑此插件支持以下配置选项以及稍后描述的 通用选项。
设置 | 输入类型 | 必需 |
---|---|---|
否 |
||
否 |
||
否 |
||
否 |
||
已弃用 |
||
有效的系统文件路径 |
否 |
|
否 |
||
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
有效的系统文件路径 |
否 |
|
否 |
||
否 |
||
字符串,其中之一为 |
否 |
另请参阅 通用选项,了解所有输入插件支持的选项列表。
ssl
编辑在 0.1.3 中已弃用。
由 ssl_enabled
替换
- 值类型为 布尔值
- 默认值为
true
事件默认通过 SSL 发送,这需要配置此插件以使用 ssl_certificate
显示身份证书,并使用 ssl_key
显示密钥。
您可以使用 +ssl => false+
禁用 SSL。
ssl_certificate
编辑- 值类型为 路径
- 此设置没有默认值。
要使用的 SSL 证书。此证书 必须 是 PEM 格式,并且 可以 包含证书链,从标识自身的证书开始,后跟零个或多个有序中间证书,最后可选地以根签名颁发机构结束。提供完整的链允许客户端信任我们的证书,如果其配置允许他们信任我们的某个中间证书。
ssl_certificate_authorities
编辑- 值类型为 数组
- 默认值为
[]
针对这些颁发机构验证客户端证书。您可以定义多个文件或路径。所有证书都将被读取并添加到信任库。
如果您希望执行客户端身份验证,则需要将 ssl_client_authentication
设置为 optional
或 required
。
ssl_cipher_suites
编辑- 值类型为 数组
- 默认值为
['TLS_AES_256_GCM_SHA384', 'TLS_AES_128_GCM_SHA256', 'TLS_CHACHA20_POLY1305_SHA256', 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256', 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256', 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256', 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384', 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384', 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256', 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256']
要使用的密码套件列表,按优先级列出。
这是一个高级 SSL 配置。
此默认列表适用于 OpenJDK 11.0.14 及更高版本。对于较旧的 JDK 版本,默认列表仅包含该版本支持的套件。例如,ChaCha20 系列密码在较旧版本中不受支持。
ssl_client_authentication
编辑-
值可以是以下任意一个
-
none
:不请求客户端证书,或验证所提供的证书 -
optional
:请求客户端证书,并在仅当提供时根据我们的信任机构验证它 -
required
:要求客户端提供由受信任的证书颁发机构签发的有效证书
-
- 默认值为
"none"
默认情况下,服务器不执行任何客户端身份验证。这意味着当启用 SSL 时,来自客户端的连接是私有的,但此输入将允许来自任何客户端的 SSL 连接。如果希望将此插件配置为拒绝来自不受信任主机的连接,则需要将此插件配置为对客户端进行身份验证,并且可能还需要将其配置为包含 ssl_certificate_authorities
列表。
ssl_enabled
编辑- 值类型为 布尔值
- 默认值为
true
默认情况下,事件通过 SSL 发送,这需要将此插件配置为使用 ssl_certificate
提供身份证书,并使用 ssl_key
提供密钥。
可以使用 +ssl_enabled => false+
禁用 SSL。
ssl_supported_protocols
编辑- 值类型为 数组
- 允许的值为:
'TLSv1.1'
、'TLSv1.2'
、'TLSv1.3'
- 默认值取决于使用的 JDK。对于最新的 Logstash,默认值为
['TLSv1.2', 'TLSv1.3']
。'TLSv1.1'
不被认为是安全的,仅为旧版应用程序提供。
在与 HTTP 端点建立连接时要使用的允许的 SSL/TLS 版本列表。
这是一个高级 SSL 配置。
对于 Java 8,'TLSv1.3'
仅从 8u262(AdoptOpenJDK)开始支持,但要求您在 Logstash 中设置 LS_JAVA_OPTS="-Djdk.tls.client.protocols=TLSv1.3"
系统属性。
如果将插件配置为在任何最近的 JVM(例如 Logstash 附带的 JVM)上使用 'TLSv1.1'
,则默认情况下会禁用该协议,并且需要通过更改 $JDK_HOME/conf/security/java.security 配置文件中的 jdk.tls.disabledAlgorithms
手动启用它。也就是说,需要从列表中删除 TLSv1.1
。
ssl_verification_mode
编辑- 值类型为 字符串
-
当前仅支持一种模式
-
certificate
:验证客户端提供的证书是否由受信任的颁发机构 (CA) 签署,是否在其有效日期范围内,以及客户端是否拥有关联的密钥,但不执行主机名验证。
-
- 默认值为
certificate
。
当 ssl_client_authentication
导致客户端提供证书时,此设置控制如何验证该证书。
通常不使用 SSL 验证客户端身份,因为接收服务器只能访问客户端的出站 IP,该 IP 并不总是恒定的,并且通常不在证书的主题或 subjectAltNames 扩展中表示。有关更多信息,请参阅 RFC2818 第 3.2 节(通过 TLS 的 HTTP — 客户端身份)
通用选项
编辑所有输入插件都支持这些配置选项