dt-sec-insights

Query and analyze Dynatrace security data in security.events with DQL: vulnerabilities, threat detections, compliance posture, and scan coverage. Covers Dynatrace-native Runtime Vulnerability Analytics (RVA — CVEs, reachability, exposure, exploit), Runtime Application Protection (RAP), Automated Det

By dynatrace · 822 installs

npx skills add dynatrace/dynatrace-for-ai --skill dt-sec-insights

Source repository · Upstream listing

Security Insights Skill Query and analyze Dynatrace security data in security.events using DQL. Events come from Dynatrace native sources (RVA, RAP, Automated Detections, SPM) or external products ingested via integrations (AWS Security Hub, Amazon GuardDuty, GitHub Advanced Security, Snyk, Qualys, Tenable, and more). What This Skill Covers Vulnerability management — open CVEs on running code from DT native RVA (risk ranked with Dynatrace Security Score and the four dimension runtime assessment: vulnerable function in use, public network exposure, reachable data assets, public exploit available) plus external SCA / SAST / image scanners. Compliance posture — DT native KSPM (Kubernetes only: CIS, DORA, NIST, STIG) plus CSPM/VSPM and external compliance/posture providers. Runtime attacks and threats — DT native detections (RAP runtime attacks, Automated Detections rules) plus external detection providers. Threat intelligence — external threat intelligence reports (AlienVault OTX pulses, CrowdStrike Falcon Intelligence) with actor / campaign / targeting context and indicators of compromise (IOCs); correlate reported IOCs / CVEs / techniques against your monitored environment. These are threat intel about the wild — not findings on your entities — and are queried separately. Scan coverage analysis — covered vs. not covered k8s workloads/hosts/processes, by Dynatrace scanning feature ( Library Vulnerability Analytics , Operating System Vulnerability Analytics , Code level Vulnerability Analytics ) or by external product. Entity enrichment — map external findings to Dynatrace runtime entities (hosts, K8s workloads, cloud resources) via Smartscape. Dashboards / KPIs — tiles, top N tables, trend charts, coverage donuts. When to Use This Skill ✅ Must first routing rule: identify user intent first, then load the matching primary reference from Quick Start: Find Your Use Case before generating DQL. Identify the intent, then load the matching reference before writing DQL. Cross cutting (any / all finding types) Intent / example Reference Pattern Security posture / overview across all products (incl. DT native) all security events.md § Broad Question Query Decomposition 3 stream decomposition (external+detections 24h / RVA 30m / KSPM 1h ), merged; lead the count summary with KSPM compliance — CIS first (other standards + RVA + detections beneath) → compliance.md § CIS Primary Standard Summary Findings on a specific entity — direct or related (blast radius) dt sec contextualization entity enrichment.md · all security events.md Broad entity security questions must decompose : external FINDING by dt.smartscape source.id / dt.entity. / k8s. ( 24h ) + DT RVA entity scope ( 30m ) + DT SPM entity scope ( 1h ) Findings from a specific provider all security events.md § Scoping to a Specific Provider contains(lower(event.provider \ product.vendor), "<p ") Which third party / external tools are sending data (DT native excluded) all security events.md § Which external integrations are active external only enumeration (single query) Which security products are integrated? / what security data do we have? (default: include DT native RVA + KSPM) all security events.md § Broad Question Query Decomposition 3 stream decomposition; never a single wide security.events scan Which products cover a specific entity dt sec contextualization correlation and coverage.md · all security events.md summarize by product. ; findings vs scans split Routing tie breaker: an unqualified "which security products are integrated? / are we covered? / what do we have?" defaults to the DT inclusive 3 stream decomposition (it must query DT vulnerabilities and compliance). Take the external only single query only when the user explicitly scopes to external / third party tools ("which external tools are sending us data?"). Vulnerabilities (CVE management) Intent / example Reference Pattern Counts / severity ("how many critical?", by risk + mute status) vulnerabilities dynatrace.md RVA snapshot Steps 1–3 Most vulnerable components / hosts / workloads (rankings) vulnerabilities entities.md Steps 1–3 + expand typed related entities.<group .ids → smartscapeNodes lookup on id classic — ⚠ k8s. / dt.entity. are null on RVA events CVE / library lookup; "am I vulnerable to log4shell?" vulnerabilities dynatrace.md § Entity Scoping Step 2 CVE/component filter; scope RVA to a known entity Blast radius — which entities are affected by CVE X vulnerabilities entities.md related entities. indirect relation expand Lifecycle — new / resolved / open duration / MTTR vulnerabilities dynatrace.md post derive resolution.change date ; MTTR via change events only snippet (§ Resolution time) Runtime advanced — function in use, exposure, exploit, data assets vulnerabilities dynatrace.md Davis assessment fieldsAdd (Step 3) External scanner vulns — containers / artifacts / components vulnerabilities external.md VULNERABILITY FINDING + external routing Verify external vulnerability findings with RVA vulnerabilities external.md § Verify external vulnerability findings with RVA · dt sec contextualization entity enrichment.md First match the same vulnerability by vulnerability.references.cve ; then prove runtime relatedness via direct dt.smartscape IDs, container image digest → running CONTAINER , or host host.ip → Smartscape HOST "Newly reported this period and not in the previous period " (external) vulnerabilities external.md · common patterns.md § 18 prior period anti join ( isNull(right. ) ) — a finding.time.created filter is NOT equivalent AI/LLM/GenAI workload vulnerabilities; "which AI services have vulnerabilities?" vulnerabilities dynatrace advanced.md § AI workload vulnerabilities Probe smartscapeNodes "GENAI SERVICE" first — zero rows → report cannot be determined (no GenAI monitored services); non zero → DT findings + GENAI scope ( 30m , dedup finding.id ). ⚠ Zero rows = hard stop — no fallbacks permitted : entity/namespace/workload name substrings, ML library component lists, process/image/label patterns are all prohibited substitutes. New AI workload vulnerabilities this period vulnerabilities dynatrace advanced.md § UC AI2 prior window anti join on {genai service.id, vulnerability.id} Detections (threats & attacks) Intent / example Reference Pattern Severity / time window overview (DT + external) detections.md · all security events.md DETECTION FINDING summary; default unqualified timeframe is 2h , widen to 24h only if empty By attack type ( SQL injection , crypto mining, …) detections.md finding.type substring match Attacker IPs / campaigns 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" Map detections to entities; repeated firing detections.md · dt sec contextualization entity enrichment.md object.id grouping / enrichment A specific external provider all security events.md § Scoping to a Specific Provider provider contains idiom MITRE routing tie breaker: a MITRE ATT&CK question routes by intent. "Which techniques did we detect / observe (on our entities)?" → detections.md ( DETECTION FINDING ). "Which techniques are reported in threat intel / campaigns in the wild ?" → threat intelligence.md ( THREAT REPORT ). Don't merge the two — a report tagged T1059 is not evidence T1059 occurred in your environment. Threat intelligence (external reports & IOCs) Intent / example Reference Pattern Show / list / count threat intelligence reports; reports by provider, actor, malware family, targeted country/industry, TLP, report type threat intelligence.md THREAT REPORT + dedup {threat.report.id} (SD guard first); never the four key finding summarize Top IOCs (CVEs / IPs / domains / URLs / emails / hashes) or MITRE techniques across reports threat intelligence.md § IOC extraction dedup → expand observable → countDistinctExact(threat.report.id) Am I exposed to report X / are these IOCs in my environment? (threat exposure) threat intelligence.md § Threat Exposure Correlation join report IOCs/CVEs/techniques to VULNERABILITY FINDING /RVA/ DETECTION FINDING ; logs/spans IoC hunt → dt sec ioc hunting Compliance (policy violations & benchmarks) Intent / example Reference Pattern Pass rate / posture (CIS / DORA / NIST / STIG) compliance.md Load compliance.md first — SPM Steps 1–2 + passRate Critical misconfigurations compliance.md Load compliance.md first — Steps 1–2 + severity filter Compliance / misconfigurations on a specific entity compliance.md § Entity Security Tab View (entity scoped ${entityIdsOrNames} filter) · entity enrichment.md Mirror the entity Security tab (CIS default, failed only): Table 1 DT CIS failed rules → Table 2 other DT standards (overlap caveat) → Table 3 external misconfigs. Broad posture/count questions instead use § CIS Primary Standard Summary (scorecard). Map control/standard → entities; per namespace compliance.md entity scoping via compliance.standard.short name / compliance.rule.id (⚠ never metadata json ) Cloud / non K8s (PCI/ISO/HIPAA/GDPR; AWS/Azure/GCP) compliance.md § External external taxonomy ( compliance.standards / policy / control ) External violations grouped by standard / framework compliance.md § External compliance.standards is an array — expand it before summarize Config drift / newly failing rules vs previous week (DT) compliance.md § Week over Week Config Drift prior period anti join — a wide fetch window is NOT a substitute External compliance findings new this period, absent in prior compliance.md § External prior period anti join (same rule as drift) KSPM (Kubernetes only, DT native) compliance.md product.name=="Security Posture Management" Coverage, enrichment & dashboards Intent / example Reference Pattern Coverage / "covered vs not covered" / coverage gaps — hosts / processes / workloads coverage and dashboards.md (counting logic) · dt sec contextualization correlation and coverage.md (match recipes) ⚠ MUST start from smartscapeNodes + lookup scan events — summarizing scan events alone has no denominator and cannot answer a coverage question Specific entity coverage by a DT capability (RVA, SPM, RAP, other DT native) coverage and dashboards.md If no relevant findings or scan/completion events exist for that entity in the capability's operational window, answer not covered — capability is likely not enabled or not configured for that entity Map external findings → workloads / hosts / cloud dt sec contextualization entity enrichment.md 3 way match (K8s) / host by IP / Path 1 (cloud) — ⚠ always join to Smartscape; never group findings by raw object.name / k8s.namespace.name / host.name / cloud resource IDs alone One row per entity risk summary dt sec contextualization entity enrichment.md · coverage and dashboards.md RVA + external merge Dashboards — KPI tiles, top N, trends, donuts coverage and dashboards.md makeTimeseries , summarization recipes ❌ Don't use for: Dynatrace detected problems → dt obs problems Application/infrastructure logs → dt obs logs Distributed tracing → dt obs tracing Service p