Security RX stocke les données de vulnérabilité et de mauvaise configuration dans la base de données (NRDB) de New Relic, ce qui les rend interrogeables à l'aide NRQL. Ce guide de référence explique les types d'entités, les attributs et la structure des données que vous pouvez utiliser pour créer des requêtes, des dashboards et des alertes personnalisés.
types d'entités et d'événements
Security RX utilise les types d'entités et d'événements suivants pour stocker les données de sécurité :
Entité SecurityFinding (recommandé)
SECURITY_FINDING est un type d'entité spécialisé qui sert de conteneur générique pour tous les problèmes de sécurité détectés par Security RX. Voici la méthode recommandée pour interroger les données de sécurité dans New Relic.
Important : SecurityFinding est une requête en tant que type d'entité, et non en tant qu'événement traditionnel :
FROM EntitySELECT * WHERE type = 'SECURITY_FINDING'Type de découverte
L'attribut findingType est le champ clé permettant de distinguer la source de données :
findingType = 'VULNERABILITY': Indique une vulnérabilité détectée par des sources telles que des agents APM, des agents d'infrastructure ou des scanners tiers (Snyk, Trivy, FOSSA).findingType = 'MISCONFIGURATION': Indique une constatation de gestion de la posture de sécurité du cloud (CSPM) provenant de Security RX Cloud (par exemple, d'AWS Security Hub, GuardDuty ou Config).
Les autres valeurs de findingType incluent : LIBRARY_VULNERABILITY, INFRASTRUCTURE_VULNERABILITY, APPLICATION_VULNERABILITY, SYSTEM_VULNERABILITY, SECURITY_EVENT, et OTHER.
Champs d'entité principaux
Attribut | Type | Description | Exemple |
|---|---|---|---|
| Chaîne | Identifiant unique au monde pour ce SecurityFinding (CVE spécifique au câble et entité impactée) | "ABC123..." |
| Chaîne | Type d'entité - toujours « SECURITY_FINDING » | "SECURITY_FINDING" |
| Chaîne | Titre des vulnérabilités ou de la mauvaise configuration | "CVE-2024-12345 : Injection SQL dans bibliothèque-name" |
| Chaîne | Identifiant du compte où ce problème a été détecté | "1234567" |
| Chaîne | Type de portée - généralement « ACCOUNT » | "ACCOUNT" |
| horodatage | Lors de la création de cette entité | Horodatage Unix |
| horodatage | Dernière mise à jour de cette entité | Horodatage Unix |
| Array | Liste des étiquettes applicables à l'entité (généralement vide pour SecurityFinding) | [] |
Champs de classification
Attribut | Type | Description | Exemple |
|---|---|---|---|
| Chaîne | Identifiant permettant d'agréger les SecurityFindings (généralement l'identifiant CVE) | "CVE-2024-12345" |
| Chaîne | Type de découverte de niveau supérieur | "VULNERABILITY", "MISCONFIGURATION" |
| Chaîne | Sous-type (langage pour les vulnérabilités APM, INFRA_OS_VULNERABILITY ou INFRA_PACKAGE_VULNERABILITY pour l'infrastructure) | "java", "INFRA_PACKAGE_VULNERABILITY" |
| Chaîne | Source de la découverte | « New Relic », « Snyk », « AWS Security Hub » |
Champs d'état et de gravité
Attribut | Type | Description | Valeurs |
|---|---|---|---|
| Chaîne | Gravité signalée du constat | "CRITICAL", "HIGH", "MEDIUM", "LOW", "UNKNOWN", "INFO" |
| Chaîne | État actuel de la découverte | "AFFECTED", "IGNORED", "NO_LONGER_DETECTED", "UNKNOWN" |
| Booléen | Existe-t-il une solution de remédiation ? | true, false |
| Chaîne | Mise à niveau suggérée par Security RX | "Mise à jour vers la version 2.17.1" |
| Chaîne | Bref texte de correction tiré de la source | "Mettre à jour la bibliothèque vers la version corrigée" |
| Chaîne | URL de la documentation provenant de la source | " https://example.com/security-advisory " |
champs de référence CVE
Pour les résultats de vulnérabilités, l'objet cve contient des informations CVE détaillées :
Attribut | Type | Description |
|---|---|---|
| Chaîne | Identifiant CVE |
| Chaîne | Description du CVE |
| Nombre | score CVSS |
| Chaîne | Chaîne vectorielle CVSS |
| Nombre | Score de probabilité d'exploitation EPSS |
| Nombre | classement percentile EPSS |
| Booléen | Existe-t-il une faille connue ? |
| Chaîne | URL où le CVE a été divulgué |
| horodatage | Lorsque le CVE a été divulgué |
Champs de configuration incorrecte (Résultats du cloud)
En cas de résultats de configuration incorrecte, l'objet misconfiguration contient des informations spécifiques au cloud :
Attribut | Type | Description |
|---|---|---|
| Chaîne | Fournisseur de cloud |
| Chaîne | Titre de la mauvaise configuration |
| Chaîne | Type de résultat brut provenant de la source |
| Chaîne | Type de ressource simplifié (par exemple, « S3 », « EC2 », « RDS ») |
Champs d'entité concernés
L'objet impactedEntity identifie l'entité New Relic concernée :
Attribut | Type | Description |
|---|---|---|
| Chaîne | GUID de l'entité |
| Chaîne | Nom de l'entité |
| Chaîne | Type d'entité (APM-APPLICATION, INFRA-HOST, etc.) |
| Chaîne | ID de compte |
| Chaîne | Type de portée |
Champs d'horodatage
Attribut | Type | Description |
|---|---|---|
| horodatage | Lorsque cette découverte a été initialement détectée |
| horodatage | Date de la dernière mise à jour de cette découverte |
| horodatage | La découverte était active pour la dernière fois lorsque la situation s'est améliorée. |
Interface utilisateur et champs internes
Attribut | Type | Description |
|---|---|---|
| Chaîne | Lien vers la page de détails dans l'interface utilisateur de Security RX |
| Chaîne | Lien vers la vue entité dans l'interface utilisateur Security RX |
| Chaîne | Champ d'état interne |
| Booléen | Indicateur actif interne (utilisé dans les requêtes cloud) |
| Chaîne | Champ interne (sera masqué en production) |
| Chaîne | Champ interne (sera masqué en production) |
| éventail d'objets | Métadonnées supplémentaires avec paires valeur clé (utilisées pour les identifiants de compte cloud, etc.) |
Conseil
Les champs marqués comme « internes » sont actuellement visibles dans NRDB, mais pourraient être masqués lors du lancement final. Le champ internalState.active est couramment utilisé dans les requêtes de mauvaise configuration cloud pour filtrer les résultats actifs.
exemples de requêtes pour les vulnérabilités
Nombre de vulnérabilités critiques actives par entité :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND status = 'AFFECTED' AND severity = 'CRITICAL'FACET impactedEntity.nameTrouver l'entité affectée par une CVE spécifique :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND status = 'AFFECTED' AND cve.id = 'CVE-2024-23944'FACET impactedEntity.nameIdentifiez les CVE associées à des campagnes de ransomware actives :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND cve.exploitKnown IS trueFACET impactedEntity.name, cve.idIdentifier les vulnérabilités susceptibles d'être exploitées (score EPSS élevé) :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND cve.epssPercentile > '0.95'FACET cve.idTrouvez les sources de vos recherches :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING'FACET sourceentité à seuil de vulnérabilités élevées :
SELECT impactedEntityFROM ( SELECT count(*) AS vulnerableCount FROM Entity WHERE type = 'SECURITY_FINDING' AND severity IN ('CRITICAL', 'HIGH') FACET impactedEntity.name AS impactedEntity, severity)WHERE (severity = 'HIGH' AND vulnerableCount > 10) OR (severity = 'CRITICAL' AND vulnerableCount > 5)Exemples de requêtes pour les mauvaises configurations cloud
Nombre de configurations erronées uniques par statut :
FROM EntitySELECT uniqueCount(misconfiguration.issueTitle)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION'FACET statusLes 10 types de mauvaises configurations les plus courants :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION' AND internalState.active = trueFACET misconfiguration.issueTitleLIMIT 10Trouvez les comptes AWS les plus risqués :
FROM EntitySELECT uniqueCount(misconfiguration.issueTitle)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION' AND internalState.active = true AND severity IN ('CRITICAL', 'HIGH')FACET aparse(additionalInfo, '%"key":"cloudProviderAccountId","values":["*"]%') AS 'AWS Account ID'LIMIT 10Nombre d'erreurs de configuration par type de ressource :
FROM EntitySELECT uniqueCount(misconfiguration.issueTitle)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION' AND internalState.active = trueFACET misconfiguration.normalizedResourceTypeTrouver des ressources essentielles et accessibles au public :
FROM EntitySELECT name, impactedEntity.name, misconfiguration.misconfigurationTypeWHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION' AND internalState.active = true AND severity = 'CRITICAL' AND misconfiguration.misconfigurationType LIKE 'Effects/Data Exposure'SINCE 1 day agoNrAiIncident (héritage)
Type d'événement hérité qui stocke les résultats de vulnérabilités et leur statut actuel. Ce type d'événement est toujours pris en charge pour assurer la compatibilité ascendante, mais nous recommandons d'utiliser SecurityFinding pour les nouvelles requêtes.
Utilisation principale : requêtes vulnérabilités affectant votre entité
Attribut clé :
Attribut | Type | Description | Exemple |
|---|---|---|---|
| Chaîne | titres des vulnérabilités | "CVE-2024-12345 : Injection SQL dans bibliothèque-name" |
| Chaîne | calculer le rang de priorité | "CRITICAL", "HIGH", "MEDIUM", "LOW" |
| Chaîne | État actuel des vulnérabilités | "OPEN", "CLOSED" |
| Booléen | La question de savoir si les vulnérabilités ont été examinées a-t-elle été examinée ? |
|
| Chaîne | Source/condition de détection | "Security RX - Détection des vulnérabilités" |
| Chaîne | Entité GUID affectée par des vulnérabilités | "ABC123..." |
| Chaîne | Nom de l'entité | "my-application" |
| Chaîne | Type d'entité affectée | "APPLICATION", "HOST" |
Exemple de requête :
FROM NrAiIncidentSELECT count(*)WHERE conditionName LIKE '%Security RX%'FACET priority, stateVulnérabilités (événement personnalisé)
Stocke des métadonnées détaillées sur les vulnérabilités, notamment les informations CVE, les scores de gravité et les recommandations de correction.
Utilisation principale : Analyse approfondie des détails et métadonnées des vulnérabilités
Attribut clé :
Attribut | Type | Description | Exemple |
|---|---|---|---|
| Chaîne | Identifiant CVE | "CVE-2024-12345" |
| Chaîne | gravité basée sur le CVSS | "CRITICAL", "HIGH", "MEDIUM", "LOW" |
| Nombre | score numérique CVSS | 9.8 |
| Nombre | Probabilité d'exploitation de l'EPSS | 0,95 |
| Nombre | classement percentile EPSS | 98,5 |
| Booléen | Utilisé dans des campagnes de ransomware connues |
|
| Chaîne | Nom de la bibliothèque/package vulnérable | "log4j-core" |
| Chaîne | Version du package vulnérable | "2.14.0" |
| Chaîne | Version corrigée | "2.17.1" |
| Chaîne | GUID de l'entité concernée | "ABC123..." |
| Chaîne | Source de détection | "APM_AGENT", "SNYK", "AWS_SECURITY_HUB" |
Exemple de requête :
FROM VulnerabilitySELECT count(*)WHERE severity = 'CRITICAL'AND activeRansomware = trueFACET affectedPackageNrAiIncidentTimeline
Suit les changements de statut et les événements du cycle de vie pour les vulnérabilités.
Utilisation principale : Auditer l’historique de l’état des vulnérabilités et suivre l’avancement des corrections
Attribut clé :
Attribut | Type | Description | Exemple |
|---|---|---|---|
| Chaîne | ID incident/vulnérabilités associé | "INC-123" |
| horodatage | Lorsque le statut a changé | Horodatage Unix |
| Chaîne | Type de changement | "STATUS_CHANGED", "DETECTED", "RESOLVED" |
| Chaîne | État avant changement | "AFFECTED" |
| Chaîne | État après changement | "IGNORED" |
| Chaîne | L'utilisateur qui a effectué la modification | |
| Chaîne | Motif du changement de statut | "faux positif - n'utilise pas le chemin de code vulnérable" |
Exemple de requête :
FROM NrAiIncidentTimelineSELECT timestamp, event, previousState, newState, changedByWHERE event = 'STATUS_CHANGED'SINCE 7 days agoAttribut commun à tous les types d'événements
Ces attributs apparaissent dans plusieurs types d'événements :
Identification de l'entité
Attribut | Description |
|---|---|
| Identifiant unique de l'entité concernée |
| Nom de l'entité lisible par l'humain |
| Type d'entité (APPLICATION, HOST, SERVICE) |
| Identifiant de compte New Relic |
horodatage
Attribut | Description |
|---|---|
| Lorsque l'événement s'est produit |
| Lorsque les vulnérabilités ont été détectées pour la première fois |
| Dernière mise à jour horodatage |
| Lorsque les vulnérabilités ont été marquées comme résolues |
Suivi de la source
Attribut | Description |
|---|---|
| Source de données (APM_AGENT, INFRASTRUCTURE, SNYK, etc.) |
| ID unique du système source |
| intégration qui a fourni des données |
relations de données
Comprendre les relations entre les types de données :
Approche moderne (recommandée)
SecurityFinding Entity (type = 'SECURITY_FINDING') ↓ contains ├─ findingType (VULNERABILITY or MISCONFIGURATION) ├─ cve (CVE details for vulnerabilities) ├─ misconfiguration (Cloud security details) └─ impactedEntity (Affected New Relic entity)approche traditionnelle (rétrocompatibilité)
Entity (Application/Host) ↓ has manyNrAiIncident (Active vulnerabilities) ↓ referencesVulnerability (CVE details) ↓ has manyNrAiIncidentTimeline (Status history)Modèles de requêtes
Conseil
Recommandation : Utilisez la requête d'entité SecurityFinding (présentée dans la section SecurityFinding ci-dessus) pour les nouvelles implémentations. Les modèles ci-dessous utilisent des types d'événements legacy et sont fournis uniquement à des fins de compatibilité ascendante.
Modèles de requêtes modernes
Pour les modèles de requêtes modernes utilisant l'entité SecurityFinding, voir les sections d'exemples de requêtes ci-dessus.
Modèles de requêtes hérités
Ces modèles utilisent les types d'événements legacy :
Rejoindre les données d'entité avec des vulnérabilités (héritées)
FROM NrAiIncidentSELECT entity.name, count(*) as 'Vulnerability Count'WHERE conditionName LIKE '%Security RX%'AND state = 'OPEN'FACET entity.nameSINCE 1 day agoÉquivalent moderne :
FROM EntitySELECT impactedEntity.name, count(*) as 'Vulnerability Count'WHERE type = 'SECURITY_FINDING' AND status = 'AFFECTED'FACET impactedEntity.nameSINCE 1 day agoCalcul des fenêtres d'exposition (héritées)
FROM VulnerabilitySELECT entity.name, cveId, (max(timestamp) - min(timestamp)) / 86400 as 'Days Exposed'WHERE severity IN ('CRITICAL', 'HIGH')FACET entity.name, cveIdSINCE 30 days agoÉquivalent moderne :
FROM EntitySELECT impactedEntity.name, cve.id, (max(findingUpdatedAt) - min(firstDetected)) / 86400 as 'Days Exposed'WHERE type = 'SECURITY_FINDING' AND severity IN ('CRITICAL', 'HIGH')FACET impactedEntity.name, cve.idSINCE 30 days agoVitesse de correction des problèmes (héritée)
FROM NrAiIncidentTimelineSELECT count(*) as 'Vulnerabilities Resolved'WHERE event = 'STATUS_CHANGED'AND newState = 'CLOSED'FACET weekOf(timestamp)SINCE 90 days agoImportant
Pour suivre les changements d'état avec l'entité SecurityFinding, monitorez les changements dans le champ status au fil du temps ou utilisez les alertes New Relic pour recevoir une notification lorsque des changements d'état se produisent.
Types et formats d'attributs
Valeurs de gravité
CRITICAL - CVSS 9.0-10.0HIGH - CVSS 7.0-8.9MEDIUM - CVSS 4.0-6.9LOW - CVSS 0.1-3.9INFO - CVSS 0.0Valeurs d'état
OPEN - Vulnerability currently activeCLOSED - Vulnerability resolved or fixedAFFECTED - Entity is confirmed affectedIGNORED - Marked as not applicableNO_LONGER_DETECTED - No longer seen in scansValeurs sources
APM_AGENT - Detected by New Relic APM agentINFRASTRUCTURE - Detected by Infrastructure agentSNYK - Imported from SnykAWS_SECURITY_HUB - Imported from AWS Security HubDEPENDABOT - Imported from GitHub DependabotFOSSA - Imported from FOSSATRIVY - Imported from TrivySECURITY_DATA_API - Sent via APIConseils pour les requêtes
Filtrer par gravité (approche moderne)
Les résultats sont classés par ordre de priorité en fonction de leur gravité :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND severity IN ('CRITICAL', 'HIGH') AND status = 'AFFECTED'FACET impactedEntity.nameFiltrer par type de recherche
Distinguer les vulnérabilités des erreurs de configuration :
-- Vulnerabilities onlyFROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND findingType = 'VULNERABILITY'FACET impactedEntity.type
-- Misconfigurations onlyFROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION'FACET misconfiguration.normalizedResourceTypeFiltrer par type d'entité
Distinguer les vulnérabilités de l'application de celles de l'infrastructure :
-- Application vulnerabilitiesFROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND impactedEntity.type LIKE '%APPLICATION%'FACET impactedEntity.name
-- Infrastructure vulnerabilitiesFROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND impactedEntity.type LIKE '%HOST%'FACET impactedEntity.nameFiltrer par source de détection
Résultats de requête issus d'une intégration spécifique :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND source = 'Snyk'FACET severityFiltrage temporel
Trouver les résultats récemment détectés :
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND firstDetected > ago(7 days)FACET cve.id, severityCréation de dashboards personnalisés
Utilisez l'entité SecurityFinding pour créer des dashboards de sécurité complets :
Dashboard exécutif - Indicateurs de sécurité de haut niveau pour tous les types de constatations
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING'AND status = 'AFFECTED'FACET severity, findingTypeTendances des vulnérabilités - Suivre la détection des vulnérabilités au fil du temps
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING'AND findingType = 'VULNERABILITY'FACET weekOf(firstDetected)SINCE 90 days agoPosture de sécurité du cloud - monitoring des erreurs de configuration cloud
FROM EntitySELECT uniqueCount(misconfiguration.issueTitle)WHERE type = 'SECURITY_FINDING'AND findingType = 'MISCONFIGURATION'FACET misconfiguration.cloudProvider, severityPosture de sécurité de l'entité - Vues de sécurité par entité
FROM EntitySELECT count(*) AS 'Findings'WHERE type = 'SECURITY_FINDING'AND status = 'AFFECTED'FACET impactedEntity.name, severity
Pour plus d'exemples de requêtes, consultez Exemples de requêtes de données de sécurité.
Approches dashboards héritées
Pour assurer la compatibilité ascendante, vous pouvez toujours utiliser les legacy types d'événements (NrAiIncident, Vulnerability, NrAiIncidentTimeline), mais nous recommandons de migrer vers l'entité SecurityFinding pour les nouveaux dashboards.