第1章 New Relic における監査の二大要素
1.1 監査の目的とコンプライアンス
現代のデジタル環境において、組織が使用する SaaS プラットフォームの設定変更やデータアクセスを追跡することは、セキュリティとコンプライアンスの観点から不可欠です。New Relic は、オブザーバビリティを実現するための中心的なプラットフォームであり、その設定変更や格納されているデータへのアクセスは、組織の運用と機密情報保護に直結します。本ブログでは、監査ニーズに応えるための主要なアクティビティを記録する NrAuditEvent/NrdbQuery という2つのイベントタイプについて解説します。1.2 監査データタイプの紹介
New Relic Database (NRDB) には、APM やインフラストラクチャのメトリクス、ログといった通常のオブザーバビリティデータとは別に、アカウントレベルのアクションを記録するための専用のイベントタイプが存在します。NrAuditEvent:アカウント設定・変更の監査ログ
NrAuditEvent は、New Relic アカウント自体や、そのアカウント内の設定、リソースに対して行われた変更を記録します。監査対象: ユーザの追加・削除、ユーザ権限変更、ログイン・ログアウト、Synthetic モニタの更新、API キーの管理など
用途: アカウントのセキュリティ体制、運用設定の変更履歴を追跡し、「誰が、いつ、何を、どう変えたか」を把握するために使用されます。
NrdbQuery:データ参照(クエリ実行)の監査ログ
NrdbQuery は、NRDB に対して NRQL (New Relic Query Language) が実行された事実を記録するイベントタイプです。監査対象: ユーザがダッシュボード、クエリビルダー、または API 経由で実行した全ての NRQL クエリ
用途: 「誰が、いつ、どんなデータ」にアクセスしようとしたか(またはアクセスしたか)を追跡するために使用されます。NrdbQuery は、特に機密性の高いデータが NRDB に格納されている場合のデータ漏洩リスク管理に非常に重要です。
次の章からは、これらの二つのイベントタイプを NRQL でどのように活用し、具体的な監査を実現していくかを詳しく解説します。
第2章 アカウントに関する重要なイベントの追跡: NrAuditEvent の活用
NrAuditEvent は、New Relic アカウント設定に関して、「誰が、いつ、何を」変更したかを把握するためのイベントタイプです。このイベントタイプを使いこなすことで、セキュリティインシデントの予防や迅速な原因特定が可能になります。2.1 NrAuditEvent の基本構造
NrAuditEvent は、アカウント内で発生したさまざまなアクションの詳細を記録するイベントであり、例として次のような属性を持ちます。| 属性名 | 説明 | 監査における役割 |
| timestamp | アクションが発生した日時 | いつ発生したか |
| actionIdentifier | 実行されたアクションのタイプ(例: user.login, alert_policy.create) | どのような種類のアクションか |
| actorEmail | アクションを実行したユーザのメールアドレス | 誰が実行したか |
| actorId | アクションを実行したユーザの ID | 誰が実行したか |
| targetType | アクションの対象となったオブジェクトのタイプ(例: user, dashboard, synthetics_monitor) | 何に対して実行されたか |
| description | アクションの詳細な説明 | アクションの具体的な内容 |
New Relic data dictionary
以下では、NrAuditEvent の NRQL クエリの例を紹介します。
2.2 NRQL クエリ例
API キーやランセンスキーの作成/削除
SELECT actionIdentifier, actorEmail, targetType, description FROM NrAuditEvent WHERE actionIdentifier LIKE 'api_key_service%' SINCE 1 month agoロール権限の変更やグループの更新
SELECT actionIdentifier, actorEmail, targetType, description FROM NrAuditEvent WHERE actionIdentifier IN ('role.update', 'group.update') SINCE 1 month agoユーザログイン/ログアウト履歴
ユーザログイン/ログアウト状況の監視については、以下の公式 Qiita 記事に詳細に記載されています。New Relicの活用状況は気になりませんか?ログイン・ログアウトが照会可能になりました!
その他のクエリ例
以下の公式ドキュメント中「クエリの例」の項目には、NrAuditEvent に関する様々なクエリの例が記載されていますので、ぜひご参照ください。NrAuditEvent: アカウント監査ログのクエリ
第3章 データ参照の監査: NrdbQuery の詳細分析
NrdbQuery は、New Relic UI、API、またはその他のサービスを通じて NRQL クエリが実行されるたびに生成されます。主要な属性は以下の通りです。| 属性名 | 説明 | 監査における役割 |
| timestamp | アクションが発生した日時 | いつ発生したか |
| query | 実行されたクエリ文字列全体 | どのデータにどのようにアクセスしたか |
| user | クエリを実行したユーザ | 誰が実行したか |
| productComponent | クエリを実行した New Relic 内の製品コンポーネント | どの機能を利用する際に実行されたか |
| durationMs | クエリの実行にかかった時間(ミリ秒) | クエリの実行にかかった時間(パフォーマンス) |
| status | クエリの実行状況(successful, error, timeout など) | クエリが成功したかどうか |
3.2 NRQL クエリ例
クエリ失敗の傾向分析
ユーザが何らかの理由で NRQL によりデータを取得できなかった場合、その失敗の傾向を分析できます。
SELECT count(*) FROM NrdbQuery WHERE status != 'successful' SINCE 1 week ago TIMESERIES FACET status
非効率なクエリの特定
実行時間が長いクエリを特定し、NRDB の利用効率を改善するために活用できます。以下のクエリ例では、10 秒以上の実行時間(durationMs 属性)の NRQL クエリを検索し、上位 10 クエリを実行時間で降順にソートします。
SELECT user, query, durationMs FROM NrdbQuery WHERE status = 'successful' AND durationMs >= 10000 SINCE 1 week ago LIMIT 10 ORDER BY durationMs DESC 機密データアクセス監査の実現 - カスタムイベント
機密性の高いカスタムイベント(以下の例では PaymentTransaction )へのクエリを監視します。
SELECT user, query FROM NrdbQuery WHERE query LIKE '%PaymentTransaction%' SINCE 1 week ago機密データアクセス監査の実現 - ログエクスポート
NrdbQuery に保存されたログ(Log イベントタイプのデータ)を UI 経由でエクスポートしたユーザとクエリを特定します。
SELECT user, query FROM NrdbQuery WHERE query.eventType = 'Log' AND productComponent = 'Export logs' SINCE 1 week ago
第4章 監査データの活用
NrAuditEvent(アカウント変更)と NrdbQuery(データ参照)の二つのイベントタイプを個別に分析するだけでなく、これらを統合的に監視することで、より強固な監査体制を確立できます。4.1 ダッシュボードウィジェットの例
New Relic のダッシュボードを利用することで、目的に応じたデータを一つのダッシュボードに集約し、効果的に視覚情報を用いて傾向を把握することができます。一つのダッシュボードに「変更アクティビティ」と「データ参照アクティビティ」の両方を集約することで、セキュリティと運用の両側面を一度に俯瞰できます。NrAuditEvent および NrdbQuery を用いたダッシュボードウィジェットを以下に例示します。
- 過去24時間におけるユーザ毎のログイン/ログアウト回数 (NrAuditEvent)
- アクションタイプ(actionIdentifier)別変更総数の時系列プロット (NrAuditEvent)
- データアクセス数(クエリ実行数)のサマリ (NrdbQuery)
- クエリ失敗回数のサマリ (NrdbQuery)
4.2 アラートの例
監査ログの本領は、異常が発生した際に即座に通知を受け取ることです。New Relic Alerts を利用して、NrAuditEvent や NrdbQuery を基にしたアラート条件を設定します。NrAuditEvent に基づくアラート例
ある New Relic アカウントには機密情報が含まれており、社外ユーザをアカウントに招待することが禁止されている場合があります。予期しないユーザが誤って追加されたことは、以下のような NRQL クエリを設定したアラート条件により検知可能です。
FROM NrAuditEvent SELECT filter(count(*), WHERE actionIdentifier = 'user.create' AND description NOT LIKE 'User %@example.com was created%') 上記のようなアラート条件を作成することにより、想定されたドメイン(example.com)以外のドメインの E メールアドレスへの招待を検知することが可能です。description 属性の内容は、2025 年 12 月時点での内容である点にご留意ください。
NrdbQuery に基づくアラート例
セキュリティポリシー上、「通常のログ閲覧は許可されるものの、UI 上でのログエクスポート処理による大量のログデータのダウンロードは許可しない」というポリシーが規定されていたとします。2025 年 12 月現在の New Relic の権限設定では、上記のような個別の機能毎の細かな権限設定に対応していません。権限設定での制御ができない場合、次善のアプローチとして、想定されないアクティビティを検知することが有効です。例えば、以下のような NRQL クエリをアラート条件に設定することにより、想定されない製品コンポーネントを経由したアクティビティを検知することが可能です。FROM NrdbQuery SELECT filter(count(*), WHERE query.eventType = 'Log' AND productComponent = 'Export logs')
まとめ:監査の効率化とセキュリティ向上へ
本ブログでは、New Relic の監査を支える二つのイベントタイプ、NrAuditEvent と NrdbQuery の活用法を解説しました。| イベントタイプ | 監査対象 | 主要な役割 |
| NrAuditEvent | New Relic 環境の 「変更」 | アカウントのセキュリティと運用設定の追跡 |
| NrdbQuery | NRDB データへの 「参照」 | 機密データへのアクセス監視と NRQL パフォーマンス分析 |
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。