시큐리티 RX는 뉴렐릭의 데이터베이스(NRDB)에 잘못된 구성 데이터를 저장하고 NRQL 사용하여 쿼리할 수 있도록 합니다. 이 참조 가이드에서는 사용자 지정 쿼리, 대시보드 및 알림을 구축하는 데 사용할 수 있는 엔티티 유형, 속성 및 데이터 구조에 대해 설명합니다.
엔티티 및 이벤트 유형
시큐리티 RX는 다음 분할 및 이벤트 유형을 사용하여 보안 데이터를 저장합니다.
SecurityFinding 엔티티(권장)
SECURITY_FINDING 은 시큐리티 RX에서 감지한 모든 보안 문제에 대한 일반 컨테이너 역할을 하는 특수한 부분 유형입니다. 이는 뉴렐릭에서 보안 데이터를 쿼리하는 데 권장되는 방법입니다.
중요: SecurityFinding은 기존 이벤트 유형이 아닌 엔티티 유형으로 쿼리됩니다.
FROM EntitySELECT * WHERE type = 'SECURITY_FINDING'findingType 이해하기
findingType 속성은 데이터 소스를 구분하는 핵심 필드입니다.
findingType = 'VULNERABILITY': APM 에이전트, 인프라 에이전트 또는 타사 스캐너(Snyk, Trivy, FOSSA)와 같은 소스에서 취약점이 발견되었음을 나타냅니다.findingType = 'MISCONFIGURATION': 시큐리티 RX 클라우드(예: AWS Security Hub, GuardDuty 또는 Config)에서 cloud 보안 상태 관리(CSPM) 문제가 발견되었음을 나타냅니다.
다른 findingType 값에는 LIBRARY_VULNERABILITY, INFRASTRUCTURE_VULNERABILITY, APPLICATION_VULNERABILITY, SYSTEM_VULNERABILITY, SECURITY_EVENT 및 OTHER 가 포함됩니다.
핵심 엔티티 필드
기인하다 | 유형 | 설명 | 예시 |
|---|---|---|---|
| 문자열 | 이 SecurityFinding에 대해 전역적으로 고유한 예외(타겟, 목표 특정 CVE & 영향을 받는 부분) | "ABC123..." |
| 문자열 | 엔티티 유형 - 항상 "SECURITY_FINDING" | "SECURITY_FINDING" |
| 문자열 | 취약점 또는 잘못된 구성의 제목 | "CVE-2024-12345: SQL 내부에 있는-name" |
| 문자열 | 해당 문제가 발견된 계정 ID | "1234567" |
| 문자열 | 범위 유형 - 일반적으로 "ACCOUNT" | "ACCOUNT" |
| 시간소인 | 이 성이 만들어졌을 때 | 유닉스 타임스탬프 |
| 시간소인 | 이 엔티티가 마지막으로 업데이트된 시점은 언제입니까? | 유닉스 타임스탬프 |
| 정렬 | 엔티티에 적용 가능한 태그 목록 (일반적으로 "SecurityFinding"의 경우 비어 있음) | [] |
분류 필드
기인하다 | 유형 | 설명 | 예시 |
|---|---|---|---|
| 문자열 | "SecurityFindings"을 집계하기 위한 식별자(일반적으로 CVE ID) | "CVE-2024-12345" |
| 문자열 | 최상위 유형의 발견 | "VULNERABILITY", "MISCONFIGURATION" |
| 문자열 | 하위 유형(APM 취약점에 대한 언어, 인프라에 대한 INFRA_OS_VULNERABILITY 또는 INFRA_PACKAGE_VULNERABILITY) | "java", "INFRA_PACKAGE_VULNERABILITY" |
| 문자열 | 연구 결과의 출처 | "뉴렐릭", "Snyk", "AWS Security Hub" |
상태 및 심각도 필드
기인하다 | 유형 | 설명 | 가치 |
|---|---|---|---|
| 문자열 | 발견된 증상의 심각도 보고 | "CRITICAL", "HIGH", "MEDIUM", "LOW", "UNKNOWN", "INFO" |
| 문자열 | 발견 내용의 현재 상황 | "AFFECTED", "IGNORED", "NO_LONGER_DETECTED", "UNKNOWN" |
| 부울 | 개선책이 존재하는지 여부 | true, false |
| 문자열 | 시큐리티 RX가 제안하는 업그레이드 | "버전 2.17.1로 업그레이드하세요" |
| 문자열 | 출처에서 발췌한 간략한 수정 텍스트 | "라이브러리를 패치된 버전으로 업데이트하세요" |
| 문자열 | 출처의 문서 URL | " https://example.com/security-advisory " |
CVE 참조 필드
취약점 발견 시, cve 객체에는 자세한 CVE 정보가 포함되어 있습니다.
기인하다 | 유형 | 설명 |
|---|---|---|
| 문자열 | CVE 식별자 |
| 문자열 | CVE 설명 |
| 숫자 | CVSS 점수 |
| 문자열 | CVSS 벡터 문자열 |
| 숫자 | EPSS 활용 확률 점수 |
| 숫자 | EPSS 백분위수 순위 |
| 부울 | 알려진 취약점이 존재하는지 여부 |
| 문자열 | CVE가 공개된 URL |
| 시간소인 | CVE가 공개되었을 때 |
잘못된 필드 구성(클라우드 관련 문제)
구성 오류가 발견되면 misconfiguration 객체에는 클라우드별 정보가 포함됩니다.
기인하다 | 유형 | 설명 |
|---|---|---|
| 문자열 | 클라우드 공급자 |
| 문자열 | 설정 오류 제목 |
| 문자열 | 원본 소스에서 찾기 유형 |
| 문자열 | 간소화된 리소스 유형(예: "S3", "EC2", "RDS") |
영향을 받는 엔티티 필드
impactedEntity 객체는 어떤 뉴럴릭 창이 영향을 받는지 식별합니다.
기인하다 | 유형 | 설명 |
|---|---|---|
| 문자열 | 엔티티 GUID |
| 문자열 | 엔티티 이름 |
| 문자열 | 엔티티 유형(APM-APPLICATION, INFRA-HOST 등) |
| 문자열 | 계정 ID |
| 문자열 | 범위 유형 |
타임스탬프 필드
기인하다 | 유형 | 설명 |
|---|---|---|
| 시간소인 | 해당 발견이 처음 확인되었을 때 |
| 시간소인 | 해당 조사 결과가 마지막으로 업데이트된 시점은 언제입니까? |
| 시간소인 | 해당 발견물이 마지막으로 활성화된 것으로 확인된 시점은 언제였습니까? |
UI 및 내부 필드
기인하다 | 유형 | 설명 |
|---|---|---|
| 문자열 | 시큐리티 RX UI세부정보 페이지 링크 |
| 문자열 | 시큐리티 RX UI의 파티 보기 링크 |
| 문자열 | 내부 상태 필드 |
| 부울 | 내부 활성 플래그(cloud 쿼리에서 사용됨) |
| 문자열 | 내부 필드 (실제 운영 환경에서는 숨겨집니다) |
| 문자열 | 내부 필드 (실제 운영 환경에서는 숨겨집니다) |
| 객체의 분리 | 핵심 가치 쌍이 포함된 추가 데이터 데이터(cloud 계정 ID 등에 사용) |
팁
"내부"로 표시된 필드는 현재 NRDB에서 볼 수 있지만 최종 출시 시에는 숨겨질 수 있습니다. internalState.active 필드는 cloud 구성 오류 검색에서 활성 결과를 필터링하는 데 일반적으로 사용됩니다.
세션에 대한 쿼리 예제
엔티티별 활성 심각 취약점 수를 계산합니다.
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND status = 'AFFECTED' AND severity = 'CRITICAL'FACET impactedEntity.name특정 CVE의 영향을 받는 엔티티를 찾으세요:
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND status = 'AFFECTED' AND cve.id = 'CVE-2024-23944'FACET impactedEntity.name현재 랜섬웨어 공격이 진행 중인 CVE를 찾아보세요:
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND cve.exploitKnown IS trueFACET impactedEntity.name, cve.id악용 가능성이 높은 취약점(높은 EPSS 점수)을 찾습니다.
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND cve.epssPercentile > '0.95'FACET cve.id조사 결과를 뒷받침하는 보도 자료를 찾아보세요:
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING'FACET source높은 해리 포터와 분리:
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)cloud 구성 오류에 대한 쿼리 예시
상태별로 고유한 잘못된 구성 수를 계산합니다.
FROM EntitySELECT uniqueCount(misconfiguration.issueTitle)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION'FACET status가장 흔한 설정 오류 유형 10가지:
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION' AND internalState.active = trueFACET misconfiguration.issueTitleLIMIT 10가장 위험한 AWS 계정을 찾아보세요:
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 10리소스 유형별 잘못된 구성 개수를 계산합니다.
FROM EntitySELECT uniqueCount(misconfiguration.issueTitle)WHERE type = 'SECURITY_FINDING' AND findingType = 'MISCONFIGURATION' AND internalState.active = trueFACET misconfiguration.normalizedResourceType중요하고 공개적으로 알려진 자료를 찾아보세요:
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 (구형)
발견된 내용과 현재 상태를 저장하는 구형 이벤트 유형입니다. 이 이벤트 유형은 하위 호환성을 위해 여전히 지원되지만, 새로운 쿼리에는 SecurityFinding 사용하는 것이 좋습니다.
주요 용도: 귀하의 세션에 영향을 미치는 분리
주요 속성:
기인하다 | 유형 | 설명 | 예시 |
|---|---|---|---|
| 문자열 | 취약점 제목 | "CVE-2024-12345: SQL 내부에 있는-name" |
| 문자열 | 컴퓨트 우선 순위 | "CRITICAL", "HIGH", "MEDIUM", "LOW" |
| 문자열 | 현재 상태 | "OPEN", "CLOSED" |
| 부울 | 그 문제가 검토되었는지 여부 |
|
| 문자열 | 감지 소스/조건 | "시큐리티 RX - 탐지 탐지" |
| 문자열 | 취약점의 영향을 받는 엔티티 GUID | "ABC123..." |
| 문자열 | 엔티티 이름 | "my-application" |
| 문자열 | 영향을 받는 유형 | "APPLICATION", "HOST" |
쿼리 예:
FROM NrAiIncidentSELECT count(*)WHERE conditionName LIKE '%Security RX%'FACET priority, state커스텀 대시보드
CVE 정보, 심각도 점수 및 해결 지침을 포함한 상세한 취약점 메타데이터를 저장합니다.
주요 용도: 취약점 세부 정보 및 메타데이터에 대한 심층 분석
주요 속성:
기인하다 | 유형 | 설명 | 예시 |
|---|---|---|---|
| 문자열 | CVE 식별자 | "CVE-2024-12345" |
| 문자열 | CVSS 기반 중증도 | "CRITICAL", "HIGH", "MEDIUM", "LOW" |
| 숫자 | CVSS 수치 점수 | 9.8 |
| 숫자 | EPSS 활용 확률 | 0.95 |
| 숫자 | EPSS 백분위수 순위 | 98.5 |
| 부울 | 알려진 랜섬웨어 공격에 사용됨 |
|
| 문자열 | 취약한 라이브러리/패키지 이름 | "log4j-core" |
| 문자열 | 취약한 패키지 버전 | "2.14.0" |
| 문자열 | 수정 사항이 포함된 버전 | "2.17.1" |
| 문자열 | 영향을 받는 엔티티 GUID | "ABC123..." |
| 문자열 | 탐지 소스 | "APM_AGENT", "SNYK", "AWS_SECURITY_HUB" |
쿼리 예:
FROM VulnerabilitySELECT count(*)WHERE severity = 'CRITICAL'AND activeRansomware = trueFACET affectedPackageNrAiIncidentTimeline
취약점의 상태 변화 및 수명 주기 이벤트를 추적합니다.
주요 용도: 취약점 상태 이력 감사 및 해결 진행 상황 추적
주요 속성:
기인하다 | 유형 | 설명 | 예시 |
|---|---|---|---|
| 문자열 | 관련 인시던트/취약점 ID | "INC-123" |
| 시간소인 | 상태가 변경될 때 | 유닉스 타임스탬프 |
| 문자열 | 변경 유형 | "STATUS_CHANGED", "DETECTED", "RESOLVED" |
| 문자열 | 변경 전 상태 | "AFFECTED" |
| 문자열 | 변경 후 상태 | "IGNORED" |
| 문자열 | 잔돈을 만든 사용자 | |
| 문자열 | 상태 변경 사유 | "오탐 - 취약한 코드 경로를 사용하지 않음" |
쿼리 예:
FROM NrAiIncidentTimelineSELECT timestamp, event, previousState, newState, changedByWHERE event = 'STATUS_CHANGED'SINCE 7 days ago이벤트 유형 전반에 걸친 공통 속성
이러한 속성은 여러 이벤트 유형에 걸쳐 나타납니다.
부품 식별
기인하다 | 설명 |
|---|---|
| 영향을 받은 부분에 대한 고유한 분리 |
| 사람이 읽을 수 있는 엔티티 이름 |
| 엔티티 유형(APPLICATION, HOST, SERVICE) |
| 뉴렐릭 계정 ID |
타임스탬프
기인하다 | 설명 |
|---|---|
| 이벤트가 발생한 시기 |
| 취약점이 처음 발견되었을 때 |
| 최종 업데이트 타임스탬프 |
| 취약점이 해결된 것으로 표시되었을 때 |
출처 추적
기인하다 | 설명 |
|---|---|
| 데이터 원본(APM_AGENT, INFRASTRUCTURE, SNYK, 등) |
| 소스 시스템의 고유 ID |
| 데이터를 제공하는 통합 |
데이터 관계
데이터 유형 간의 관계 이해:
현대적인 접근 방식(권장)
SecurityFinding Entity (type = 'SECURITY_FINDING') ↓ contains ├─ findingType (VULNERABILITY or MISCONFIGURATION) ├─ cve (CVE details for vulnerabilities) ├─ misconfiguration (Cloud security details) └─ impactedEntity (Affected New Relic entity)하위 호환성 접근 방식
Entity (Application/Host) ↓ has manyNrAiIncident (Active vulnerabilities) ↓ referencesVulnerability (CVE details) ↓ has manyNrAiIncidentTimeline (Status history)쿼리 패턴
팁
권장 사항: 새로운 구현에는 SecurityFinding 엔티티 쿼리(위의 SecurityFinding 섹션 참조)를 사용하십시오. 아래 패턴들은 일반적인 이벤트 유형을 사용하며, 하위 호환성을 위해서만 제공됩니다.
최신 쿼리 패턴
SecurityFinding을 사용하는 최신 쿼리 패턴에 대해서는 위의 쿼리 예제 섹션을 참조하세요.
야외용 쿼리 패턴
이러한 패턴은 임시 이벤트 유형을 사용합니다.
분리(구형)와 데이터 결합
FROM NrAiIncidentSELECT entity.name, count(*) as 'Vulnerability Count'WHERE conditionName LIKE '%Security RX%'AND state = 'OPEN'FACET entity.nameSINCE 1 day ago현대적 표현:
FROM EntitySELECT impactedEntity.name, count(*) as 'Vulnerability Count'WHERE type = 'SECURITY_FINDING' AND status = 'AFFECTED'FACET impactedEntity.nameSINCE 1 day ago노출 창을 계산합니다.
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현대적 표현:
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 ago트랙 개선 속도(구형)
FROM NrAiIncidentTimelineSELECT count(*) as 'Vulnerabilities Resolved'WHERE event = 'STATUS_CHANGED'AND newState = 'CLOSED'FACET weekOf(timestamp)SINCE 90 days ago중요
SecurityFinding 부분으로 상태 변경을 추적하려면 시간이 지남에 따라 status 필드의 변경 사항을 모니터링하거나 뉴렐릭 알림을 사용하여 상태 변경이 발생할 때 공지를 받으세요.
속성 유형 및 형식
심각도 값
CRITICAL - CVSS 9.0-10.0HIGH - CVSS 7.0-8.9MEDIUM - CVSS 4.0-6.9LOW - CVSS 0.1-3.9INFO - CVSS 0.0상태 값
OPEN - Vulnerability currently activeCLOSED - Vulnerability resolved or fixedAFFECTED - Entity is confirmed affectedIGNORED - Marked as not applicableNO_LONGER_DETECTED - No longer seen in scans소스 값
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 API쿼리 팁
심각도별 필터링 (최신 방식)
발견 사항은 심각도에 따라 우선순위가 정해집니다.
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND severity IN ('CRITICAL', 'HIGH') AND status = 'AFFECTED'FACET impactedEntity.name찾기 유형으로 필터링
취약점과 잘못된 설정 문제를 구분하세요:
-- 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.normalizedResourceType부분 유형별로 필터링
애플리케이션 취약점과 인프라 취약점을 분리하십시오:
-- 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.name감지 소스별 필터링
특정 통합에서 얻은 쿼리 결과:
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND source = 'Snyk'FACET severity시간 기반 필터링
최근 발견된 결과를 찾아보세요:
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING' AND firstDetected > ago(7 days)FACET cve.id, severity맞춤형 대시보드 구축
SecurityFinding을 사용하여 포괄적인 보안 대시보드를 만드세요.
경영진 대시보드 - 모든 결과 유형에 대한 높은 수준의 보안 지표
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING'AND status = 'AFFECTED'FACET severity, findingType접속 동향 - 시간 경과에 따른 추적 탐지
FROM EntitySELECT count(*)WHERE type = 'SECURITY_FINDING'AND findingType = 'VULNERABILITY'FACET weekOf(firstDetected)SINCE 90 days ago클라우드 보안 상태 - cloud 구성 오류
FROM EntitySELECT uniqueCount(misconfiguration.issueTitle)WHERE type = 'SECURITY_FINDING'AND findingType = 'MISCONFIGURATION'FACET misconfiguration.cloudProvider, severity부품 보안 태세 - Per-엔티티 보안 보기
FROM EntitySELECT count(*) AS 'Findings'WHERE type = 'SECURITY_FINDING'AND status = 'AFFECTED'FACET impactedEntity.name, severity
더 많은 쿼리 예시는 보안 데이터 쿼리 예시를 참조하세요.
구형 대시보드 접근 방식
이전 버전과의 호환성을 위해 구형 이벤트 유형(NrAiIncident, Vulnerability, NrAiIncidentTimeline)을 계속 사용할 수 있지만 새 대시보드의 경우 SecurityFinding으로 마이그레이션하는 것이 좋습니다.