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

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

このドキュメントでは、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 Protection、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 秒)。
    • バッチの最大イベント数: [最大イベント数] を選択し、32 ~ 2,000 の値を入力します(上限なしにする場合は未設定のままにします)。
    • Batch Bytes: [Max Bytes] を選択し、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 RFC3339、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 直接統合

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