ログデータをリアルタイムでクエリおよび分析することは、ネットワークアクティビティを把握し、トラフィックの異常を特定するのに役立ちます。この機能は、セキュリティ監視を強化し、インシデント対応を向上させます。このトピックでは、ログ分析のためのクエリステートメントと分析ステートメントの使用方法、および結果の表示方法と見方について説明します。
ステートメントの構文
クエリステートメントと分析ステートメント
ログ分析のステートメントは、クエリステートメントと分析ステートメントで構成され、縦棒 (|) で区切られています。
query statement | analytic statementクエリステートメントは、Simple Log Service の構文を使用して、指定された条件を満たすログを検索します。クエリステートメントは独立して使用できます。クエリステートメントには、キーワード、数値、値の範囲、スペース、またはアスタリスク (*) を含めることができます。スペースまたはアスタリスク (*) は、フィルター条件が適用されないことを示します。
インデックスの設定方法によって、クエリは全文検索とフィールド検索に分類されます。詳細については、「クエリ構文と機能」をご参照ください。
分析ステートメントは、クエリ結果または完全なデータセットから統計を計算して生成します。クエリステートメントと共に使用する必要があります。分析ステートメントが空の場合、クエリ結果のみが返され、分析は実行されません。分析ステートメントの構文と機能の詳細については、「クエリと分析の概要」をご参照ください。
一般的なクエリステートメント
このセクションでは、Cloud Firewall ログの一般的なクエリ構文と例を示します。
トラフィック量のクエリ
インターネットから内部アセット
1.2.*.*へのネットワークアクセスレコードをクエリし、インバウンドの総トラフィック量と総パケット数を計算します。log_type:internet_log and direction:"in" and dst_ip:1.2.*.* | select sum(in_packet_bytes) as flow, sum(in_packet_count) as packetNAT ファイアウォールのトラフィックをクエリし、結果を送信元 IP、宛先 IP、宛先ポートでグループ化し、インバウンドとアウトバウンドの合計トラフィック量で上位 10 のアセットを分析します。
log_type:nat_firewall_log | select src_ip, dst_ip, dst_port, sum(in_packet_bytes) as in_bytes, sum(out_packet_bytes) as out_bytes, sum(total_packet_bytes) as total_bytes group by src_ip, dst_ip, dst_port order by total_bytes desc limit 10
アクセス制御
アクセス制御ポリシーに一致する、インターネットから内部アセットへのアクセスのトラフィックログをクエリします。
log_type:internet_log and direction:"in" and not acl_rule_id:00000000-0000-0000-0000-000000000000not acl_rule_id:00000000-0000-0000-0000-000000000000という条件は、アクセス制御ポリシーに一致したログをフィルタリングします。acl_rule_idがすべてゼロの場合は、ポリシーに一致しなかったことを示します。アクセス制御ポリシーによってブロックされた、内部アセットからインターネットへのアウトバウンドアクセスのトラフィックログをクエリし、上位 10 の宛先 IP アドレスと宛先ポートの分布を分析します。
log_type:internet_log and direction:out and not acl_rule_id:00000000-0000-0000-0000-000000000000 and rule_result:drop | select dst_ip, dst_port, count(*) as cnt group by dst_ip, dst_port order by cnt desc limit 10宛先ポートが 443、パケット数が 3 より大きい (完全な TCP 3 ウェイハンドシェイクを示す)、かつドメイン名が特定されていない、内部アセットからインターネットへのアウトバウンドアクセスのトラフィックログをクエリします。結果を宛先 IP アドレスセグメントとアプリケーションでグループ化し、上位 10 の送信元 IP、宛先 IP、およびアプリケーションを分析します。
log_type:internet_log and direction:out and dst_port:443 and total_packet_count>3 and domain:""| select array_agg(distinct src_ip) as srcip, array_agg(distinct dst_ip) as dstip, slice(split(dst_ip,'.' ,4),1,3) as dstip_c, app_name, COUNT(1) as cnt GROUP by dstip_c,app_name order by cnt desc limit 10
攻撃防御
攻撃防御ポリシーに一致する、インターネットから内部アセットへのアクセスのトラフィックログをクエリします。
log_type:internet_log and direction:"in" and not ips_rule_id:00000000-0000-0000-0000-000000000000not ips_rule_id:00000000-0000-0000-0000-000000000000という条件は、攻撃防御ポリシーに一致したログをフィルタリングします。ips_rule_idがすべてゼロの場合は、ポリシーに一致しなかったことを示します。攻撃防御ポリシーに一致する、内部アセットからインターネットへのアウトバウンドアクセスのトラフィックログをクエリし、IP アドレス、ポート、アプリケーション、ドメイン、IPS ポリシーの結果などの情報を表示します。
log_type:internet_log and direction:out and not ips_rule_id:00000000-0000-0000-0000-000000000000 | select src_ip, dst_ip, dst_port,app_name, domain,ips_rule_id, ips_rule_name, rule_result
手順
Cloud Firewall コンソール にログインします。
ナビゲーションペインで、 を選択し、ログクエリ タブをクリックします。
(オプション) デフォルトでは、ログクエリ ページを開くと、システムは自動的にクエリを実行して結果を表示します。ページの右上隅にある
アイコンをクリックします。クエリ タブで、この機能を無効にするか、クエリ時間を設定します。検索ボックスに、クエリステートメントと分析ステートメントを入力します。
クエリステートメントは、ログデータの表示、検索、フィルタリングに使用します。クエリステートメントに時間範囲、リクエストタイプ、キーワードなどの特定の条件を指定して、目的のデータをフィルタリングできます。クエリステートメントは単独で使用できます。構文の詳細については、「クエリ構文と機能」をご参照ください。
分析ステートメントは、フィルタリング、変換、統計分析、集計など、ログデータに対する操作を実行するために使用します。たとえば、一定期間のデータの平均値を計算したり、前年比および前月比の結果を取得したりできます。分析ステートメントは、
query statement | analytic statementの形式でクエリステートメントと一緒に使用する必要があります。構文の詳細については、「集計関数」をご参照ください。
次の 3 つの方法のいずれかで、ログの クエリ/分析の時間範囲を設定します。分析ステートメントで時間範囲が設定されている場合、クエリと分析の結果にはその時間範囲が適用されます。
説明デフォルトでは、クエリ結果は最大 100 行まで返されます。より多くのデータを返す場合は、LIMIT 句を使用してください。詳細については、「LIMIT 句」をご参照ください。
ページ上部の時間範囲選択ツールで、[15 分] などの時間範囲を選択します。

[分析文] 内で、
__time__フィールドを使用して時間範囲を指定します。例:* | SELECT * FROM log WHERE __time__ > 1731297600 AND __time__ < 1731310038[分析文] 内で時間を指定する際は、from_unixtime 関数 または to_unixtime 関数 を使用して時間形式を変換します。例:
* | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1731297600) AND from_unixtime(__time__) < now()* | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2024-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())
[Query/Analysis] をクリックして、クエリと分析の結果を表示します。詳細については、「クエリと分析の結果の表示」をご参照ください。
クエリと分析の結果の表示
ヒストグラムと生ログのモジュールに、クエリと分析の結果が表示されます。
分析ステートメントで limit パラメーターを設定しない場合、デフォルトで 100 エントリが返されます。より多くのエントリを返すには、手動で limit パラメーターを設定してください。
このセクションでは、ヒストグラムと生ログに表示されるデータについて説明します。その他の機能については、「ログのクエリと分析のクイックスタート」をご参照ください。
ヒストグラム
ヒストグラムには、クエリされたログの時間分布が表示されます。

緑色のデータブロックにポインターを合わせると、その時間範囲とログのヒット数が表示されます。
緑色のデータブロックをダブルクリックすると、より細かい時間粒度でログの分布を表示できます。指定した時間範囲のクエリ結果もRawデータ タブに表示されます。
生ログ
[Raw Logs] タブには、ログのクエリと分析の結果が表示されます。
番号 | 説明 |
① | ログの表示形式、ソート順、その他の設定を変更します。 |
② |
|
③ |
|
④ | ログの表示フィールド、インデックス付きフィールド、およびシステムフィールドを表示します。
|
⑤ |
|
⑥ | ログの詳細を表示します。ログフィールドの詳細な説明については、「ログフィールド」をご参照ください。
|