Secure Web Proxy ログを収集する
このドキュメントでは、Cloud Storage を使用して Secure Web Proxy をエクスポートし、Google Security Operations に取り込む方法について説明します。パーサーは JSON ログからフィールドを抽出し、統合データモデル(UDM)に変換します。UDM フィールドを初期化し、JSON ペイロードを解析して、ネットワーク情報、セキュリティの詳細、リソース属性を抽出し、プリンシパル情報とターゲット情報の有無に基づいてイベントタイプを設定します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- Secure Web Proxy がアクティブで、 Google Cloud 環境で構成されている。
- Google Cloud への特権アクセスと、Secure Web Proxy ログにアクセスするための適切な権限。
Cloud Storage バケットを作成する
- Google Cloud コンソールにログインします。
- [Cloud Storage バケット] のページに移動します。 
- [作成] をクリックします。 
- [バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。 - [始める] セクションで、次の操作を行います。 - バケット名の要件を満たす一意の名前を入力します(例: gcp-swp-logs)。
- 階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。 
- バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。 
- [ラベルを追加] をクリックし、ラベルのキーと値を指定します。 
 
- [データの保存場所の選択] セクションで、次の操作を行います。 - ロケーション タイプを選択してください。
- ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。 
- クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。 
 
- [データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。 
- [オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。 
- [オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。 - [データ保護] で、バケットに設定するオプションを選択します。
- オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
 
 
- [作成] をクリックします。 
Secure Web Proxy ログのエクスポートを構成する
- Google Cloud コンソールにログインします。
- [ロギング>ログルーター] に移動します。
- [シンクを作成] をクリックします。
- 次の構成パラメータを指定します。 - シンク名: わかりやすい名前を入力します(例: SWP-Export-Sink)。
- シンクの宛先: [Cloud Storage] を選択し、バケットの URI(例: gs://gcp-swp-logs/)を入力します。
- ログフィルタ:
 - logName="projects/<your-project-id>/logs/networkservices.googleapis.com/gateway_requests"
- シンク名: わかりやすい名前を入力します(例: 
- [作成] をクリックします。 
Cloud Storage の権限を構成する
- [IAM と管理] > [IAM] に移動します。
- Cloud Logging サービス アカウントを見つけます。
- バケットに対する roles/storage.admin を付与します。
フィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Google Cloud SWP Logs)。
- [ソースタイプ] として [Google Cloud Storage V2] を選択します。
- [ログタイプ] として [GCP Secure Web Proxy] を選択します。
- [Chronicle Service Account] フィールドの横にある [サービス アカウントを取得する] をクリックします。
- [次へ] をクリックします。
- 次の入力パラメータの値を指定します。 - ストレージ バケット URI: Cloud Storage バケットの URL(例: gs://gcp-swp-logs/)。この URL は、末尾にスラッシュ(/)が付いている必要があります。
- Source deletion options: 必要に応じて削除オプションを選択します。 
- ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。 
 
- ストレージ バケット URI: Cloud Storage バケットの URL(例: 
- [次へ] をクリックします。 
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。 
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック | 
|---|---|---|
| httpRequest.latency | additional.fields[].key:HTTPRequest Latencyadditional.fields[].value.string_value:0.124462s | 未加工ログのフィールドから直接マッピングされます。 | 
| httpRequest.protocol | network.application_protocol:HTTPnetwork.application_protocol_version:2 | プロトコルとバージョンは、grok パターンを使用して httpRequest.protocolフィールドから抽出されます。 | 
| httpRequest.remoteIp | target.asset.ip:1.1.0.1target.ip:1.1.0.1 | IP アドレスは、grok パターンを使用して httpRequest.remoteIpフィールドから抽出されます。 | 
| httpRequest.requestMethod | network.http.method:GET | 未加工ログのフィールドから直接マッピングされます。 | 
| httpRequest.requestSize | network.sent_bytes: 144 | 未加工ログのフィールドから直接マッピングされ、整数に変換されます。 | 
| httpRequest.requestUrl | target.url:https://github.com/tempuslabs/tempusutils/info/refs?service=git-upload-pack | 未加工ログのフィールドから直接マッピングされます。 | 
| httpRequest.responseSize | network.received_bytes: 225 | 未加工ログのフィールドから直接マッピングされ、整数に変換されます。 | 
| httpRequest.serverIp | principal.asset.ip:1.8.1.4principal.ip:1.8.1.4 | IP アドレスは、grok パターンを使用して httpRequest.serverIpフィールドから抽出されます。 | 
| httpRequest.status | network.http.response_code: 401 | 未加工ログのフィールドから直接マッピングされ、整数に変換されます。 | 
| httpRequest.userAgent | network.http.user_agent:git/2.34.1network.http.parsed_user_agent: {family:USER_DEFINED,device:git,device_version:2.34.1} | 未加工ログのフィールドから直接マッピングされます。 parsed_user_agentフィールドは、httpRequest.userAgentフィールドを解析することで取得されます。 | 
| insertId | metadata.product_log_id:1yh8wczer5o8n | 未加工ログのフィールドから直接マッピングされます。 | 
| jsonPayload.@type | additional.fields[].key:Log Typeadditional.fields[].value.string_value:type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry | 未加工ログのフィールドから直接マッピングされます。 | 
| jsonPayload.enforcedGatewaySecurityPolicy.hostname | target.asset.hostname:github.comtarget.hostname:github.com | 未加工ログのフィールドから直接マッピングされます。 | 
| jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].action | security_result.action:ALLOWsecurity_result.action_details:ALLOWED | security_result.actionはjsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].actionの値に基づいて導出されます。アクションがALLOWEDの場合、UDM フィールドはALLOWに設定されます。アクションがDENIEDの場合、UDM フィールドはBLOCKに設定されます。 | 
| jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].name | security_result.rule_name:projects/671807354785/locations/us-central1/gatewaySecurityPolicies/github-access-gateway-security-policy-5cec30cd/rules/github-access-gateway-security-policy-rule-5cec30cd | 未加工ログのフィールドから直接マッピングされます。 | 
| jsonPayload.enforcedGatewaySecurityPolicy.requestWasTlsIntercepted | security_result.detection_fields[].key:requestWasTlsInterceptedsecurity_result.detection_fields[].value:true | 未加工ログのフィールドから直接マッピングされます。 | 
| logName | additional.fields[].key:Log Nameadditional.fields[].value.string_value:projects/rws-w6uza3pn5jzzh6z3hc3d/logs/networkservices.googleapis.com%2Fgateway_requests | 未加工ログのフィールドから直接マッピングされます。 | 
| receiveTimestamp | metadata.collected_timestamp: {seconds: 1710189647,nanos: 661101224} | RFC 3339 日付形式を使用して、未加工のログフィールドから解析されます。 | 
| resource.labels.gateway_name | security_result.detection_fields[].key:gateway-namesecurity_result.detection_fields[].value:github-access-gateway-5cec30cd | 未加工ログのフィールドから直接マッピングされます。 | 
| resource.labels.gateway_type | security_result.detection_fields[].key:gateway-typesecurity_result.detection_fields[].value:SECURE_WEB_GATEWAY | 未加工ログのフィールドから直接マッピングされます。 | 
| resource.labels.location | target.resource.attribute.cloud.availability_zone:us-central1 | 未加工ログのフィールドから直接マッピングされます。 | 
| resource.labels.network_name | target.resource.attribute.labels[].key:rc_network_nametarget.resource.attribute.labels[].value:projects/rws-w6uza3pn5jzzh6z3hc3d/global/networks/rws-tr-pilot-workspace | 未加工ログのフィールドから直接マッピングされます。 | 
| resource.type | target.resource.attribute.labels[].key:Resource Typetarget.resource.attribute.labels[].value:networkservices.googleapis.com/Gateway | 未加工ログのフィールドから直接マッピングされます。 | 
| severity | security_result.severity:MEDIUM | 未加工ログのフィールドからマッピングされます。値は UDM の重大度レベルに変換されます。この場合、 WARNINGはMEDIUMにマッピングされます。 | 
| timestamp | metadata.event_timestamp: {seconds: 1710189639,nanos: 952848000} | RFC 3339 日付形式を使用して、未加工のログフィールドから解析されます。 | 
| (パーサー ロジック) | metadata.event_type:NETWORK_HTTP | has_principal、has_target、httpに一致するプロトコルの有無に基づいてパーサー ロジックによって決定されます。 | 
| (パーサー ロジック) | metadata.log_type:GCP_SWP | 商品に基づくハードコードされた値。 | 
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。