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 を付与します。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Google Cloud SWP Logs)。
- [Source type] として [Google Cloud Storage] を選択します。
- [ログタイプ] として [GCP Secure Web Proxy] を選択します。
- [Chronicle Service Account] フィールドの横にある [サービス アカウントを取得する] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- ストレージ バケット URI: Cloud Storage バケットの URL(例:
gs://gcp-swp-logs
)。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
Source deletion options: 必要に応じて削除オプションを選択します。
- ストレージ バケット URI: Cloud Storage バケットの URL(例:
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- ストレージ バケット URI: Cloud Storage バケットの URL(例:
gs://gcp-swp-logs
)。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
- Source deletion options: 必要に応じて削除オプションを選択します。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- アセットの名前空間: フィードに関連付けられた名前空間。
- Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
httpRequest.latency |
additional.fields[].key : HTTPRequest Latency additional.fields[].value.string_value : 0.124462s |
未加工ログのフィールドから直接マッピングされます。 |
httpRequest.protocol |
network.application_protocol : HTTP network.application_protocol_version : 2 |
プロトコルとバージョンは、grok パターンを使用して httpRequest.protocol フィールドから抽出されます。 |
httpRequest.remoteIp |
target.asset.ip : 1.1.0.1 target.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.4 principal.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.1 network.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 Type additional.fields[].value.string_value : type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry |
未加工ログのフィールドから直接マッピングされます。 |
jsonPayload.enforcedGatewaySecurityPolicy.hostname |
target.asset.hostname : github.com target.hostname : github.com |
未加工ログのフィールドから直接マッピングされます。 |
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules[].action |
security_result.action : ALLOW security_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 : requestWasTlsIntercepted security_result.detection_fields[].value : true |
未加工ログのフィールドから直接マッピングされます。 |
logName |
additional.fields[].key : Log Name additional.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-name security_result.detection_fields[].value : github-access-gateway-5cec30cd |
未加工ログのフィールドから直接マッピングされます。 |
resource.labels.gateway_type |
security_result.detection_fields[].key : gateway-type security_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_name target.resource.attribute.labels[].value : projects/rws-w6uza3pn5jzzh6z3hc3d/global/networks/rws-tr-pilot-workspace |
未加工ログのフィールドから直接マッピングされます。 |
resource.type |
target.resource.attribute.labels[].key : Resource Type target.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 のプロフェッショナルから回答を得ることができます。