このガイドでは、一般的なセキュリティ監視および分析シナリオですぐに使用できる NRQL クエリを提供します。これらの書き込みを書き込みビルダーにコピーするか、カスタムダッシュボードに追加して、インサイトの脆弱性データをより深く取得します。
基礎となるデータ構造の詳細については、 「セキュリティ データ構造リファレンス」を参照してください。
経営報告
深刻度別の未解決の脆弱性の総数
脆弱性の露出についての概要を取得します。
FROM VulnerabilitySELECT count(*) as 'Total Vulnerabilities'WHERE state = 'OPEN'FACET severitySINCE 1 day ago重大かつ深刻な傾向
重大な脆弱性が時間の経過とともにどのように変化するかを追跡します。
FROM VulnerabilitySELECT count(*) as 'Critical & High Vulnerabilities'WHERE severity IN ('CRITICAL', 'HIGH')AND state = 'OPEN'TIMESERIES AUTOSINCE 30 days agoエンティティ別の脆弱性
最も脆弱性のあるアプリケーションまたはホストを特定します。
FROM VulnerabilitySELECT count(*) as 'Vulnerability Count'WHERE state = 'OPEN'FACET entity.nameLIMIT 20SINCE 1 day agoポートフォリオ全体の脆弱性分布
脆弱性の拡散を理解する:
FROM VulnerabilitySELECT percentage(count(*), WHERE severity = 'CRITICAL') as 'Critical %', percentage(count(*), WHERE severity = 'HIGH') as 'High %', percentage(count(*), WHERE severity = 'MEDIUM') as 'Medium %', percentage(count(*), WHERE severity = 'LOW') as 'Low %'WHERE state = 'OPEN'SINCE 1 day ago優先順位付けとリスク評価
優先度の高い脆弱性
悪用される可能性が高い脆弱性を見つける:
FROM VulnerabilitySELECT cveId, affectedPackage, affectedVersion, cvssScore, epssPercentileWHERE epssPercentile > 90AND state = 'OPEN'ORDER BY epssPercentile DESCLIMIT 50SINCE 7 days agoアクティブなランサムウェアの脆弱性
ランサムウェア キャンペーンで使用される脆弱性を特定します。
FROM VulnerabilitySELECT cveId, affectedPackage, cvssScore, entity.nameWHERE activeRansomware = trueAND state = 'OPEN'FACET cveId, entity.nameSINCE 30 days ago新たに検出された重大な脆弱性
新しい重要な発見を監視する:
FROM VulnerabilitySELECT cveId, affectedPackage, affectedVersion, entity.name, detectedAtWHERE severity = 'CRITICAL'AND state = 'OPEN'AND detectedAt > ago(24 hours)ORDER BY detectedAt DESC早急な対応が必要な脆弱性
複数のリスク要因を組み合わせる:
FROM VulnerabilitySELECT cveId, entity.name, affectedPackage, cvssScore, epssPercentileWHERE ( (severity = 'CRITICAL' AND epssPercentile > 85) OR (activeRansomware = true) OR (epssPercentile > 95))AND state = 'OPEN'FACET cveId, entity.nameSINCE 7 days ago露出と修復の追跡
脆弱性露出時間の平均
平均修復時間 (MTTR) を計算します。
FROM VulnerabilitySELECT average((resolvedAt - detectedAt) / 86400) as 'Avg Days to Resolve'WHERE state = 'CLOSED'FACET severitySINCE 90 days ago最も長く放置されている脆弱性
長期間にわたって未解決となっている脆弱性を見つけます。
FROM VulnerabilitySELECT cveId, entity.name, affectedPackage, detectedAt, (max(timestamp) - detectedAt) / 86400 as 'Days Open'WHERE state = 'OPEN'FACET cveId, entity.nameORDER BY 'Days Open' DESCLIMIT 20SINCE 90 days ago修復速度
脆弱性をどれだけ早く解決しているかを追跡します。
FROM NrAiIncidentTimelineSELECT count(*) as 'Vulnerabilities Resolved'WHERE event = 'STATUS_CHANGED'AND newState = 'CLOSED'FACET weekOf(timestamp)SINCE 90 days agoTIMESERIES 1 week年齢区分別の脆弱性
脆弱性を、公開されてからどのくらいの期間が経過したかによってグループ化します。
FROM VulnerabilitySELECT count(*) as 'Count'WHERE state = 'OPEN'FACET cases( WHERE (now() - detectedAt) / 86400 <= 7 as '0-7 days', WHERE (now() - detectedAt) / 86400 <= 30 as '8-30 days', WHERE (now() - detectedAt) / 86400 <= 90 as '31-90 days', WHERE (now() - detectedAt) / 86400 > 90 as '> 90 days')SINCE 180 days agoパッケージとライブラリの分析
最も脆弱なライブラリ
最も多くの脆弱性をもたらすライブラリを特定します。
FROM VulnerabilitySELECT count(*) as 'Vulnerability Count'WHERE state = 'OPEN'FACET affectedPackageORDER BY count(*) DESCLIMIT 10SINCE 30 days agoアップグレードが必要なライブラリ
利用可能な修正を含むパッケージを検索します。
FROM VulnerabilitySELECT affectedPackage, affectedVersion, fixedVersion, count(*) as 'Vulnerable Entities'WHERE state = 'OPEN'AND fixedVersion IS NOT NULLFACET affectedPackage, affectedVersion, fixedVersionORDER BY count(*) DESCLIMIT 20SINCE 7 days agoソース別の脆弱性検出
どの統合に脆弱性があるかを理解します。
FROM VulnerabilitySELECT count(*) as 'Detections'FACET sourceSINCE 30 days agoJava依存関係分析
Java 固有の脆弱性に焦点を当てる:
FROM VulnerabilitySELECT count(*) as 'Vulnerabilities'WHERE affectedPackage LIKE '%.jar'OR affectedPackage LIKE '%maven%'FACET affectedPackage, severitySINCE 30 days agoエンティティ固有のクエリ
アプリケーションの脆弱性の概要
特定のアプリケーションの脆弱性の数を取得します。
FROM VulnerabilitySELECT count(*) as 'Total', filter(count(*), WHERE severity = 'CRITICAL') as 'Critical', filter(count(*), WHERE severity = 'HIGH') as 'High', filter(count(*), WHERE severity = 'MEDIUM') as 'Medium', filter(count(*), WHERE severity = 'LOW') as 'Low'WHERE entity.name = 'YOUR_APP_NAME'AND state = 'OPEN'SINCE 1 day agoホストの脆弱性の内訳
インフラストラクチャ ホストの脆弱性を分析します。
FROM VulnerabilitySELECT count(*) as 'Vulnerabilities'WHERE entityType = 'HOST'AND state = 'OPEN'FACET entity.name, severityLIMIT 50SINCE 7 days ago最近スキャンされていないエンティティ
脆弱性データを報告していない可能性のあるエンティティを特定します。
FROM VulnerabilitySELECT entity.name, max(timestamp) as 'Last Scan'FACET entity.nameHAVING max(timestamp) < ago(7 days)SINCE 30 days agoステータスとワークフローの追跡
検討が必要な脆弱性を無視
レビュー日が近づいている無視された脆弱性を見つけます。
FROM NrAiIncidentTimelineSELECT incidentId, entity.name, reason, timestamp as 'Ignored At'WHERE event = 'STATUS_CHANGED'AND newState = 'IGNORED'AND timestamp < ago(60 days)FACET incidentId, entity.nameSINCE 90 days agoステータス変更監査証跡
ステータスの変更を行っているユーザーを追跡します。
FROM NrAiIncidentTimelineSELECT timestamp, entity.name, previousState, newState, changedBy, reasonWHERE event = 'STATUS_CHANGED'ORDER BY timestamp DESCLIMIT 100SINCE 30 days ago誤認率
無視されている脆弱性と影響を受けている脆弱性の数を計算します。
FROM NrAiIncidentTimelineSELECT filter(count(*), WHERE newState = 'IGNORED') as 'Ignored', filter(count(*), WHERE newState = 'AFFECTED') as 'Affected', percentage(filter(count(*), WHERE newState = 'IGNORED'), count(*)) as 'Ignore Rate %'WHERE event = 'STATUS_CHANGED'SINCE 90 days agoコンプライアンスと報告
30日以上経過した脆弱性(SLA追跡)
修復SLAを超える脆弱性を監視:
FROM VulnerabilitySELECT count(*) as 'Overdue Vulnerabilities', entity.name, severityWHERE state = 'OPEN'AND detectedAt < ago(30 days)FACET entity.name, severitySINCE 180 days agoクリティカル脆弱性の応答時間
重大な脆弱性がどれだけ迅速に解決されたかを追跡します。
FROM VulnerabilitySELECT percentile((resolvedAt - detectedAt) / 86400, 50, 75, 90, 95) as 'Days to Resolve'WHERE severity = 'CRITICAL'AND state = 'CLOSED'SINCE 90 days ago月刊脆弱性メトリクス
月次レポートを生成します:
FROM VulnerabilitySELECT count(*) as 'Total Detected', uniqueCount(entity.guid) as 'Affected Entities', filter(count(*), WHERE severity IN ('CRITICAL', 'HIGH')) as 'High Risk'FACET monthOf(detectedAt)SINCE 180 days agoTIMESERIES 1 month高度な分析
脆弱性爆発半径
多くのエンティティに影響を与える脆弱性を特定します。
FROM VulnerabilitySELECT cveId, count(entity.guid) as 'Affected Entities', max(cvssScore) as 'CVSS'WHERE state = 'OPEN'FACET cveIdHAVING count(entity.guid) > 5ORDER BY count(entity.guid) DESCLIMIT 20SINCE 30 days agoセキュリティ衛生スコア
カスタム セキュリティ スコアを計算します。
FROM VulnerabilitySELECT 100 - ( filter(count(*), WHERE severity = 'CRITICAL') * 10 + filter(count(*), WHERE severity = 'HIGH') * 5 + filter(count(*), WHERE severity = 'MEDIUM') * 2 + filter(count(*), WHERE severity = 'LOW') * 0.5) as 'Security Score'WHERE state = 'OPEN'FACET entity.nameSINCE 1 day ago脆弱性の種類別の傾向
アプリケーションとインフラストラクチャの脆弱性を比較します。
FROM VulnerabilitySELECT count(*) as 'Vulnerabilities'WHERE state = 'OPEN'FACET entityTypeTIMESERIES AUTOSINCE 30 days agoこれらのクエリを使用する
クエリビルダーで
- one.newrelic.com > All capabilities> Query your dataにアクセスしてください
- このページからクエリをコピーして貼り付けます
- Run [実行]をクリックして結果を確認します
- 必要に応じて時間範囲とフィルターを調整します
カスタムダッシュボード
- 新しいダッシュボードを作成するか、既存のダッシュボードを編集します
- ウィジェットを追加し、Query builder [クエリビルダー]を選択します
- クエリを貼り付けて視覚化を構成する
- ウィジェットをダッシュボードに保存する
アラートで
- Alerts > Create a conditionに進みます
- 条件タイプとしてNRQL query [NRQLを]選択します
- カウントまたは閾値を返す都度を使用します
- 一括閾値と通知チャネルを設定する
アラートの詳細については、 「脆弱性アラートの設定」を参照してください。
クエリをカスタマイズするためのヒント
プレースホルダーを置き換える
'YOUR_APP_NAME'- 実際のアプリケーション名に置き換えます'YOUR_ENTITY_GUID'- エンティティのGUIDに置き換えます- 時間範囲(例:
SINCE 30 days ago) - ニーズに合わせて調整します
他のデータと組み合わせる
APMまたはインフラストラクチャ メトリクスを使用して脆弱性データを結合します。
FROM Vulnerability, TransactionSELECT count(Vulnerability.cveId), average(Transaction.duration)WHERE Vulnerability.entity.guid = Transaction.appIdAND Vulnerability.state = 'OPEN'FACET Vulnerability.entity.nameSINCE 1 day ago結果をエクスポート
すべてのクエリ結果は次のようになります。
- CSVとしてダウンロード
- ダッシュボードに追加
- API経由でエクスポート
- チームと共有