VPC Flow Logs を収集する

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

このドキュメントでは、 Google Cloudを使用して VPC Flow Logs を Google Security Operations にエクスポートする方法について説明します。パーサーは、ログを組み込みの JSON 形式から Google Security Operations UDM に変換します。送信元 IP、宛先 IP、ポート、プロトコル、送信バイト数などの関連フィールドを抽出し、ネットワークの方向と特殊なケースを考慮して、対応する UDM フィールドにマッピングし、Google SecOps で正確に表現します。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス。
  • Google Cloud 環境で VPC Flow が設定され、有効になっている。
  • Google Cloudへの特権アクセス。

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

  1. Google Cloud コンソールにログインします。
  2. [Cloud Storage バケット] のページに移動します。

    [バケット] に移動

  3. [作成] をクリックします。

  4. [バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。

    1. [始める] セクションで、次の操作を行います。

      1. バケット名の要件を満たす一意の名前(vpcflow-logs など)を入力します。
      2. 階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。

      3. バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。

      4. [ラベルを追加] をクリックし、ラベルのキーと値を指定します。

    2. [データの保存場所の選択] セクションで、次の操作を行います。

      1. ロケーション タイプを選択してください。
      2. ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。

      3. クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。

    3. [データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。

    4. [オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。

    5. [オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。

      1. [データ保護] で、バケットに設定するオプションを選択します。
      2. オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
  5. [作成] をクリックします。

Google Cloud VPC Flow でログ エクスポートを構成する

  1. 特権アカウントを使用して Google Cloud アカウントにログインします。
  2. [ようこそ] ページで、[VPC ネットワーク] をクリックします。
  3. [デフォルト] をクリックすると、サブネット ページが表示されます。
  4. [すべてのログ] を選択します。
  5. [フローログ] > [構成] をクリックします。
  6. [集約の間隔](例: 30 秒)を選択します。
  7. サンプルレート(例: 50%)を指定します。
  8. [保存] をクリックします。
  9. 検索バーで「ロギング」を検索し、Enter をクリックします。
  10. ログ エクスプローラで、[ログ名] で [VPC_flows] を選択してログをフィルタし、[適用] をクリックします。
  11. [その他の操作] をクリックします。
  12. [シンクを作成] をクリックします。
  13. 次の構成を指定します。
    1. シンクの詳細: 名前と説明を入力します。
    2. [次へ] をクリックします。
    3. シンクのエクスポート先: [Cloud Storage バケット] を選択します。
    4. Cloud Storage バケット: 先ほど作成したバケットを選択するか、新しいバケットを作成します。
    5. [次へ] をクリックします。
    6. シンクに含めるログを選択: Cloud Storage バケットでオプションを選択すると、デフォルトのログが入力されます。
    7. [次へ] をクリックします。
    8. 省略可: シンクに含めないログの選択: シンクしないログを選択します。
  14. [シンクを作成] をクリックします。

フィードを設定する

Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。

  • [SIEM 設定] > [フィード]
  • [Content Hub] > [Content Packs]

[SIEM 設定] > [フィード] でフィードを設定する

フィードを設定する手順は次のとおりです。

  1. [SIEM Settings] > [Feeds] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: VPC Flow Logs)。
  5. [Source type] として [Google Cloud Storage] を選択します。
  6. [ログタイプ] として [GCP VPC Flow] を選択します。
  7. Chronicle サービス アカウントとして [サービス アカウントを取得する] をクリックします。
  8. [次へ] をクリックします。
  9. 次の入力パラメータの値を指定します。

    • Storage Bucket URI:gs://my-bucket/<value> 形式の Google Cloud ストレージ バケット URL。
    • URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
    • Source deletion options: 必要に応じて削除オプションを選択します。

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

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

サポートされている VPC Flow Logs のログ形式

VPC Flow Logs パーサーは JSON 形式のログをサポートしています。

サポートされている VPC Flow Logs のサンプルログ

  • JSON

    {
      "insertId": "1wjp1y9f8vc6y6",
      "jsonPayload": {
        "bytes_sent": "0",
        "connection": {
          "dest_ip": "198.51.100.0",
          "dest_port": 32846,
          "protocol": 6,
          "src_ip": "198.51.100.1",
          "src_port": 443
        },
        "dest_instance": {
          "project_id": "logging-259109",
          "region": "us-west2",
          "vm_name": "demisto-01",
          "zone": "us-west2-a"
        },
        "dest_vpc": {
          "project_id": "logging-259109",
          "subnetwork_name": "default",
          "vpc_name": "default"
        },
        "end_time": "2020-03-28T10:44:41.896734136Z",
        "packets_sent": "2",
        "reporter": "DEST",
        "start_time": "2020-03-28T10:44:41.896734136Z"
      },
      "logName": "projects/logging-259109/logs/compute.googleapis.com%2Fvpc_flows",
      "receiveTimestamp": "2020-03-28T10:44:50.112903743Z",
      "resource": {
        "labels": {
          "location": "us-west2-a",
          "project_id": "dummy_project_id",
          "subnetwork_id": "subnetwork_id",
          "subnetwork_name": "default"
        },
        "type": "gce_subnetwork"
      },
      "timestamp": "2020-03-28T10:44:50.112903743Z"
    }
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
connection.dest_ip target.asset.ip
target.ip
network.direction が OUTBOUND の場合は直接マッピング。
network.direction が INBOUND の場合、principal.ip からマッピングされます。
connection.dest_port target.port -1 より大きい場合、整数に変換されます。
connection.protocol network.ip_protocol 文字列に変換され、整数にマッピングされます。
整数値に基づいて、IP プロトコル名(TCP、UDP、ICMP)。
connection.src_ip principal.ip 直接マッピング。
connection.src_port principal.port 整数に変換されます。
dest_instance.region target.location.name 直接マッピング。
dest_instance.vm_name target.asset.hostname 直接マッピング。
dest_location.city target.location.city 直接マッピング。
dest_location.country target.location.country_or_region 直接マッピング。
dest_location.region target.location.state 直接マッピング。
dest_vpc.project_id target.namespace dest_vpc.vpc_name とともに使用して、target.namespace を形成します。
dest_vpc.vpc_name target.namespace dest_vpc.project_id とともに使用して、target.namespace を形成します。
insertId metadata.product_log_id 直接マッピング。
jsonPayload.bytes_sent network.sent_bytes network.sent_bytes に名前が変更され、uinteger に変換されます。
jsonPayload.packets_sent network.sent_packets 整数に変換されます。
labels.tunnel_id additional.fields キー Tunnel Id、型 string_value の additional.fields に統合されます。
logName security_result.category_details 直接マッピング。
resource.labels.project_id target.resource.name //cloudresourcemanager.googleapis.com/projects/{resource.labels.project_id} 形式で target.resource.name を作成するために使用されます。
resource.labels.region target.location.country_or_region 直接マッピング。
resource.labels.subnetwork_id target.user.attribute.labels キー subnetwork_id を使用して target.user.attribute.labels に統合されます。
resource.type metadata.product_event_type 直接マッピング。
重要度 security_result.severity 値が DEBUG の場合、LOW にマッピングされます。
src_gke_details.cluster.cluster_location principal.resource.attribute.labels キー cluster_location を使用して principal.resource.attribute.labels に統合されました。
src_gke_details.cluster.cluster_name principal.resource.attribute.labels キー cluster_name を使用して principal.resource.attribute.labels に統合されました。
src_gke_details.pod.pod_name principal.resource.attribute.labels キー pod_name を使用して principal.resource.attribute.labels に統合されました。
src_gke_details.pod.pod_namespace principal.resource.attribute.labels キー pod_namespace を使用して principal.resource.attribute.labels に統合されました。
src_instance.region principal.location.name 直接マッピング。
src_instance.vm_name principal.asset.hostname 直接マッピング。
src_location.city principal.location.city 直接マッピング。
src_location.country principal.location.country_or_region 直接マッピング。
src_location.region principal.location.state 直接マッピング。
src_vpc.project_id principal.namespace src_vpc.vpc_name とともに使用して、principal.namespace を形成します。
src_vpc.vpc_name principal.namespace src_vpc.project_id とともに使用して、principal.namespace を形成します。
textPayload additional.fields キー Textpayload、型 string_value の additional.fields に統合されます。
timestamp metadata.event_timestamp jsonPayload.end_time が空の場合に event_timestamp を入力するために使用されます。
metadata.description 「reporter」フィールドに基づいて、ネットワーク フローの説明(報告者(SRC または DEST)と方向(INBOUND または OUTBOUND)を含む)が生成されます。
metadata.event_type VPC Flow Logs の場合は NETWORK_CONNECTION、他のログタイプの場合は USER_RESOURCE_ACCESS に設定します。
metadata.log_type GCP_VPC_FLOW に設定します。
metadata.product_name GCP VPC Flow Logs に設定します。
metadata.product_version 1.0 に設定します。
metadata.vendor_name Google Cloud に設定します。
network.direction target.port に基づいて決定されます。ポートが既知のポートまたは予約済みのポートの場合、INBOUND と見なされます。それ以外の場合は、OUTBOUND と見なされます。
security_result.severity デフォルトでは LOW に設定されています。
target.resource.attribute.cloud.environment GOOGLE_CLOUD_PLATFORM に設定します。
target.resource.resource_type CLOUD_PROJECT に設定します。

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