安全与风控
在 Dynatrace security.events…
当需要用 Dynatrace DQL 查询或分析安全漏洞、运行时威胁检测、威胁情报、合规态势和扫描覆盖时,先按意图加载对应 reference,再遵守各数据族的窗口、字段、实体匹配和去重规则。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Dynatrace security特定
解决思路
- 开始前先加载 dt-dql-essentials,确认 DQL 语法、命令和函数名,避免按 SQL 习惯生成查询。
- 先识别用户意图,再从 Quick Start: Find Your Use Case 加载匹配的 primary reference,然后基于该 reference 的 canonical template 或 named building block 生成 DQL;不要即兴发明字段、枚举、join 语法或 pipeline。
- 对安全态势/所有产品概览类问题,不要用单个宽泛 security.events 扫描;使用 3-stream decomposition 并合并:Stream A external + DT detections 使用 24h;Stream B DT RVA 使用 30m;Stream C DT KSPM 使用 1h。
- 对安全态势/所有产品概览,计数摘要先以 KSPM 合规为主,CIS 优先,其他标准、RVA 和 detections 放在下面;路由到 all-security-events.md § Broad-Question Query Decomposition 和 compliance.md § CIS-Primary Standard Summary。
- 对包含 Dynatrace 原生安全数据的概览/产品集成问题,默认使用 DT-inclusive 3-stream decomposition;只有用户明确限定 external/third-party 工具时,才用 single external-only query。
- 对“哪些第三方/外部工具在发送数据(排除 DT-native)”使用 all-security-events.md § Which external integrations are active 的 external-only enumeration(单查询)。
- 对特定 provider 的发现,用 contains(lower(event.provider | product.vendor), "<p>") 限定。
- 对特定实体的直接或关联发现(blast radius),广泛实体安全问题必须分解:external *_FINDING 按 dt.smartscape_source.id / dt.entity.* / k8s.* 在 24h 查询 + DT RVA entity scope 在 30m + DT SPM entity scope 在 1h,然后合并。
- 实体安全问题不要停在 RVA/SPM;还要运行 external/cross-provider *_FINDING stream,用宽实体 OR 链 dt.smartscape_source.id、dt.entity.*、object.* 和相关 k8s.* 字段,在 24h 查询;dt.source_entity 仅作为 legacy/scan fallback,不是主要跨 provider 路径;若 external 分支返回 0 行,报告 no external findings found 并说明 scope。
- 对“哪些产品覆盖特定实体”问题,按 product.* summarize,并区分 findings 与 scans;使用 dt-sec-contextualization correlation-and-coverage.md 和 all-security-events.md。
- 对实体映射问题加载 dt-sec-contextualization → entity-enrichment.md;使用 3-way match(K8s workload)、host-by-IP、cloud Path-1、pod→node topology、cross-evidence correlation、coverage match recipes。
- 对漏洞计数/严重性(多少 critical,按 risk + mute status)使用 vulnerabilities-dynatrace.md 的 RVA snapshot Steps 1–3。
- 对最脆弱组件/主机/工作负载排名使用 vulnerabilities-entities.md:Steps 1–3 + expand typed related_entities.<group>.ids → smartscapeNodes lookup on id_classic;注意 RVA 事件上 k8s.* / dt.entity.* 为 null。
- 对 CVE/库查询(如是否受 log4shell 影响)使用 vulnerabilities-dynatrace.md § Entity Scoping:Step 2 CVE/component filter,并将 RVA scope 到已知实体。
- 对 CVE X 的 blast radius:使用 vulnerabilities-entities.md 的 related_entities.* indirect-relation expand。
- 对生命周期(new / resolved / open-duration / MTTR):使用 vulnerabilities-dynatrace.md,post-derive resolution.change_date;MTTR 使用 change-events-only snippet(§ Resolution time)。
- 对运行时高级漏洞(function-in-use、exposure、exploit、data-assets)使用 vulnerabilities-dynatrace.md 的 Davis-assessment fieldsAdd(Step 3)。
- 对外部扫描器漏洞(containers / artifacts / components)使用 vulnerabilities-external.md 的 VULNERABILITY_FINDING + external routing。
- 用 RVA 验证外部漏洞发现:使用 vulnerabilities-external.md § Verify external vulnerability findings with RVA 和 dt-sec-contextualization entity-enrichment.md;先按 vulnerability.references.cve 匹配同一漏洞,再通过 direct dt.smartscape* IDs、container-image digest → running CONTAINER、host.ip → Smartscape HOST 证明运行时相关性。
- 对“本期新报告且上一期没有”(external)使用 vulnerabilities-external.md 和 common-patterns.md § 18 的 prior-period anti-join(isNull(right.*));finding.time.created 过滤不等价。
- 对 AI/LLM/GenAI 工作负载漏洞:先 probe smartscapeNodes "GENAI_SERVICE";零行则硬停止并报告 cannot be determined(无 GenAI-monitored services),不得回退到 entity/namespace/workload name substrings、ML library component lists、process/image/label patterns;非零则查询 DT findings + GENAI scope(30m,dedup finding.id)。
- 对本期新增 AI 工作负载漏洞:使用 vulnerabilities-dynatrace-advanced.md § UC-AI2 的 prior-window anti-join on {genai_service.id, vulnerability.id}。
- 对检测严重性/时间窗概览(DT + external)使用 detections.md 和 all-security-events.md,DETECTION_FINDING summary;未限定时间是默认 2h,仅当为空再扩大到 24h。
- 按攻击类型(如 SQL injection、crypto-mining)使用 detections.md 的 finding.type substring match。
- 查找攻击者 IP/campaign 使用 detections.md 的 expand actor.ips + ip()。
- 按 MITRE technique/sub-technique 使用 detections.md 的 threat.attack.* arrays。
- 限定 RAP-only 或 Automated-Detections-only 使用 detections.md § Provider Routing:product.name=="Runtime Application Protection" 或 event.provider=="Dynatrace Automated Detections"。
- 将检测映射到实体、重复触发使用 detections.md 和 dt-sec-contextualization entity-enrichment.md 的 object.id grouping/enrichment。
- MITRE 路由:问“我们检测/观察到哪些 techniques(在我们的实体上)”使用 detections.md 的 DETECTION_FINDING;问“威胁情报/野外的 campaigns 报告了哪些 techniques”使用 threat-intelligence.md 的 THREAT_REPORT;不要合并,因为 report 标记 T1059 不是环境中 T1059 发生的证据。
- 展示/列出/计数威胁情报报告,按 provider、actor、malware family、targeted country/industry、TLP、report type:使用 threat-intelligence.md 的 THREAT_REPORT + dedup {threat.report.id}(先加 SD guard);绝不用四键 finding summarize。
- 提取 top IOCs(CVEs/IPs/domains/URLs/emails/hashes)或 MITRE techniques across reports:使用 threat-intelligence.md § IOC extraction 的 dedup → expand observable → countDistinctExact(threat.report.id)。
- 判断是否暴露于 report X / IOC 是否在环境中:使用 threat-intelligence.md § Threat-Exposure Correlation,join report IOCs/CVEs/techniques 到 VULNERABILITY_FINDING/RVA/DETECTION_FINDING;logs/spans IoC hunt 用 dt-sec-ioc-hunting。
- 合规 pass-rate/posture(CIS/DORA/NIST/STIG):先加载 compliance.md,用 SPM Steps 1–2 + passRate。
- 关键错误配置:先加载 compliance.md,用 Steps 1–2 + severity filter。
- 特定实体的合规/错误配置:使用 compliance.md § Entity Security-Tab View(entity-scoped ${entityIdsOrNames} filter)和 entity-enrichment.md;镜像实体 Security tab(CIS 默认、failed-only):Table 1 DT CIS failed rules → Table 2 other DT standards(overlap caveat)→ Table 3 external misconfigs;广泛 posture/count 问题改用 § CIS-Primary Standard Summary(scorecard)。
- 映射 control/standard → entities、per-namespace:使用 compliance.md,通过 compliance.standard.short_name / compliance.rule.id 进行 entity scoping;绝不用 metadata_json。
- Cloud / non-K8s(PCI/ISO/HIPAA/GDPR;AWS/Azure/GCP)合规:使用 compliance.md § External 的 external taxonomy(compliance.standards/policy/control)。
- 外部违规按 standard/framework 分组:使用 compliance.md § External;compliance.standards 是 array,先 expand 再 summarize。
- 配置 drift / 相对上周新增 failing rules(DT):使用 compliance.md § Week-over-Week Config Drift 的 prior-period anti-join;宽 fetch window 不能替代。
- 外部合规发现本期新增且上期没有:使用 compliance.md § External 的 prior-period anti-join(同 drift 规则)。
- KSPM(Kubernetes-only、DT-native):使用 compliance.md 的 product.name=="Security Posture Management"。
- 覆盖/“covered vs not covered”/覆盖缺口(hosts/processes/workloads):必须从 smartscapeNodes + lookup scan events 开始;不能用汇总 scan events 单独回答,因为无分母;counting logic 用 coverage-and-dashboards.md,match recipes 用 dt-sec-contextualization correlation-and-coverage.md。
- 特定实体被某个 DT capability(RVA、SPM、RAP、其他 DT-native)覆盖:使用 coverage-and-dashboards.md;如果该 capability 的运行窗口内无相关 findings 或 scan/completion events,回答 not covered,并说明可能未启用或未配置监控该实体。
- 映射外部 findings → workloads/hosts/cloud:使用 dt-sec-contextualization entity-enrichment.md 的 3-way match(K8s)/host-by-IP/Path-1(cloud);始终 join 到 Smartscape;绝不仅按 raw object.name / k8s.namespace.name / host.name / cloud resource IDs 分组。
- 每实体一行风险摘要:使用 dt-sec-contextualization entity-enrichment.md 和 coverage-and-dashboards.md,合并 RVA + external。
- 仪表板/KPI tiles/top-N/trends/donuts:使用 coverage-and-dashboards.md 的 makeTimeseries、summarization recipes。
- 数据模型:所有安全事件在 security.events,按 event.type 分类;RVA vulnerabilities 为 VULNERABILITY_STATE_REPORT_EVENT(每实体 15 分钟快照);KSPM compliance 为 COMPLIANCE_FINDING(按 (rule, K8s object),与 COMPLIANCE_SCAN_COMPLETED 按 scan.id join 做 latest-scan dedup);external compliance 为 COMPLIANCE_FINDING 且用 external taxonomy(compliance.standards/compliance.policy/compliance.control),compliance.rule.* 通常 null。
- Detections 数据模型:DETECTION_FINDING(RAP 通过 product.name == "Runtime Application Protection")、SECURITY_EVENT(部分租户 RAP 事件)、Automated Detections 通过 event.provider == "Dynatrace Automated Detections"、external security tools;DETECTION_EXECUTION_SUMMARY 用于 per-rule-run audit(仅 Automated Detections)。
- Scan coverage 数据模型:VULNERABILITY_SCAN、COMPLIANCE_SCAN。
- 威胁情报数据模型:THREAT_REPORT(external TI platforms:AlienVault OTX pulses、CrowdStrike Falcon Intelligence);这是单独数据类不是 finding:无 finding.*/object.*/dt.security.risk.level、无 affected entity、无 scan cycle;绝不并入 cross-provider finding summary 或 posture-overview decomposition;单独通过 threat-intelligence.md 查询,并按 threat.report.id dedup。
- 快照窗口:RVA 固定 30m(捕获最新 15-min cycle);若 30m 为空或明显 stale,使用 vulnerabilities-dynatrace.md 中受控 24h latest-known-state fallback。
- 快照窗口:KSPM 固定 1h(需要最新 COMPLIANCE_SCAN_COMPLETED marker 参与 inner-join)。
- 快照窗口:external findings(含 CSPM/VSPM)使用 2h–24h+,无 snapshot 语义,是一次性事件。
- 不要通过扩大窗口回看更早;扩大只捕获最新 report/scan cycle;历史趋势用 makeTimeseries 更长窗口。
- DT-generated VULNERABILITY_FINDING 与 RVA state reports:DT-generated VULNERABILITY_FINDING(如 AI-workload scoping)也用 30m,但按 finding.id dedup,因为每次扫描 run(约 15 分钟)重发;RVA state-report 30m 按 {vulnerability.display_id, affected_entity.id} dedup;不要混用两种 dedup grain。
- App 默认时间范围:Vulnerabilities app 30 minutes;Threats & Exploits app 2 hours;Security Posture Management app 2 hours;生成 canonical pipeline DQL 用 minimum window;用户问 app 当前视图或仪表板 tile 要匹配 app 时用 app default。
- 不要过滤 dt.system.bucket;安全事件数据可能在任意 bucket,按 bucket 过滤会隐藏 findings。
- 对 RVA 使用 event.provider == "Dynatrace";对 SPM/detections 使用 product.vendor == "Dynatrace";按数据族选择正确 provenance 字段,见 data-model.md § Provider Taxonomy。
- 总是包含显式 from: 子句,并按查询类别设置窗口:DT RVA snapshots 30m fixed;DT KSPM snapshots 1h fixed;RAP/external detection retrieval or current summary 先试 2h(匹配 Threats & Exploits app default),仅零行或用户明确要更长才扩到 24h;cross-provider summary 24h;不要省略 from:,否则默认窗口不匹配 snapshot 语义。
- 在 raw listings(top/latest/list/show-me,无 summarize)保留 entity identifiers,让用户看到每个 finding 在哪个实体;命名空间按族分开且不可互换:cross-provider *_FINDING/scan 事件用通用 dt.smartscape* / dt.entity* / dt.source* 字段;RVA state/change 事件这些为 null,引用在 affected_entity* / related_entities*;纯 count/pass-rate summaries 不需要。
- 对 raw listing 和 top-N 结果加边界:用户要 top X/last X/first X 时,在排序后以 | sort ... | limit X 结束;用户要 list/show 但未明确要全部且输出不是 summary(summarize/makeTimeseries)时,默认加 | limit 50;不要对安全 findings 运行无界 raw projections。
- 保持查询形状:不要丢 by: keys,除非用户要求更粗聚合;canonical cross-provider summarize 总是按 {event.provider, product.name, event.type, dt.security.risk.level} 分组;丢键会静默合并不同 provider/product/finding type 的行;不要换成 by: {dt.security.risk.level} 或 by: {event.type}。
- 合规状态用 compliance.result.status.level(PASSED/FAILED/MANUAL/NOT_RELEVANT),绝不用 event.status 或 "PASS"/"FAIL";pass rate 在 latest-scan dedup join on: {scan.id} 后对 per-rule verdicts 计算。
- 在 expand / join / lookup 展开数组后,计数 distinct identities 而不是 rows;使用 countDistinctExact(vulnerability.display_id) / countDistinctExact(finding.id),或先对 identity + group key dedup;只有进入 expand 的 grain 已经是每计数项一行时 plain count() 才安全。
- 将空实体覆盖探测解释为 not covered:验证特定实体是否被 DT security capability(RVA、SPM/KSPM、RAP 或其他 DT-native)覆盖时,缺失相关 findings 和 scan/completion events 意味着该实体 not covered;说明可能原因:capability 未启用或未配置/部署监控该实体;不要软化为 no findings。
- 如实报告空结果,绝不编造数字:0 行表示 no matching data,要说明 scope 和 filters;放宽 filter 前先应用该族的 documented recovery(RVA 30m→24h latest-known-state、detections 2h→24h widen、RVA filters on null k8s.*/dt.entity.*/dt.smartscape* → pivot to affected_entity.*/related_entities.*)并明确说明已调整。
- 相关技能路由:dt-dql-essentials 先加载;dt-sec-contextualization 用于任何实体映射问题;dt-obs-kubernetes 用于 K8s topology;dt-obs-hosts 用于 HOST/PROCESS_GROUP;dt-obs-services 用于 service-scoped queries;dt-obs-aws/dt-obs-azure/dt-obs-gcp 用于 cloud Smartscape 和 hyperscaler provider 字段;dt-obs-tracing 用于从漏洞/被攻击实体钻取请求 trace;dt-obs-problems 用于先拿问题的 affected/related entity IDs。
- 需要诊断和领域特定最佳实践时,查阅 How This Skill Is Organized 中的 references:data-model.md、common-patterns.md、vulnerabilities-dynatrace.md、vulnerabilities-dynatrace-advanced.md、vulnerabilities-external.md、vulnerabilities-entities.md、compliance.md、detections.md、threat-intelligence.md、all-security-events.md、coverage-and-dashboards.md,以及 dt-sec-contextualization 的 entity-enrichment.md。
- 需要外部定义时参考 https://docs.dynatrace.com/docs/secure/threat-observability/concepts、https://docs.dynatrace.com/docs/semantic-dictionary/model/security-events、https://docs.dynatrace.com/docs/semantic-dictionary/fields。
适用边界 · 注意事项
- 不用于解释已有 DQL;解释 DQL 应使用 dt-dql-essentials。
- 不用于 Dynatrace Davis problems、应用/基础设施日志、分布式追踪、服务 RED 指标、平台使用/审计遥测;这些分别使用 dt-obs-problems、dt-obs-logs、dt-obs-tracing、dt-obs-services、dt-platform。
- 不适用于没有 Dynatrace security.events 数据、相关安全模块或威胁可观测性集成的环境。