Cloud Intrusion Detection System(Cloud IDS)ログを収集する
このドキュメントでは、Cloud Storage を使用して Cloud IDS ログをエクスポートし、Google Security Operations に取り込む方法について説明します。パーサーは、未加工の JSON 形式の Cloud IDS ログを Google Cloud から構造化 UDM 形式に変換します。関連するフィールドを抽出し、UDM スキーマにマッピングして、イベントを分類します。また、ネットワークの方向やリソースタイプなどの追加コンテキストでデータを拡充します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- 環境で Cloud IDS が設定され、アクティブになっていることを確認します。 Google Cloud
- Cloud IDS への特権アクセス権と適切な権限があることを確認します。 Google Cloud
Cloud Storage バケットを作成する
- Google Cloud コンソールにログインします。
[Cloud Storage バケット] のページに移動します。
[作成] をクリックします。
[バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。
[始める] セクションで、次の操作を行います。
- バケット名の要件を満たす一意の名前を入力します(例: gcp-ids-logs)。
階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。
バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。
[ラベルを追加] をクリックし、ラベルのキーと値を指定します。
[データの保存場所の選択] セクションで、次の操作を行います。
- ロケーション タイプを選択してください。
ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。
クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。
[データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。
[オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。
[オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。
- [データ保護] で、バケットに設定するオプションを選択します。
- オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
[作成] をクリックします。
Cloud IDS ログのエクスポートを構成する
- Google Cloud コンソールにログインします。
- [ロギング] > [ログルーター] に移動します。
- [シンクを作成] をクリックします。
次の構成パラメータを指定します。
- シンク名: わかりやすい名前を入力します(例:
google-cloud-ids-logs-sink
)。 - シンク デスティネーション: [Cloud Storage] を選択し、 Google Cloud ストレージ バケット URI(
gs://gcp-ids-logs
など)を指定します。 ログフィルタ:
logName="projects/<your-project-id>/logs/cloud-ids"
- シンク名: わかりやすい名前を入力します(例:
[作成] をクリックします。
Cloud Storage の権限を構成する
- [IAM と管理] > [IAM] に移動します。
- Cloud Logging サービス アカウントを見つけます。
- バケットに対する roles/storage.admin を付与します。
Cloud IDS ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: GCP IDS Logs)。
- [Source type] として [Google Cloud Storage] を選択します。
- [ログタイプ] として [GCP IDS] を選択します。
- [Chronicle Service Account] フィールドの横にある [Get Service Account] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- ストレージ バケット URI: Cloud Storage バケットの URL(
gs://gcp-ids-logs
など)。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
Source deletion options: 必要に応じて削除オプションを選択します。
Asset namespace: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
- ストレージ バケット URI: Cloud Storage バケットの URL(
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
insertId | metadata.product_log_id | 直接マッピング。 |
jsonPayload.alert_severity | security_result.severity | 直接マッピング。 |
jsonPayload.alert_time | metadata.event_timestamp | 直接マッピング。 |
jsonPayload.application | principal.application | 直接マッピング(方向がサーバーからクライアントの場合のみ)。 |
jsonPayload.application | target.application | 直接マッピング(方向がクライアントからサーバーの場合、または logName に traffic が含まれている場合に限る)。 |
jsonPayload.category | security_result.category | 「jsonPayload.category」の値に基づいてマッピングされます。 - 'dos': NETWORK_DENIAL_OF_SERVICE - 'info-leak': NETWORK_SUSPICIOUS - 'protocol-anomaly': NETWORK_MALICIOUS - 'backdoor'、'spyware'、'trojan': SOFTWARE_MALICIOUS |
jsonPayload.category | security_result.category_details | 直接マッピング。 |
jsonPayload.cves | extensions.vulns.vulnerabilities.cve_id | 直接マッピング、配列を反復処理。 |
jsonPayload.destination_ip_address | target.ip | 直接マッピング。 |
jsonPayload.destination_port | target.port | 直接マッピング。 |
jsonPayload.details | extensions.vulns.vulnerabilities.description | 直接マッピング。 |
jsonPayload.details | security_result.detection_fields.value | 「jsonPayload.repeat_count」が存在する場合にマッピングされます。キーは「repeat_count」に設定されます。 |
jsonPayload.direction | network.direction | 「jsonPayload.direction」の値に基づいてマッピングされます。 - 'client-to-server': OUTBOUND - 'server-to-client': INBOUND |
jsonPayload.elapsed_time | network.session_duration.seconds | 直接マッピング。 |
jsonPayload.ip_protocol | network.ip_protocol | 直接マッピング、大文字に変換してからプロトコル番号にマッピング。 |
jsonPayload.name | security_result.threat_name | 直接マッピング。 |
jsonPayload.network | principal.resource.name | 直接マッピング(方向がサーバーからクライアントの場合のみ)。 |
jsonPayload.network | target.resource.name | 直接マッピング(方向がクライアントからサーバーの場合、または logName に traffic が含まれている場合に限る)。 |
jsonPayload.repeat_count | security_result.detection_fields.value | 存在する場合はマッピングされます。キーは「repeat_count」に設定されます。 |
jsonPayload.session_id | network.session_id | 直接マッピング。 |
jsonPayload.source_ip_address | principal.ip | 直接マッピング。 |
jsonPayload.source_port | principal.port | 直接マッピング。 |
jsonPayload.start_time | about.labels.value | 存在する場合はマッピングされます。キーは「start_time」に設定されます。 |
jsonPayload.start_time | additional.fields.value.string_value | 存在する場合はマッピングされます。キーは「start_time」に設定されます。 |
jsonPayload.threat_id | security_result.threat_id | 直接マッピング。 |
jsonPayload.total_bytes | about.labels.value | 存在する場合はマッピングされます。キーは「total_bytes」に設定されます。 |
jsonPayload.total_bytes | additional.fields.value.string_value | 存在する場合はマッピングされます。キーは「total_bytes」に設定されます。 |
jsonPayload.total_packets | about.labels.value | 存在する場合はマッピングされます。キーは「total_packets」に設定されます。 |
jsonPayload.total_packets | additional.fields.value.string_value | 存在する場合はマッピングされます。キーは「total_packets」に設定されます。 |
jsonPayload.type | security_result.detection_fields.value | 存在する場合はマッピングされます。キーが「type」に設定されます。 |
jsonPayload.uri_or_filename | target.file.full_path | 直接マッピング。 |
logName | security_result.category_details | 直接マッピング。 |
receiveTimestamp | metadata.collected_timestamp | 直接マッピング。 |
resource.labels.id | observer.resource.product_object_id | 直接マッピング。 |
resource.labels.location | observer.location.name | 直接マッピング。 |
resource.labels.resource_container | observer.resource.name | 直接マッピング。 |
resource.type | observer.resource.resource_subtype | 直接マッピング。 |
metadata.event_type | 他のフィールドの存在と値に基づく一連の条件ルールによって決定されます。デフォルトは「GENERIC_EVENT」です。 | |
metadata.vendor_name | 静的値: Google Cloud Platform 。 |
|
metadata.product_name | 静的値: GCP_IDS 。 |
|
metadata.log_type | 静的値: GCP_IDS 。 |
|
extensions.vulns.vulnerabilities.vendor | 静的値: GCP_IDS 。jsonPayload.cves の CVE ごとに追加されます。 |
|
principal.resource.resource_type | 静的値: VPC_NETWORK 。jsonPayload.network が存在し、方向がサーバーからクライアントの場合に追加されます。 |
|
target.resource.resource_type | 静的値: VPC_NETWORK 。jsonPayload.network が存在し、方向がクライアントからサーバーまたは logName に traffic が含まれている場合に追加されます。 |
|
observer.resource.resource_type | 静的値: CLOUD_PROJECT 。resource.labels.resource_container または resource.type が存在する場合に追加されます。 |
|
observer.resource.attribute.cloud.environment | 静的値: GOOGLE_CLOUD_PLATFORM 。resource.labels.resource_container または resource.type が存在する場合に追加されます。 |
|
is_alert | 「jsonPayload.alert_severity」が「CRITICAL」の場合は true、それ以外の場合は false。 | |
is_significant | 「jsonPayload.alert_severity」が「CRITICAL」の場合は true、それ以外の場合は false。 |
変更点
2024-05-01
- 非推奨の
noun.labels
の追加マッピングを追加しました。
2023-12-13
- GCP_IDS パーサーをデフォルトに昇格しました。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。