loki.secretfilter
实验性:这是一个 实验性 组件。实验性组件可能会频繁进行重大更改,并可能在没有同等替代品的情况下被移除。必须将
stability.level
标志设置为experimental
才能使用该组件。
loki.secretfilter
接收日志条目并从中编辑敏感信息,例如密钥。检测基于正则表达式模式,这些模式在组件内嵌的 Gitleaks 配置文件 中定义。 loki.secretfilter
也可以使用基于 Gitleaks 配置文件结构的自定义配置文件。
注意
个人身份信息 (PII) 目前不在范围内,并且某些密钥可能仍然无法检测到。此组件可能会生成误报或编辑过多。不要仅依赖此组件来编辑敏感信息。
注意
此组件对日志行进行操作,并且不扫描标签或其他元数据。
用法
loki.secretfilter "<LABEL>" {
forward_to = <RECEIVER_LIST>
}
参数
loki.secretfilter
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
forward_to | list(LogsReceiver) | 要将日志条目发送到的接收器列表。 | 是 | |
allowlist | map(string) | 允许列表匹配密钥的正则表达式列表。 | {} | 否 |
gitleaks_config | string | 自定义 gitleaks.toml 文件的路径。 | 嵌入式 Gitleaks 文件 | 否 |
include_generic | bool | 包含通用 API 密钥规则。 | false | 否 |
partial_mask | number | 显示密钥的前 N 个字符。 | 0 | 否 |
redact_with | string | 用于编辑密钥的字符串。 | <REDACTED-SECRET:$SECRET_NAME> | 否 |
types | map(string) | 要查找的密钥类型。 | 所有类型 | 否 |
gitleaks_config
参数是自定义 gitleaks.toml
文件的路径。如果您不提供自定义配置文件的路径,则使用组件中嵌入的 Gitleaks 配置文件。
注意
此组件不支持 Gitleaks 配置文件的所有功能。它仅支持基于正则表达式的规则、
secretGroup
和允许列表正则表达式。regexTarget
仅支持默认值secret
。不支持其他功能,例如keywords
、entropy
、paths
和stopwords
。不支持extend
功能。如果您使用自定义配置文件,则必须在配置文件中包含要使用的所有规则。配置文件中不支持的字段和值将被忽略。
types
参数是要查找的密钥类型的映射。提供的值用作前缀,以匹配 Gitleaks 配置中的规则 ID。例如,提供 grafana
类型会匹配规则 grafana-api-key
、grafana-cloud-api-token
和 grafana-service-account-token
。如果您不提供此参数,则将使用所有规则。
注意
强烈建议配置此参数,并指定您要查找的密钥类型。如果您不这样做,组件将查找所有已知类型,这将消耗大量资源。
注意
Gitleaks 配置文件中的某些密钥类型依赖于正则表达式模式,这些模式不检测密钥本身,而是检测密钥周围的上下文。例如,
aws-access-token
类型检测 AWS 密钥 ID,而不是密钥本身。这是因为密钥没有可以使用正则表达式轻松检测到的唯一模式。因此,启用此密钥类型后,组件将编辑密钥 ID,但不编辑实际密钥。此行为与 Gitleaks 编辑功能一致,但可能不是您期望的行为。目前,已知具有此行为的密钥类型为:aws-access-token
。
redact_with
参数是一个字符串,可以使用变量,例如 $SECRET_NAME
(替换为匹配的密钥类型)和 $SECRET_HASH
(替换为密钥的 SHA1 哈希值)。
如果将 include_generic
参数设置为 true
,则该参数是一个布尔值,用于在 Gitleaks 配置文件中包含通用 API 密钥规则。默认情况下禁用此参数,因为它可能会生成误报。
allowlist
参数是允许匹配密钥的正则表达式映射。如果密钥与任何正则表达式匹配,则不会被编辑。Gitleaks 配置文件中的允许列表也适用。
partial_mask
参数是要从密钥开头显示的字符数,然后再添加编辑字符串。如果设置为 0
,则整个密钥将被编辑。如果密钥长度不足 6 个字符,则将被完全编辑。对于短密钥,最多显示密钥的一半。
块
loki.secretfilter
组件不支持任何块。您可以使用参数配置此组件。
导出的字段
以下字段已导出,可以被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
receiver | LogsReceiver | 其他组件可用于向其发送日志条目的值。 |
组件运行状况
仅当 loki.secretfilter
被赋予无效配置时,才会被报告为不健康。
调试指标
loki.secretfilter
不会公开任何组件特定的调试信息。
示例
此示例展示了如何在将日志行转发到 Loki 接收器之前,使用 loki.secretfilter
编辑日志行中的密钥。它使用自定义编辑字符串,其中包含密钥类型及其哈希值。
local.file_match "local_logs" {
path_targets = "<PATH_TARGETS>"
}
loki.source.file "local_logs" {
targets = local.file_match.local_logs.targets
forward_to = [loki.secretfilter.secret_filter.receiver]
}
loki.secretfilter "secret_filter" {
forward_to = [loki.write.local_loki.receiver]
redact_with = "<ALLOY-REDACTED-SECRET:$SECRET_NAME:$SECRET_HASH>"
}
loki.write "local_loki" {
endpoint {
url = "<LOKI_ENDPOINT>"
}
}
替换以下内容
<PATH_TARGETS>
:要监控的日志文件的路径。<LOKI_ENDPOINT>
:要将日志发送到的 Loki 实例的 URL。
兼容组件
loki.secretfilter
可以接受来自以下组件的参数
- 导出 Loki
LogsReceiver
的组件
loki.secretfilter
具有可以被以下组件使用的导出
- 使用 Loki
LogsReceiver
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。