F5 Distributed Cloud Services のログを収集する

パーサーのバージョン: 6.0

以下でサポートされています。

このドキュメントでは、Google Cloud Storage V2 を使用して F5 Distributed Cloud Services ログを Google Security Operations に取り込む方法について説明します。

F5 Distributed Cloud Services は、マルチクラウドとエッジ ロケーション全体に分散クラウド インフラストラクチャ、アプリケーション配信、API セキュリティ、ウェブ アプリケーション ファイアウォール機能を提供する SaaS ベースのセキュリティ、ネットワーキング、アプリケーション管理プラットフォームです。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • Cloud Storage API が有効になっている Google Cloud プロジェクト
  • GCS バケットを作成および管理する権限
  • GCS バケットの IAM ポリシーを管理する権限
  • F5 Distributed Cloud コンソールへの特権アクセス
  • F5 Distributed Cloud でグローバル ログ レシーバー オブジェクトを作成する権限

Google Cloud Storage バケットを作成する

  1. Google Cloud コンソールに移動します。
  2. プロジェクトを選択するか、新しいプロジェクトを作成します。
  3. ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
  4. [バケットを作成] をクリックします。
  5. 次の構成情報を提供してください。

    設定
    バケットに名前を付ける グローバルに一意の名前(f5-dcs-logs など)を入力します。
    ロケーション タイプ ニーズに応じて選択します(リージョン、デュアルリージョン、マルチリージョン)。
    ロケーション 場所を選択します(例: us-central1)。
    ストレージ クラス Standard(頻繁にアクセスされるログにおすすめ)
    アクセス制御 均一(推奨)
    保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする
  6. [作成] をクリックします。

GCS にエクスポートするように F5 Distributed Cloud を構成する

ファイアウォールの許可リストに GCS バケットを追加する

  1. F5 Distributed Cloud Global Log Receiver では、次の IP アドレス範囲をファイアウォールの許可リストに追加する必要があります。

    • 193.16.236.64/29
    • 185.160.8.152/29
  2. GCS バケットで VPC Service Controls またはファイアウォール ルールを使用している場合は、これらの IP 範囲を許可リストに追加します。

F5 Distributed Cloud 用の Google Cloud サービス アカウントを作成する

  1. Google Cloud コンソールで、[IAM と管理 > サービス アカウント] に移動します。
  2. [サービス アカウントを作成] をクリックします。
  3. 次の構成情報を提供してください。

    • サービス アカウント名: f5-dcs-log-writer(またはわかりやすい名前)を入力します。
    • サービス アカウントの説明: Service account for F5 Distributed Cloud to write logs to GCS と入力します。
  4. [作成して続行] をクリックします。

  5. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、次の操作を行います。

    1. [ロールを選択] をクリックします。
    2. [ストレージ オブジェクト管理者] を検索して選択します。
  6. [続行] をクリックします。

  7. [完了] をクリックします。

サービス アカウント キーを作成する

  1. [サービス アカウント] リストで、作成したサービス アカウント(例: f5-dcs-log-writer)をクリックします。
  2. [キー] タブに移動します。
  3. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  4. キーのタイプとして [JSON] を選択します。
  5. [作成] をクリックします。
  6. JSON キーファイルがパソコンにダウンロードされます。
  7. このファイルは安全な場所に保存してください。これは次のステップで必要になります。

GCS バケットに対する IAM 権限を付与する

  1. [Cloud Storage] > [バケット] に移動します。
  2. バケット名(例: f5-dcs-logs)をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成の詳細を指定します。
    • プリンシパルを追加: サービス アカウントのメールアドレス(例: f5-dcs-log-writer@PROJECT_ID.iam.gserviceaccount.com)を入力します。
    • ロールを割り当てる: [ストレージ オブジェクト管理者] を選択します。
  6. [保存] をクリックします。

F5 Distributed Cloud コンソールで Google Cloud 認証情報を作成する

  1. https://<tenant>.console.ves.volterra.ioF5 Distributed Cloud コンソールにログインします。
  2. ホームページから Multi-Cloud Network Connect サービスを選択します。
  3. [Manage] > [Site Management] > [Cloud Credentials] に移動します。
  4. [Add Cloud Credentials] をクリックします。
  5. [メタデータ] セクションで、次の操作を行います。
    • 名前: わかりやすい名前を入力します(例: gcp-chronicle-logs)。
    • 説明(省略可): Cloud Storage credentials for Google SecOps log export と入力します。
  6. [Cloud Credentials Type] セクションで、[GCP Credentials] を選択します。
  7. [GCP 認証情報] フィールドで [構成] をクリックします。
  8. [認証情報のタイプ] プルダウンで、[サービス アカウント認証情報ファイル] を選択します。
  9. [ファイルをアップロード] をクリックし、前の手順でダウンロードした JSON キーファイルを選択します。
  10. [適用] をクリックします。
  11. [保存して終了] をクリックします。

グローバル ログ レシーバーを作成する

  1. F5 Distributed Cloud Console で、[Multi-Cloud Network Connect] サービスに移動します。
  2. [Manage> Log Management> Global Log Receiver] に移動します。
  3. [グローバル ログ レシーバを追加] をクリックします。
  4. [メタデータ] セクションで、次の操作を行います。

    • 名前: わかりやすい名前を入力します(例: chronicle-gcs-receiver)。
    • 説明(省略可): Global log receiver for Google SecOps SIEM と入力します。
  5. [ログの種類] プルダウンで、エクスポートするログの種類を選択します。

    • リクエストログ: ユーザー、パス、メソッド、レスポンス コードを含む HTTP リクエスト/レスポンス ログ
    • セキュリティ イベント: WAF イベント、DDoS、API 保護、Bot Defense イベント
    • 監査ログ: 公開 API を介した構成の変更
    • DNS リクエストログ: DNS クエリログ
  6. [ログ メッセージの選択] プルダウンで、次のいずれかを選択します。

    • 現在の Namespace からログを選択: 現在の Namespace からのみログを送信します。
    • すべての Namespace からログを選択する: すべての Namespace からログを送信します(包括的な可視性を確保するためにおすすめします)。
    • 特定の名前空間のログを選択する: 指定された名前空間からログを送信します([項目を追加] をクリックして名前空間名を追加します)。
  7. [Receiver Configuration] プルダウンで、[GCP Bucket Receiver] を選択します。

  8. [GCP Bucket Name] フィールドに、GCS バケットの名前(f5-dcs-logs など)を入力します。

  9. [GCP Cloud Credentials] プルダウンで、以前に作成したクラウド認証情報(gcp-chronicle-logs など)を選択します。

  10. 省略可: [Show Advanced Fields] を開いて、バッチ オプションを構成します。

    • バッチ タイムアウト オプション: [タイムアウト(秒)] を選択して値を入力します(デフォルト: 300 秒)。
    • Batch Max Events: [Max Events] を選択し、32 ~ 2,000 の値を入力します(上限なしにする場合は未設定のままにします)。
    • バッチ バイト数: [最大バイト数] を選択し、4,096 ~ 1,048,576 の値を入力します(デフォルト: 10485760 バイト / 10 MB)。
  11. [保存して終了] をクリックします。

接続をテストする

  1. [グローバル ログ レシーバ] リストで、作成したレシーバ(chronicle-gcs-receiver など)を見つけます。
  2. [アクション] 列にある 3 つのドット [...] をクリックします。
  3. [接続をテスト] を選択します。
  4. テストが完了するまで待ちます。
  5. 接続が成功したことを示すメッセージが表示されます。

GCS バケットのログを確認する

  1. GCP コンソールで、[Cloud Storage] > [バケット] に移動します。
  2. バケット名(例: f5-dcs-logs)をクリックします。
  3. ログファイルがバケットに作成されていることを確認します。
  4. F5 Distributed Cloud は、次のフォルダ構造でログを整理します。

    YYYY/MM/DD/HH/
    
    • フォルダは毎日(YYYY/MM/DD)作成されます。
    • 各日のフォルダ内に、各時間(HH)のサブフォルダが作成されます。
    • 5 分ごとに、新しい圧縮 gzip ファイルが時間単位のサブフォルダに書き込まれます。
    • ファイルは NDJSON 形式(改行区切り JSON)です。
  5. gzip ファイルをクリックしてダウンロードし、ログ形式を確認します。

Google SecOps サービス アカウントを取得する

Google SecOps は、一意のサービス アカウントを使用して GCS バケットからデータを読み取ります。このサービス アカウントにバケットへのアクセス権を付与する必要があります。

サービス アカウントのメールアドレスを取得する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: F5 DCS Logs)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [Log type] として [F5 Distributed Cloud Services] を選択します。
  7. [サービス アカウントを取得する] をクリックします。一意のサービス アカウントのメールアドレスが表示されます(例:)。

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. このメールアドレスをコピーして、次のステップで使用します。

  9. [次へ] をクリックします。

  10. 次の入力パラメータの値を指定します。

    • ストレージ バケットの URL: GCS バケットの URI を入力します。

      gs://f5-dcs-logs/
      

      f5-dcs-logs は、実際の GCS バケット名に置き換えます。

    • Source deletion option: 必要に応じて削除オプションを選択します。

      • なし: 転送後にファイルを削除しません(テストにおすすめ)。
      • 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
      • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。

    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます(デフォルトは 180 日)。

    • アセットの名前空間: アセットの名前空間

    • Ingestion labels: このフィードのイベントに適用されるラベル

  11. [次へ] をクリックします。

  12. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

Google SecOps サービス アカウントに IAM 権限を付与する

Google SecOps サービス アカウントには、GCS バケットに対する Storage オブジェクト閲覧者のロールが必要です。

  1. [Cloud Storage] > [バケット] に移動します。
  2. バケット名(例: f5-dcs-logs)をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成情報を提供してください。

    • プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
    • ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
  6. [保存] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
_id metadata.product_log_id 値を直接コピー
src principal.namespace 値を直接コピー
kubernetes_labels_app target.resource.attribute.labels app_label(kubernetes_labels_app から派生)から統合
kubernetes_host target.hostname 値を直接コピー
kubernetes_container_name target.resource.product_object_id 値を直接コピー
bot_info.classification security_result.detection_fields bot_info_classification_label(bot_info.classification から派生)から統合
bot_info.name security_result.detection_fields bot_info_name_label(bot_info.name から派生)から統合
bot_info.type security_result.detection_fields bot_info_type_label(bot_info.type から派生)から統合されました
timestamp @timestamp RFC 3339、UNIX、ISO8601 の日付フィルタを使用して解析
visitor_id security_result.detection_fields visitor_id_label(visitor_id から派生)から統合
タグ security_result.detection_fields tag_label から統合(タグから派生)
アクション security_result.action 一致が許可の場合は ALLOW、一致が拒否の場合は BLOCK に設定します
重要度 security_result.severity エラー / 警告の場合は HIGH、重大な場合は CRITICAL、通知の場合は MEDIUM、情報の場合は LOW に設定します。
重要度 security_result.severity_details 値を直接コピー
api_endpoint target.labels api_endpoint_label(api_endpoint から派生)から統合
app_firewall_name principal.process.command_line 値を直接コピー
app_type security_result.detection_fields about_app_type(app_type から派生)から統合
as_org security_result.detection_fields about_as_org から統合(as_org から派生)
asn security_result.detection_fields about_asn から統合(asn から派生)
kubernetes.pod_id security_result.detection_fields about_pod_id(kubernetes.pod_id から派生)から統合
kubernetes.pod_name security_result.detection_fields about_pod_name(kubernetes.pod_name から派生)から統合
latitude principal.location.region_latitude 浮動小数点数に変換済み
longitude principal.location.region_longitude 浮動小数点数に変換済み
req_params additional.fields about_req_params(req_params から派生)から統合
as_number additional.fields about_as_number から統合(as_number から文字列に変換)
x_forwarded_for intermediary.ip 有効な IP の場合は統合
x_forwarded_for security_result.about.resource.attribute.labels IP でない場合は x_forwarded_for_label から統合
policy_hit.malicious_user_mitigate_action security_result.detection_fields malicious_user_label(policy_hit.malicious_user_mitigate_action から派生)から統合
policy_hit.policy security_result.about.resource.attribute.labels policy_label から統合(policy_hit.policy から派生)
policy_hit.policy_namespace additional.fields policy_namespace_label から統合(policy_hit.policy_namespace から派生)
policy_hit.policy_rule security_result.rule_name 値を直接コピー
policy_hit.policy_rule_description security_result.description 値を直接コピー
policy_hit.policy_set target.resource.name 値を直接コピー
policy_hit.result additional.fields result_label から統合(policy_hit.result から派生)
vhost_id security_result.detection_fields vhostlabel(vhost_id から派生)から統合
messageid security_result.detection_fields messageid_label から統合(messageid から派生)
sec_event_name security_result.detection_fields sec_event_name_label(sec_event_name から派生)から統合
sec_event_type security_result.detection_fields sec_event_type_label(sec_event_type から派生)から統合
vh_name security_result.detection_fields vhost_name_label(vh_name から派生)から統合
tls_fingerprint security_result.detection_fields tls_fingerprint_label から統合(tls_fingerprint から派生)
時間 additional.fields time_label(時間から派生)から統合
kubernetes.namespace_name additional.fields namespace_name_label(kubernetes.namespace_name から派生)から統合
src_instance additional.fields src_instance_label(src_instance から派生)から統合
violation_rating additional.fields violation_rating_label(violation_rating から派生)から統合
req_size additional.fields req_size_label から統合(req_size から文字列に変換)
rsp_code additional.fields rsp_code_label から統合(rsp_code から文字列に変換)
rsp_code_class additional.fields rsp_code_class_label からマージ(rsp_code_class から文字列に変換)
rsp_size additional.fields rsp_size_label から統合(rsp_size から文字列に変換)
original_path additional.fields original_path_label からマージ(original_path から派生)
req_path target.url 値を直接コピー
req_headers_size additional.fields req_headers_size_label(req_headers_size から派生)から統合
recommended_action additional.fields recommended_action_label(recommended_action から派生)から統合
enforcement_mode additional.fields enforcement_mode_label から統合(enforcement_mode から派生)
src_ip principal.ip、principal.asset.ip IPv4 正規表現に一致する場合に統合
ホスト principal.ip、principal.asset.ip IPv4 正規表現に一致する場合に統合
hostname principal.hostname、principal.asset.hostname 空でないか「-」でない場合、値が直接コピーされます
http_version network.application_protocol_version 値を直接コピー
http_version network.application_protocol HTTP が含まれている場合は HTTP に、HTTPS が含まれている場合は HTTPS に設定します。
network principal.nat_ip IPv4 正規表現に一致する場合に統合
dst_ip target.ip、target.asset.ip IPv4 正規表現に一致する場合に統合
dst_port target.port 整数に変換しました
src_port principal.port 整数に変換しました
src_site additional.fields src_site_field(src_site から派生)から統合
サイト additional.fields site_field(サイトから派生)から統合
cluster_name additional.fields cluster_name_field(cluster_name から派生)から統合されました
ドメイン principal.administrative_domain 値を直接コピー
method network.http.method 空でないか N/A でない場合、値が直接コピーされます
namespace target.namespace 値を直接コピー
city principal.location.city 値を直接コピー
ストリーム security_result.detection_fields stream_label からマージ(stream から派生)
region principal.location.country_or_region 値を直接コピー
ユーザー principal.user.userid user_id の grok パターンを使用してユーザーから抽出されます
user_ip target.ip、target.asset.ip 抽出された user_ip から統合されました
Cookie additional.fields Cookie から統合(req_headers の Cookie から派生)
X-F5-Request-Id security_result.detection_fields x_f5_request_id(req_headers の X-F5-Request-Id から派生)から統合
X-Request-Id security_result.detection_fields request_id(req_headers の X-Request-Id から派生)から統合
security_result security_result 直接統合
has_network、has_principal、has_target metadata.event_type すべてが true の場合は NETWORK_CONNECTION、has_principal が true の場合は STATUS_UPDATE、それ以外の場合は GENERIC_EVENT に設定します。
metadata.vendor_name 「F5_DCS」に設定
metadata.product_name 「F5 DCS」に設定
intermediary intermediary 直接統合
rsp_size event.idm.read_only_udm.network.received_bytes 変更履歴からマッピング
dst event.idm.read_only_udm.target.ipevent.idm.read_only_udm.target.asset.ip 変更履歴からマッピング
has_sec_event event.idm.read_only_udm.additional.fields 変更履歴からマッピング
app event.idm.read_only_udm.target.application 変更履歴からマッピング
node_id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
sample_rate event.idm.read_only_udm.additional.fields 変更履歴からマッピング
time_to_first_downstream_tx_byte event.idm.read_only_udm.additional.fields 変更履歴からマッピング
time_to_first_upstream_rx_byte event.idm.read_only_udm.additional.fields 変更履歴からマッピング
time_to_first_upstream_tx_byte event.idm.read_only_udm.additional.fields 変更履歴からマッピング
time_to_last_downstream_tx_byte event.idm.read_only_udm.additional.fields 変更履歴からマッピング
time_to_last_rx_byte event.idm.read_only_udm.additional.fields 変更履歴からマッピング
time_to_last_upstream_rx_byte event.idm.read_only_udm.additional.fields 変更履歴からマッピング
time_to_last_upstream_tx_byte event.idm.read_only_udm.additional.fields 変更履歴からマッピング
timeseries_enabled event.idm.read_only_udm.additional.fields 変更履歴からマッピング
sni event.idm.read_only_udm.additional.fields 変更履歴からマッピング
terminated_time event.idm.read_only_udm.additional.fields 変更履歴からマッピング
rtt_downstream_seconds event.idm.read_only_udm.additional.fields 変更履歴からマッピング
rtt_upstream_seconds event.idm.read_only_udm.additional.fields 変更履歴からマッピング
rsp_code_details event.idm.read_only_udm.additional.fields 変更履歴からマッピング
authority event.idm.read_only_udm.additional.fields 変更履歴からマッピング
connected_time event.idm.read_only_udm.additional.fields 変更履歴からマッピング
req_id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
proxy_type event.idm.read_only_udm.additional.fields 変更履歴からマッピング
vh_type event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dst_instance event.idm.read_only_udm.additional.fields 変更履歴からマッピング
lb_port event.idm.read_only_udm.additional.fields 変更履歴からマッピング
mtls event.idm.read_only_udm.additional.fields 変更履歴からマッピング
ja4_tls_fingerprint event.idm.read_only_udm.additional.fields 変更履歴からマッピング
duration_with_data_tx_delay event.idm.read_only_udm.additional.fields 変更履歴からマッピング
dst_site event.idm.read_only_udm.additional.fields 変更履歴からマッピング
protocol and scheme event.idm.read_only_udm.network.application_protocol 変更履歴からマッピング
referer event.idm.read_only_udm.network.http.referral_url 変更履歴からマッピング
tls_cipher_suite event.idm.read_only_udm.network.tls.cipher 変更履歴からマッピング
tls_version event.idm.read_only_udm.network.tls.version 変更履歴からマッピング
user_agent event.idm.read_only_udm.network.http.user_agent 変更履歴からマッピング
user_agent event.idm.read_only_udm.network.http.parsed_user_agent 変更履歴からマッピング
browser_type event.idm.read_only_udm.principal.browser.browser_type 変更履歴からマッピング
content-type event.idm.read_only_udm.principal.process.file.mime_type 変更履歴からマッピング
response_flags security_result.detection_fields 変更履歴からマッピング
original_authority event.idm.read_only_udm.target.administrative_domain 変更履歴からマッピング
country event.idm.read_only_udm.principal.location.country_or_region 変更履歴からマッピング

変更履歴

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。