收集 Tenable Vulnerability Management 日志
本文档介绍了如何将 Tenable Vulnerability Management(以前称为 Tenable.io)日志注入到 Google Security Operations。本文介绍了两种提取方法:一种是从 Tenable 导出 API 拉取数据的 Cloud Storage 管道,另一种是将数据推送到 Amazon S3 存储桶的 Tenable Data Stream。选择与您的环境相符的方法。
Tenable Vulnerability Management(以前称为 Tenable.io)是一个基于云的漏洞管理平台,由 Nessus 技术提供支持,可提供全面的漏洞覆盖范围,并能够预测应优先修复哪些安全问题。
解析器从 Tenable JSON 日志中提取漏洞和资产发现结果,并将字段映射到 UDM,从而处理网域、IPv4 和 IPv6 指标、严重程度和资产属性。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 Tenable Vulnerability Management 控制台的特权访问权限(管理员角色)
- 对于方法 1 (Google Cloud Storage): Google Cloud 已启用结算功能的项目,并且有权创建 Cloud Storage 存储分区、服务账号、Pub/Sub 主题、Cloud Run 函数和 Cloud Scheduler 作业
- 对于方法 2 (Amazon S3):一个 AWS 账号,具有创建 S3 存储分区以及 Identity and Access Management (IAM) 角色和用户的权限
选择以下方法之一:
- 方法 1:Google Cloud Storage。Cloud Run 函数从 Tenable Export API 拉取漏洞和资产数据,并将其写入 Cloud Storage 存储桶。使用此方法可使流水线完全处于 Google Cloud状态。
- 方法 2:Amazon S3。Tenable Data Stream 会将您的 Tenable 数据持续推送到 Amazon S3 存储桶。如果您偏好使用内置的 Tenable 推送集成,请使用此方法。Tenable Data Stream 仅支持 Amazon S3。
方法 1:Google Cloud Storage
此方法使用由 Cloud Scheduler 通过 Pub/Sub 触发的 Cloud Run 函数,从 Tenable Vulnerability Management Export API 中提取漏洞和资产数据,并将其写入 Cloud Storage 存储桶。然后,Google SecOps 会从该存储桶中提取数据。
收集 Tenable Vulnerability Management API 凭据
- 在
https://cloud.tenable.com登录 Tenable Vulnerability Management。 - 点击右上角的用户个人资料图标,然后选择我的账号。
- 点击 API 密钥。
- 点击生成。
复制并保存访问密钥和密钥。
创建 Google Cloud Storage 存储桶
- 在 Google Cloud 控制台中,前往 Cloud Storage > 存储分区。
- 点击创建。
- 提供以下配置详细信息:
- 名称:输入一个全局唯一的名称(例如
tenable-vulnerability-logs)。 - 位置类型:选择一个位置。
- 存储类别:选择标准。
- 名称:输入一个全局唯一的名称(例如
- 点击创建。
为 Cloud Run 函数创建服务账号
- 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号。
- 点击创建服务账号。
- 提供以下配置详细信息:
- 服务账号名称:输入
tenable-collector-sa。 - 服务账号说明:输入
Service account for the Tenable export collector。
- 服务账号名称:输入
- 点击创建并继续。
- 点击完成。
向服务账号授予对相应存储桶的访问权限
- 前往 Cloud Storage > 存储分区。
- 点击您的存储桶名称(例如
tenable-vulnerability-logs)。 - 前往权限标签页。
- 点击授予访问权限。
- 提供以下配置详细信息:
- 添加主账号:输入服务账号电子邮件地址(例如
tenable-collector-sa@PROJECT_ID.iam.gserviceaccount.com)。 - 分配角色:选择 Storage Object Admin。
- 添加主账号:输入服务账号电子邮件地址(例如
- 点击保存。
创建 Pub/Sub 主题
- 在 Google Cloud 控制台中,前往 Pub/Sub > 主题。
- 点击创建主题。
- 输入主题 ID(例如
tenable-collector-trigger)。 - 点击创建。
创建 Cloud Run 函数以收集日志
Cloud Run 函数由来自 Cloud Scheduler 的 Pub/Sub 消息触发。它使用您的 API 密钥向 Tenable 导出 API 进行身份验证,运行漏洞和资产导出,并将每个导出块以 JSON 格式写入存储桶。
- 在 Google Cloud 控制台中,前往 Cloud Run。
- 点击创建服务。
- 选择函数以使用内嵌代码编辑器。
- 提供以下配置详细信息:
- 服务名称:输入
tenable-collector。 - 区域:选择与您的存储桶匹配的区域(例如
us-central1)。 - 运行时:选择 Python 3.12 或更高版本。
- 服务名称:输入
- 在触发器部分中:
- 点击添加触发器。
- 选择 Cloud Pub/Sub。
- 在选择 Cloud Pub/Sub 主题部分,选择
tenable-collector-trigger。 - 点击保存。
- 在身份验证部分中,选择需要进行身份验证。
- 展开容器、网络、安全性,然后在安全性标签页上将服务账号设置为
tenable-collector-sa。 在容器 > 变量和密钥标签页中,添加以下环境变量:
变量名称 示例值 TIO_ACCESS_KEYyour-tenable-access-keyTIO_SECRET_KEYyour-tenable-secret-keyGCS_BUCKETtenable-vulnerability-logsGCS_PREFIXtenable/NUM_ASSETS1000ASSET_CHUNK_SIZE1000SEVERITIESlow,medium,high,criticalHTTP_TIMEOUT120将请求超时设置为
600秒,并将内存设置为 512 MiB 或更高。点击创建。服务创建完成后,系统会打开内嵌代码编辑器。
添加函数代码
- 在函数入口点字段中,输入
main。 在内嵌代码编辑器中,将
requirements.txt的内容替换为以下内容:functions-framework==3.* google-cloud-storage==2.* requests==2.*将
main.py的内容替换为以下代码:import json import os import time import functions_framework import requests from google.cloud import storage BASE = "https://cloud.tenable.com" ACCESS_KEY = os.environ["TIO_ACCESS_KEY"] SECRET_KEY = os.environ["TIO_SECRET_KEY"] GCS_BUCKET = os.environ["GCS_BUCKET"] GCS_PREFIX = os.environ.get("GCS_PREFIX", "tenable/") NUM_ASSETS = int(os.environ.get("NUM_ASSETS", "1000")) ASSET_CHUNK_SIZE = int(os.environ.get("ASSET_CHUNK_SIZE", "1000")) SEVERITIES = [s for s in os.environ.get("SEVERITIES", "low,medium,high,critical").split(",") if s] HTTP_TIMEOUT = int(os.environ.get("HTTP_TIMEOUT", "120")) HEADERS = { "X-ApiKeys": f"accessKey={ACCESS_KEY};secretKey={SECRET_KEY}", "Content-Type": "application/json", "Accept": "application/json", } storage_client = storage.Client() def _request(method, path, **kwargs): """Call the Tenable API, honoring HTTP 429 Retry-After. Do not multi-thread.""" while True: resp = requests.request(method, f"{BASE}{path}", headers=HEADERS, timeout=HTTP_TIMEOUT, **kwargs) if resp.status_code == 429: time.sleep(int(resp.headers.get("Retry-After", "30"))) continue resp.raise_for_status() return resp def _write_chunk(bucket, name, payload): """Write one export chunk (a JSON array) to the bucket.""" blob = bucket.blob(f"{GCS_PREFIX}{name}") blob.upload_from_string(json.dumps(payload), content_type="application/json") def _run_export(bucket, label, request_path, status_kind, body): """Request an export, poll until FINISHED, and write each chunk to the bucket.""" export_uuid = _request("POST", request_path, json=body).json()["export_uuid"] written = set() while True: status = _request("GET", f"/{status_kind}/export/{export_uuid}/status").json() for chunk_id in status.get("chunks_available", []): if chunk_id in written: continue chunk = _request("GET", f"/{status_kind}/export/{export_uuid}/chunks/{chunk_id}").json() _write_chunk(bucket, f"{label}_{export_uuid}_{chunk_id}.json", chunk) written.add(chunk_id) state = status.get("status") if state == "FINISHED": break if state in ("ERROR", "CANCELLED"): raise RuntimeError(f"{label} export {export_uuid} ended as {state}") time.sleep(15) print(f"{label}: wrote {len(written)} chunk(s) for export {export_uuid}") @functions_framework.cloud_event def main(cloud_event): bucket = storage_client.bucket(GCS_BUCKET) # Vulnerabilities: request path and status/chunk paths both use /vulns/export; body uses num_assets. _run_export( bucket, "vulns", "/vulns/export", "vulns", {"num_assets": NUM_ASSETS, "include_unlicensed": False, "filters": {"severity": SEVERITIES}}, ) # Assets: request path is /assets/v2/export (body uses chunk_size); status/chunk paths drop the v2. _run_export( bucket, "assets", "/assets/v2/export", "assets", {"chunk_size": ASSET_CHUNK_SIZE}, ) return "ok"点击保存并部署。
创建 Cloud Scheduler 作业
- 在 Google Cloud 控制台中,前往 Cloud Scheduler。
- 点击创建作业。
- 提供以下配置详细信息:
- 名称:输入
tenable-collector-schedule。 - 区域:选择与 Cloud Run 函数相同的区域。
- 频率:输入 cron 时间表(例如,
0 */6 * * *表示每 6 小时运行一次)。 - 时区:选择您的时区。
- 名称:输入
- 对于目标类型,选择 Pub/Sub。
- 选择
tenable-collector-trigger主题。 - 在消息正文中,输入
run。 - 点击创建。
在 Google SecOps 中配置信息源,以从 Google Cloud Storage 中注入数据
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Tenable Vulnerability Management GCS)。 - 选择 Google Cloud Storage V2 作为来源类型。
- 选择 tenable.io 作为日志类型。
- 点击获取服务账号。复制显示的服务账号电子邮件地址。
- 点击下一步。
- 为以下输入参数指定值:
- 存储桶 URI:输入存储桶 URI,包括前缀(例如
gs://tenable-vulnerability-logs/tenable/)。 - 源删除选项:根据您的偏好选择删除选项。
- 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
- 存储桶 URI:输入存储桶 URI,包括前缀(例如
- 点击下一步,检查配置,然后点击提交。
向 Google SecOps 服务账号授予对相应存储桶的访问权限
- 前往 Cloud Storage > 存储桶,然后点击您的存储桶名称。
- 前往权限标签页,然后点击授予访问权限。
- 在添加主账号中,输入您从 Feed 中复制的服务账号电子邮件地址。
- 分配 Storage Object Viewer 角色(如果您选择了源删除选项,则分配 Storage Object Admin 角色)。
- 点击保存。
方法 2:Amazon S3
此方法使用 Tenable Data Stream 以 JSON 格式将您的 Tenable 数据持续推送到 Amazon S3 存储桶。然后,Google SecOps 会从该存储桶中提取数据。Tenable Data Stream 仅支持 Amazon S3,并使用 Tenable 承担的 IAM 角色(与外部 ID 建立的跨账号信任关系)向您的 AWS 账号进行身份验证。
创建 Amazon S3 存储桶
- 按照 AWS 指南创建存储桶创建一个 Amazon S3 存储桶。
- 保存存储桶名称和区域以供日后参考(例如
tenable-vm-logs)。
为 Tenable Data Stream 创建 IAM 角色
Tenable 会代入此角色,以便将数据写入您的存储桶。Tenable 会在控制台中提供确切的信任政策和存储桶政策,包括 Tenable AWS 账号和生成的外部 ID。
- 在 Tenable Vulnerability Management 中,依次前往设置 > Tenable Data Stream,然后点击添加集成。请保持此对话框处于打开状态,以便在后续步骤中复制信任政策和外部 ID。
- 在 AWS 控制台中,依次前往 IAM > 角色 > 创建角色。
选择自定义信任政策,然后从 Tenable IAM 角色指南面板中粘贴信任政策(点击复制信任政策)。信任政策具有以下结构:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<TENABLE_AWS_ACCOUNT_ID>:root" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<TENABLE_EXTERNAL_ID>" } } } ] }点击下一步,然后创建并附加一项政策,以授予 Tenable 对相应存储桶的写入权限(将
tenable-vm-logs替换为您的存储桶名称):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject", "s3:GetBucketLocation", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::tenable-vm-logs", "arn:aws:s3:::tenable-vm-logs/*" ] } ] }输入角色名称(例如
TenableDataStreamRole),然后点击创建角色。保存角色名称和您的 AWS 账号 ID。
配置 Tenable 数据流
- 返回到 Tenable Vulnerability Management 中的添加集成对话框(设置 > Tenable 数据流)。
- 提供以下配置详细信息:
- 集成名称:输入一个描述性名称(例如
Google SecOps Integration)。 - 集成类型:选择 AWS S3(唯一可用的选项)。
- 集成数据:选择要流式传输的数据类型(例如资产、漏洞和主机审核)。
- 电子邮件通知(可选):输入一个电子邮件地址,以便在直播状态发生变化时接收通知。
- 集成名称:输入一个描述性名称(例如
- 点击下一步,然后提供 IAM 角色详细信息:
- AWS 账号 ID:输入您的 AWS 账号 ID。
- IAM 角色名称:输入您创建的角色(例如
TenableDataStreamRole)。 - 外部 ID:使用 Tenable 在此对话框中显示的外部 ID(与信任政策中引用的值相同)。
- 点击下一步,然后提供存储桶详细信息:
- S3 存储桶名称:输入您的存储桶名称(例如
tenable-vm-logs)。 - 路径前缀:输入用于整理文件的前缀(例如
tenable/)。
- S3 存储桶名称:输入您的存储桶名称(例如
点击保存。Tenable 会持续将 JSON 数据写入您的存储桶。
为 Google SecOps 创建一个 IAM 用户,以便读取存储桶
Google SecOps 使用单独的只读 IAM 用户读取存储桶(此身份与 Tenable 用于写入的角色无关)。
- 在 AWS 控制台中,依次前往 IAM > 用户 > 创建用户。
- 输入用户名(例如
secops-tenable-reader),然后点击下一步。 - 点击下一步,然后点击创建用户。
选择相应用户,前往权限标签页,然后依次点击添加权限 > 创建内嵌政策 > JSON。粘贴以下只读政策(将
tenable-vm-logs替换为您的存储桶名称):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation"], "Resource": [ "arn:aws:s3:::tenable-vm-logs", "arn:aws:s3:::tenable-vm-logs/*" ] } ] }前往安全凭据标签页,然后点击创建访问密钥。
选择第三方服务作为用例,点击下一步,然后点击创建访问密钥。
复制并保存访问密钥和私有访问密钥。
在 Google SecOps 中配置 Feed 以从 Amazon S3 注入数据
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Tenable Vulnerability Management S3)。 - 选择 Amazon S3 V2 作为来源类型。
- 选择 tenable.io 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- S3 URI:输入存储桶 URI,包括前缀(例如
s3://tenable-vm-logs/tenable/)。 - 源删除选项:根据您的偏好选择删除选项。
- 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
- 访问密钥 ID:输入只读 IAM 用户访问密钥。
- 私有访问密钥:输入只读 IAM 用户私有密钥。
- S3 URI:输入存储桶 URI,包括前缀(例如
- 点击下一步,检查配置,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
payload.path |
about.file.full_path |
直接映射 |
payload.md5 |
about.file.md5 |
直接映射 |
asset.uuid |
entity.asset.asset_id |
直接映射 |
id |
entity.asset.asset_id |
直接映射 |
payload_id |
entity.asset.asset_id |
直接映射 |
ssh_fingerprints.0 |
entity.asset.attribute.labels.value |
直接映射 |
system_types.0 |
entity.asset.attribute.labels.value |
直接映射 |
asset.hostname |
entity.asset.hostname |
直接映射 |
asset.last_scan_target |
entity.asset.hostname |
直接映射 |
host |
entity.asset.hostname |
直接映射 |
scan.target |
entity.asset.hostname |
直接映射 |
asset.ipv4 |
entity.asset.ip |
已合并 |
ip |
entity.asset.ip |
已合并 |
ipaddr |
entity.asset.ip |
已合并 |
prinIP |
entity.asset.ip |
已合并 |
scan_ipaddr |
entity.asset.ip |
已合并 |
updateIndex |
entity.asset.ip |
已映射:0 → update_ipv4_0 |
update_ipv4_0 |
entity.asset.ip |
已合并 |
asset.mac_address |
entity.asset.mac |
已合并 |
mac |
entity.asset.mac |
已合并 |
fqdns.0 |
entity.asset.network_domain |
直接映射 |
netbios_names.0 |
entity.asset.network_domain |
直接映射 |
os_family |
entity.asset.platform_software.platform |
直接映射 |
asset.operating_system.0 |
entity.asset.platform_software.platform_version |
直接映射 |
asset.uuid |
entity.asset.product_object_id |
直接映射 |
id |
entity.asset.product_object_id |
直接映射 |
payload_id |
entity.asset.product_object_id |
直接映射 |
vuln.vulnerabilities |
entity.asset.vulnerabilities |
已合并 |
vuln1.vulnerabilities |
entity.asset.vulnerabilities |
已合并 |
vuln2.vulnerabilities |
entity.asset.vulnerabilities |
已合并 |
asset.device_type |
metadata.description |
直接映射 |
plugin.description |
metadata.description |
直接映射 |
has_entity_asset |
metadata.entity_type |
已映射:true → ASSET |
first_found |
metadata.event_timestamp |
解析为 ISO8601 |
last_found |
metadata.event_timestamp |
解析为 ISO8601 |
scan.completed_at |
metadata.event_timestamp |
解析为 ISO8601 |
scan.started_at |
metadata.event_timestamp |
解析为 ISO8601 |
has_entity_asset |
metadata.product_name |
已映射:true → Tenable IO |
has_entity_asset |
metadata.vendor_name |
已映射:true → Tenable IO |
port.protocol |
network.ip_protocol |
直接映射 |
asset.network_id |
network.session_id |
直接映射 |
sec_res.description |
security_result.description |
直接映射 |
asset_agent_uuid_label |
security_result.detection_fields |
已合并 |
asset_bios_uuid_label |
security_result.detection_fields |
已合并 |
asset_netbios_name_label |
security_result.detection_fields |
已合并 |
finding_id_label |
security_result.detection_fields |
已合并 |
plugin_family_id_label |
security_result.detection_fields |
已合并 |
plugin_family_label |
security_result.detection_fields |
已合并 |
plugin_risk_factor_label |
security_result.detection_fields |
已合并 |
plugin_xrefs_label |
security_result.detection_fields |
已合并 |
risk_factor_label |
security_result.detection_fields |
已合并 |
scan_label |
security_result.detection_fields |
已合并 |
scan_schedule_uuid_label |
security_result.detection_fields |
已合并 |
scan_started_at_label |
security_result.detection_fields |
已合并 |
scan_uuid_label |
security_result.detection_fields |
已合并 |
see_also_label |
security_result.detection_fields |
已合并 |
severity_default_id_label |
security_result.detection_fields |
已合并 |
severity_id_label |
security_result.detection_fields |
已合并 |
severity_label |
security_result.detection_fields |
已合并 |
severity_modification_type_label |
security_result.detection_fields |
已合并 |
update_finding_id_label |
security_result.detection_fields |
已合并 |
update_first_scan_time_label |
security_result.detection_fields |
已合并 |
update_last_licensed_scan_date_label |
security_result.detection_fields |
已合并 |
update_last_scan_id_label |
security_result.detection_fields |
已合并 |
update_last_scan_time_label |
security_result.detection_fields |
已合并 |
update_last_schedule_id_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_access_complexity_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_access_vector_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_authentication_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_availability_impact_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_confidentiality_impact_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_integrity_impact_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_privileges_required_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_raw_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss3_vector_user_interaction_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_base_score_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_vector_access_complexity_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_vector_access_vector_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_vector_authentication_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_vector_availability_impact_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_vector_confidentiality_impact_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_vector_integrity_impact_label |
security_result.detection_fields |
已合并 |
update_plugin_cvss_vector_raw_label |
security_result.detection_fields |
已合并 |
update_plugin_see_also_label |
security_result.detection_fields |
已合并 |
update_plugin_stig_severity_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_driver_cvss3_impact_score_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_age_of_vuln_lower_bound_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_age_of_vuln_upper_bound_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_cvss_impact_score_predicted_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_exploit_code_maturity_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_product_coverage_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_threat_intensity_last28_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_threat_recency_lower_bound_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_drivers_threat_recency_upper_bound_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_score_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_updated_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_v2_cve_id_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_v2_exploit_code_maturity_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_v2_in_the_news_intensity_last30_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_v2_in_the_news_recency_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_v2_malware_observations_intensity_last30_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_v2_malware_observations_recency_label |
security_result.detection_fields |
已合并 |
update_plugin_vpr_v2_on_cisa_kev_label |
security_result.detection_fields |
已合并 |
update_plugin_vuln_publication_date_label |
security_result.detection_fields |
已合并 |
update_plugin_xrefs_id_type_label |
security_result.detection_fields |
已合并 |
update_plugin_xrefs_type_label |
security_result.detection_fields |
已合并 |
update_scan_started_at_label |
security_result.detection_fields |
已合并 |
update_severity_default_id_label |
security_result.detection_fields |
已合并 |
update_severity_id_label |
security_result.detection_fields |
已合并 |
update_severity_modification_type_label |
security_result.detection_fields |
已合并 |
updates_asset_netbios_name_label |
security_result.detection_fields |
已合并 |
updates_plugin_vpr_v2_exploit_probability_label |
security_result.detection_fields |
已合并 |
updates_plugin_vpr_v2_label |
security_result.detection_fields |
已合并 |
updates_plugin_vpr_v2_percentile_label |
security_result.detection_fields |
已合并 |
updates_plugin_vpr_v2_vpr_severity_label |
security_result.detection_fields |
已合并 |
version_label |
security_result.detection_fields |
已合并 |
xref_label |
security_result.detection_fields |
已合并 |
severity |
security_result.severity |
直接映射 |
| 不适用 | entity.asset.attribute.labels.key |
常量:ssh_fingerprints |
| 不适用 | metadata.entity_type |
常量:ASSET |
| 不适用 | metadata.product_name |
常量:Tenable IO |
| 不适用 | metadata.vendor_name |
常量:Tenable IO |
| 不适用 | security_result.severity |
常量:CRITICAL |