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 バケットを作成する
- Google Cloud コンソールにログインします。
[Cloud Storage バケット] のページに移動します。
[作成] をクリックします。
[バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。
[始める] セクションで、次の操作を行います。
- バケット名の要件を満たす一意の名前(vpcflow-logs など)を入力します。
階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。
バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。
[ラベルを追加] をクリックし、ラベルのキーと値を指定します。
[データの保存場所の選択] セクションで、次の操作を行います。
- ロケーション タイプを選択してください。
ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。
クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。
[データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。
[オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。
[オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。
- [データ保護] で、バケットに設定するオプションを選択します。
- オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
[作成] をクリックします。
Google Cloud VPC Flow でログ エクスポートを構成する
- 特権アカウントを使用して Google Cloud アカウントにログインします。
- [ようこそ] ページで、[VPC ネットワーク] をクリックします。
- [デフォルト] をクリックすると、サブネット ページが表示されます。
- [すべてのログ] を選択します。
- [フローログ] > [構成] をクリックします。
- [集約の間隔](例: 30 秒)を選択します。
- サンプルレート(例: 50%)を指定します。
- [保存] をクリックします。
- 検索バーで「ロギング」を検索し、Enter をクリックします。
- ログ エクスプローラで、[ログ名] で [VPC_flows] を選択してログをフィルタし、[適用] をクリックします。
- [その他の操作] をクリックします。
- [シンクを作成] をクリックします。
- 次の構成を指定します。
- シンクの詳細: 名前と説明を入力します。
- [次へ] をクリックします。
- シンクのエクスポート先: [Cloud Storage バケット] を選択します。
- Cloud Storage バケット: 先ほど作成したバケットを選択するか、新しいバケットを作成します。
- [次へ] をクリックします。
- シンクに含めるログを選択: Cloud Storage バケットでオプションを選択すると、デフォルトのログが入力されます。
- [次へ] をクリックします。
- 省略可: シンクに含めないログの選択: シンクしないログを選択します。
- [シンクを作成] をクリックします。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを設定する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: VPC Flow Logs)。
- [Source type] として [Google Cloud Storage] を選択します。
- [ログタイプ] として [GCP VPC Flow] を選択します。
- Chronicle サービス アカウントとして [サービス アカウントを取得する] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- Storage Bucket URI:
gs://my-bucket/<value>
形式の Google Cloud ストレージ バケット URL。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
Source deletion options: 必要に応じて削除オプションを選択します。
- Storage Bucket URI:
[次へ] をクリックします。
[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 のプロフェッショナルから回答を得ることができます。