시큐리티 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 ago커스텀 대시보드
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 affectedPackage이벤트 유형 전반에 걸친 공통 속성
이러한 속성은 여러 이벤트 유형에 걸쳐 나타납니다.
부품 식별
기인하다 | 설명 |
|---|---|
| 영향을 받은 부분에 대한 고유한 분리 |
| 사람이 읽을 수 있는 엔티티 이름 |
| 엔티티 유형(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)쿼리 패턴
SecurityFinding을 사용하는 쿼리 패턴에 대해서는 위의 쿼리 예제 섹션을 참조하세요.
속성 유형 및 형식
심각도 값
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
더 많은 쿼리 예시는 보안 데이터 쿼리 예시를 참조하세요.
구형 대시보드 접근 방식
이전 버전과의 호환성을 위해 구형 이벤트 유형(Vulnerability)을 계속 사용할 수 있지만, 새로운 대시보드의 경우 SecurityFinding으로 마이그레이션하는 것이 좋습니다.