收集 Falco IDS 日志
解析器版本:1.0
本文档介绍了如何配置 Falco,以通过 Falcosidekick 使用 Webhook 将运行时安全提醒推送到 Google Security Operations。
Falco 是一款开源运行时安全工具,可检测意外的应用行为,并在运行时发出威胁警报。它使用系统调用监控功能,根据可自定义的安全规则检测容器、Kubernetes 和 Linux 主机中的异常活动。
准备工作
请确保您满足以下前提条件:
- Google SecOps 实例
- 安装在 Kubernetes(通过 Helm)或 Linux 主机上的 Falco
- 有权修改 Falco 配置文件或 Helm 值
- 部署 Falcosidekick 的特权访问权限(如果尚未部署)
在 Google SecOps 中创建 Webhook Feed
创建 Feed
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Falco Runtime Security)。 - 选择 Webhook 作为来源类型。
- 选择 Falco IDS 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- 拆分分隔符(可选):留空(Falcosidekick 会针对每个请求发送一个事件)
- 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中事件的标签
- 点击下一步。
- 在最终确定界面中查看新的 Feed 配置,然后点击提交。
生成并保存密钥
创建 Feed 后,您必须生成用于身份验证的密钥:
- 在 Feed 详情页面上,点击生成密钥。
- 系统会显示一个对话框,其中包含密钥。
- 复制并妥善保存此密钥。
获取 Feed 端点网址
- 前往相应 Feed 的详细信息标签页。
- 在端点信息部分,复制 Feed 端点网址。
网址格式为:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate或
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate保存此网址以供后续步骤使用。
点击完成。
创建 Google Cloud API 密钥
Google SecOps 需要使用 API 密钥进行身份验证。在 Google Cloud Console 中创建受限 API 密钥。
创建 API 密钥
- 前往 Google Cloud 控制台的“凭据”页面。
- 选择您的项目(与您的 Google SecOps 实例关联的项目)。
- 依次点击创建凭据> API 密钥。系统会创建一个 API 密钥,并在对话框中显示该密钥。
- 点击修改 API 密钥以限制密钥。
限制 API 密钥
- 在 API 密钥设置页面中:
- 名称:输入一个描述性名称(例如
Chronicle Webhook API Key)
- 名称:输入一个描述性名称(例如
- 在 API 限制下:
- 选择限制密钥。
- 在选择 API 列表中,搜索并选择 Google SecOps API(或 Chronicle API)。
- 点击保存。
- 从页面顶部的 API 密钥字段复制 API 密钥值。
- 安全地保存 API 密钥。
部署 Falcosidekick
Falcosidekick 是 Falco 的官方代理转发器,可将提醒路由到多个目的地,包括网络钩子、云存储和 SIEM 平台。
方案 A:使用 Helm 部署 Falco(推荐)
如果您是首次安装 Falco,或者可以重新部署 Falco,请使用此方法同时部署 Falco 和 Falcosidekick:
添加 Falco Helm 代码库:
helm repo add falcosecurity https://falcosecurity.github.io/charts helm repo update为 Falco 创建命名空间:
kubectl create namespace falco使用身份验证信息构建 Google SecOps 网络钩子网址:
<ENDPOINT_URL>?key=<API_KEY>示例:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...安装启用了 Falcosidekick 的 Falco:
helm install falco falcosecurity/falco \ --namespace falco \ --set falcosidekick.enabled=true \ --set falcosidekick.config.webhook.address="<ENDPOINT_URL>?key=<API_KEY>" \ --set falcosidekick.config.webhook.customHeaders="X-Webhook-Access-Key:<SECRET_KEY>" \ --set falcosidekick.config.webhook.minimumpriority="warning" \ --set tty=true将
<ENDPOINT_URL>:Google SecOps Feed 端点网址<API_KEY>:Google Cloud API 密钥<SECRET_KEY>:从 Feed 创建中获取的 Google SecOps Secret 密钥
验证部署:
kubectl get pods -n falco预期输出显示 Falco 和 Falcosidekick pod 都在运行:
NAME READY STATUS RESTARTS AGE falco-xxxxx 2/2 Running 0 2m falco-falcosidekick-xxxxx 1/1 Running 0 2m
选项 B:单独部署 Falcosidekick
如果已部署 Falco,您可以单独部署 Falcosidekick,并配置 Falco 以向其发送提醒。
部署 Falcosidekick
添加 Falco Helm 代码库(如果尚未添加):
helm repo add falcosecurity https://falcosecurity.github.io/charts helm repo update使用身份验证信息构建 Google SecOps 网络钩子网址:
<ENDPOINT_URL>?key=<API_KEY>安装 Falcosidekick:
helm install falcosidekick falcosecurity/falcosidekick \ --namespace falco \ --set config.webhook.address="<ENDPOINT_URL>?key=<API_KEY>" \ --set config.webhook.customHeaders="X-Webhook-Access-Key:<SECRET_KEY>" \ --set config.webhook.minimumpriority="warning"将
<ENDPOINT_URL>:Google SecOps Feed 端点网址<API_KEY>:Google Cloud API 密钥<SECRET_KEY>:从 Feed 创建中获取的 Google SecOps Secret 密钥
验证 Falcosidekick 是否正在运行:
kubectl get pods -n falco -l app.kubernetes.io/name=falcosidekick
配置 Falco 以将提醒发送到 Falcosidekick
获取 Falcosidekick 服务名称:
kubectl get svc -n falco -l app.kubernetes.io/name=falcosidekick服务名称通常为
falcosidekick。更新 Falco 配置以启用 HTTP 输出:
如果使用 Helm,请升级 Falco 版本:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falco.json_output=true \ --set falco.json_include_output_property=true \ --set falco.http_output.enabled=true \ --set falco.http_output.url="http://falcosidekick:2801/"如果手动管理 Falco 配置,请修改
/etc/falco/falco.yaml:json_output: true json_include_output_property: true http_output: enabled: true url: "http://falcosidekick:2801/"重启 Falco pod 以应用配置:
kubectl rollout restart daemonset/falco -n falco
在 Linux 主机上配置 Falcosidekick
如果要在 Linux 主机(而非 Kubernetes)上运行 Falco,请将 Falcosidekick 部署为 systemd 服务。
安装 Falcosidekick 二进制文件
下载最新的 Falcosidekick 版本:
FALCOSIDEKICK_VERSION="2.29.0" wget https://github.com/falcosecurity/falcosidekick/releases/download/${FALCOSIDEKICK_VERSION}/falcosidekick_${FALCOSIDEKICK_VERSION}_linux_amd64.tar.gz提取并安装二进制文件:
sudo tar -C /usr/local/bin/ -xzf falcosidekick_${FALCOSIDEKICK_VERSION}_linux_amd64.tar.gz sudo chmod +x /usr/local/bin/falcosidekick创建配置目录:
sudo mkdir -p /etc/falcosidekick
配置 Falcosidekick
创建配置文件
/etc/falcosidekick/config.yaml:listenaddress: "0.0.0.0" listenport: 2801 debug: false webhook: address: "<ENDPOINT_URL>?key=<API_KEY>" method: "POST" customHeaders: "X-Webhook-Access-Key:<SECRET_KEY>" minimumpriority: "warning" checkcert: true将
<ENDPOINT_URL>:Google SecOps Feed 端点网址<API_KEY>:Google Cloud API 密钥<SECRET_KEY>:从 Feed 创建中获取的 Google SecOps Secret 密钥
创建 systemd 服务文件
/etc/systemd/system/falcosidekick.service:[Unit] Description=Falcosidekick After=network.target [Service] Type=simple User=root ExecStart=/usr/local/bin/falcosidekick --config-file=/etc/falcosidekick/config.yaml Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target启用并启动 Falcosidekick:
sudo systemctl daemon-reload sudo systemctl enable falcosidekick sudo systemctl start falcosidekick验证 Falcosidekick 是否正在运行:
sudo systemctl status falcosidekick
配置 Falco 以将提醒发送到 Falcosidekick
修改 Falco 配置文件
/etc/falco/falco.yaml:json_output: true json_include_output_property: true http_output: enabled: true url: "http://localhost:2801/"重启 Falco:
sudo systemctl restart falco
验证集成
触发测试提醒
通过在容器中执行 shell 来触发 Falco 规则(如果使用 Kubernetes):
kubectl run test-pod --image=nginx --restart=Never kubectl exec -it test-pod -- /bin/bash这会触发 Falco 规则“容器中的终端 shell”。
对于 Linux 主机,通过读取敏感文件来触发规则:
cat /etc/shadow这会触发 Falco 规则“Read sensitive file untrusted”。
检查 Falcosidekick 日志
对于 Kubernetes 部署:
kubectl logs -n falco -l app.kubernetes.io/name=falcosidekick --tail=50查找表明 webhook 成功传送的日志条目:
2025-01-15T10:30:00Z [INFO] : Webhook - Post OK对于 Linux 主机:
sudo journalctl -u falcosidekick -n 50
在 Google SecOps 中验证事件
- 前往 Google SecOps > 搜索。
运行搜索查询:
metadata.log_type = "FALCO_IDS"验证 Falco 事件是否显示在搜索结果中。
检查事件是否包含预期字段,例如:
rule- Falco 规则名称priority- 提醒优先级(紧急、提醒、严重、错误、警告、通知、信息、调试)output- 人类可读的提醒消息source- 事件来源(系统调用、k8s_audit)hostname- 发生事件的主机container_id- 容器 ID(如适用)
优先级过滤
Falcosidekick 支持按优先级过滤事件,以减少噪声并专注于严重警报。 לֹ
优先级
Falco 使用以下优先级(从高到低):
| 优先级 | 说明 | 使用场景 |
|---|---|---|
| 紧急情况 | 系统无法使用 | 严重的安全事件 |
| 提醒 | 必须立即采取措施 | 主动攻击、提升权限 |
| 严重 | 严重情况 | 未经授权的访问、恶意软件执行 |
| 错误 | 错误条件 | 违规行为、可疑活动 |
| 警告 | 警告情况 | 异常行为、潜在威胁 |
| 通知 | 正常,但值得注意 | 配置更改、审核事件 |
| 信息型 | 信息类消息 | 常规活动日志记录 |
| 调试 | 调试级消息 | 问题排查、开发 |
配置最低优先级
如需仅向 Google SecOps 发送高优先级提醒,请设置 minimumpriority 参数:
对于 Helm 部署:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.webhook.minimumpriority="error"对于 Linux 主机,请修改
/etc/falcosidekick/config.yaml:webhook: minimumpriority: "error"
此配置仅将优先级为 error 或更高级别(错误、严重、提醒、紧急)的事件发送到 Google SecOps。
自定义字段
借助 Falcosidekick,您可以向所有事件添加自定义字段,以便在 Google SecOps 中获得更好的上下文信息和过滤效果。
添加自定义字段
对于 Helm 部署:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.customfields.environment="production" \ --set falcosidekick.config.customfields.region="us-east-1" \ --set falcosidekick.config.customfields.cluster="prod-cluster-01"对于 Linux 主机,请修改
/etc/falcosidekick/config.yaml:customfields: environment: "production" region: "us-east-1" datacenter: "dc1"
这些自定义字段会添加到发送到 Google SecOps 的每个 Falco 事件中,从而实现跨多个环境的过滤和关联。
其他提取路径
虽然建议使用 Webhook 方法,但 Falcosidekick 支持针对特定使用情形的替代提取路径。
AWS S3 注入
对于高流量环境或合规性要求,您可以将 Falcosidekick 配置为将事件写入 AWS S3,然后从 S3 注入到 Google SecOps。
为 S3 配置 Falcosidekick:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.aws.accesskeyid="<AWS_ACCESS_KEY>" \ --set falcosidekick.config.aws.secretaccesskey="<AWS_SECRET_KEY>" \ --set falcosidekick.config.aws.region="us-east-1" \ --set falcosidekick.config.aws.s3.bucket="falco-events" \ --set falcosidekick.config.aws.s3.prefix="runtime-security/"Falcosidekick 以 JSON 格式将事件写入 S3,路径结构如下:
s3://falco-events/runtime-security/YYYY-MM-DD/YYYY-MM-DDTHH:mm:ss.s+01:00.json然后,将 Google SecOps Feed 的来源类型配置为 Amazon S3 V2。
GCP Cloud Storage 注入
对于 GCP 环境,请配置 Falcosidekick 以将事件写入 Google Cloud Storage。
为 GCS 配置 Falcosidekick:
- 在目标存储桶上创建具有 Storage Object Admin 角色的 GCP 服务账号。
- 下载服务账号 JSON 密钥文件。
对 JSON 密钥进行 Base64 编码:
cat service-account-key.json | base64 -w 0配置 Falcosidekick:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.gcp.credentials="<BASE64_ENCODED_KEY>" \ --set falcosidekick.config.gcp.storage.bucket="falco-events" \ --set falcosidekick.config.gcp.storage.prefix="runtime-security/"Falcosidekick 会将事件写入 GCS,路径结构如下:
gs://falco-events/runtime-security/YYYY-MM-DD/YYYY-MM-DDTHH:mm:ss.s+01:00.json
然后,将 Google SecOps Feed 配置为以 Google Cloud Storage V2 作为来源类型。
AWS Kinesis Firehose 数据注入
对于实时流式注入,请将 Falcosidekick 配置为将事件发送到 AWS Kinesis Firehose。
为 Kinesis 配置 Falcosidekick:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.aws.accesskeyid="<AWS_ACCESS_KEY>" \ --set falcosidekick.config.aws.secretaccesskey="<AWS_SECRET_KEY>" \ --set falcosidekick.config.aws.region="us-east-1" \ --set falcosidekick.config.aws.kinesis.streamname="falco-events-stream"然后,将 Amazon Kinesis Firehose 配置为来源类型,以配置 Google SecOps Feed。
问题排查
Falcosidekick 未接收到事件
检查 Falco 是否正在向 Falcosidekick 发送事件:
kubectl logs -n falco -l app.kubernetes.io/name=falco --tail=50 | grep http_output验证 Falco 配置是否包含 HTTP 输出:
kubectl get configmap -n falco falco -o yaml | grep -A 5 http_output检查 Falcosidekick 是否正在监听端口 2801:
kubectl get svc -n falco falcosidekick
网络钩子递送失败
检查 Falcosidekick 日志中是否存在 HTTP 错误:
kubectl logs -n falco -l app.kubernetes.io/name=falcosidekick --tail=100 | grep -i error常见错误:
- 401 未经授权:API 密钥或 Secret 密钥不正确
- 403 Forbidden:API 密钥未获授权使用 Google SecOps API
- SSL 证书错误:将
checkcert: false设置为用于测试(不建议用于生产)
手动测试网络钩子:
curl -X POST \ -H "Content-Type: application/json" \ -H "X-Webhook-Access-Key: <SECRET_KEY>" \ -d '{"test": "event"}' \ "<ENDPOINT_URL>?key=<API_KEY>"
事件未显示在 Google SecOps 中
验证 Feed 是否处于有效状态:
- 依次前往 SIEM 设置 > Feed。
- 检查 Feed 状态是否为有效。
- 检查上次注入时间是否为最近的时间。
检查是否存在提取错误:
- 前往 Feed 详情页面。
- 点击错误标签页。
- 查看所有解析或验证错误。
验证日志类型映射:
- 搜索原始日志:
metadata.log_type = "FALCO_IDS"。 - 如果显示了事件,但未解析字段,请检查 UDM 映射。
- 搜索原始日志:
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| output_fields.k8s.ns.name, output_fields.k8s.pod.name | additional.fields | 从 k8_ns_name 和 k8s_pod_name 对象合并而来 |
| stageTimestamp | metadata.collected_timestamp | 使用 ISO8601 格式转换 |
| 阶段、说明、输出 | metadata.description | 如果阶段中的值不为空,则为阶段中的值;否则为说明;否则为输出 |
| verb, user.uid, uid, output | metadata.event_type | 如果动词为 GET LIST WATCH,则设置为 USER_RESOURCE_ACCESS;如果动词为 CREATE 且 (user.uid 或 uid 不为空),则设置为 USER_RESOURCE_CREATION;如果动词为 PATCH 或 UPDATE 且 user.uid 不为空,则设置为 USER_RESOURCE_UPDATE_CONTENT;如果动词为 DELETE,则设置为 USER_RESOURCE_DELETION;如果输出包含错误,则设置为 USER_RESOURCE_ACCESS,否则设置为 USER_UNCATEGORIZED;否则设置为 GENERIC_EVENT |
| kind | metadata.product_event_type | 直接复制值 |
| auditID | metadata.product_log_id | 直接复制值 |
| apiVersion、product_version | metadata.product_version | 如果 apiVersion 不为空,则为 apiVersion 中的值;否则为 product_version(移除引号后) |
| portdetails.name | network.application_protocol | 大写,如果属于 HTTP HTTPS DNS,则设置为相应值,否则设置为 UNKNOWN_APPLICATION_PROTOCOL |
| 动词 | network.http.method | 值已转换为大写并直接复制 |
| responseStatus.code | network.http.response_code | 转换为整数并直接复制 |
| userAgent | network.http.user_agent | 直接复制值 |
| portdetails.protocol | network.ip_protocol | 直接复制值 |
| output_fields.cloud-project-id | observer.cloud.project.id | 直接复制值 |
| output_fields.pod-name, output_fields.falco.pod.name | observer.hostname | 如果 output_fields.pod-name 不为空,则为该值;否则为 output_fields.falco.pod.name |
| output_fields.pod-ip、output_fields.falco.pod.ip | observer.ip | 如果 output_fields.pod-ip 不为空,则为该值;否则为 output_fields.falco.pod.ip |
| output_fields.falco.host.name | principal.asset.hostname | 直接复制值 |
| sourceIPs、output_fields.falco.host.ip | principal.asset.ip | 如果 sourceIPs 不为空,则从 sourceIPs 中的每个 IP 合并,否则从 output_fields.falco.host.ip 合并 |
| output_fields.falco.host.name | principal.hostname | 直接复制值 |
| sourceIPs、output_fields.falco.host.ip | principal.ip | 如果 sourceIPs 不为空,则从 sourceIPs 中的每个 IP 合并,否则从 output_fields.falco.host.ip 合并 |
| output_fields.falco.contact | principal.user.email_addresses | 直接复制值 |
| user.groups | principal.user.group_identifiers | 从数组 user.groups 合并 |
| user.username, output_fields.user.name | principal.user.user_display_name | 如果 user.username 不为空,则返回该值;否则返回 output_fields.user.name |
| user.uid、uid | principal.user.userid | 如果 user.uid 不为空,则返回 user.uid 中的值;否则,返回 uid(去除引号后) |
| annotations.authorization.k8s.io/decision | security_result.action | 如果允许,则设置为 ALLOW |
| annotations.authorization.k8s.io/reason | security_result.description | 直接复制的值,已移除引号 |
| 规则 | security_result.rule_name | 直接复制值 |
| 优先级 | security_result.severity_details | 直接复制值 |
| containerid.containerID, output_fields.container.id | target.asset.asset_id | 如果 containerid.containerID 不为空,则为该值;否则为“container_id:” + output_fields.container.id |
| target.asset.deployment_status | 如果正在运行或等待,则设置为 ACTIVE;如果已终止,则设置为 DECOMISSIONED;否则设置为 DEPLOYMENT_STATUS_UNSPECIFIED | |
| address.nodeName, output_fields.host-name, tar_host | target.asset.hostname | 如果非空,则为 address.nodeName 中的值;否则为 output_fields.host-name;否则为通过对输出进行 grok 获得的 tar_host |
| address.ip、podip.ip、requestObject.status.podIP、requestObject.status.hostIP、output_fields.host-ip、tar_ip | target.asset.ip | 从 responseObject.subsets.addresses 中的 address.ip、requestObject.status.podIPs 中的 podip.ip、requestObject.status.podIP、requestObject.status.hostIP、output_fields.host-ip 或输出中 grok 的 tar_ip 合并 |
| output_fields.email | target.email | 如果与电子邮件正则表达式匹配,则直接复制值 |
| containerStatuse.imageID、containerStatuse.image、output_fields.container.image.repository | target.file.full_path | 如果 containerStatuse.imageID 不为空且 file.full_path 为空,则为 containerStatuse.imageID 中的值;如果 containerStatuse.image 不为空且 file.full_path 为空,则为 containerStatuse.image 中的值;否则为 output_fields.container.image.repository 中的值 |
| address.nodeName, output_fields.host-name, tar_host | target.hostname | 如果非空,则为 address.nodeName 中的值;否则为 output_fields.host-name;否则为通过对输出进行 grok 获得的 tar_host |
| address.ip、podip.ip、requestObject.status.podIP、requestObject.status.hostIP、output_fields.host-ip、tar_ip | target.ip | 从 responseObject.subsets.addresses 中的 address.ip、requestObject.status.podIPs 中的 podip.ip、requestObject.status.podIP、requestObject.status.hostIP、output_fields.host-ip 或输出中通过 grok 获得的 tar_ip 合并 |
| targetnamespace | target.namespace | 直接复制值 |
| portdetails.port | target.port | 转换为整数并直接复制以用于第一个端口 |
| output_fields.cloud-provider | target.resource.attribute.cloud.environment | 如果为 GCP,则设置为 GOOGLE_CLOUD_PLATFORM;如果为 Azure,则设置为 MICROSOFT_AZURE |
| requestObject.status.containerStatuses.0.state.waiting.reason, output_fields.evt.arg.fd, output_fields.evt.arg.filename, output_fields.evt.arg.mode, output_fields.fd.name, output_fields.ol-env, output_fields.tags, output_fields.proc.cmdline, output_fields.ebpf_enabled | target.resource.attribute.labels | 从各种标签对象合并而来 |
| address.targetRef.uid | target.resource.id | 如果 address.targetRef.uid 不为空且 resource_id 为空,则使用该值 |
| address.targetRef.name, objectRef.name, output_fields.bl-ssr | target.resource.name | 如果 address.targetRef.name 不为空且 resource_name 为空,则为 address.targetRef.name 中的值;否则,如果 objectRef.name 不为空且 resource_name 为空,则为 objectRef.name 中的值;否则,如果 output_fields.bl-ssr 不为空且 resource_name 为空,则为 output_fields.bl-ssr 中的值 |
| output_fields.falco.ssrid | target.resource.product_object_id | 直接复制值 |
| address.targetRef.kind、objectRef.resource | target.resource.resource_subtype | 如果 address.targetRef.kind 不为空且 target_resource_subtype 为空,则为 address.targetRef.kind 中的值;否则,如果 objectRef.resource 不为空且 target_resource_subtype 为空,则为 objectRef.resource 中的值 |
| resource_type | target.resource.resource_type | 如果为空,则设置为 CLUSTER;否则,直接复制 |
| requestURI | target.url | 直接复制值 |
| responseObject.spec.group | target.user.group_identifiers | 从数组 responseObject.spec.group 合并 |
| responseObject.spec.user | target.user.user_display_name | 直接复制值 |
| responseObject.metadata.uid、responseObject.spec.uid、objectRef.uid、requestObject.metadata.uid、output_fields.user.loginuid | target.user.userid | 如果 responseObject.metadata.uid 不为空,则为该值;否则为 responseObject.spec.uid;否则为 objectRef.uid;否则为 requestObject.metadata.uid;否则为 output_fields.user.loginuid(转换为字符串) |
| metadata.product_name | 设置为“FALCO_IDS” | |
| metadata.vendor_name | 设置为“FALCO_IDS” | |
priority |
security_result.priority |
从变更日志映射 |
time |
date |
从变更日志映射 |
output_fields.tags |
target.labels |
从变更日志映射 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。