Cloud Security Command Center の監視ログを収集する
このドキュメントでは、Cloud Storage を使用して Security Command Center の検出ログをエクスポートし、Google Security Operations に取り込む方法について説明します。パーサーは、未加工の JSON データを統合データモデル(UDM)に変換します。データ構造を正規化して、入力の潜在的な変化を処理し、関連するフィールドを抽出して UDM スキーマにマッピングします。また、ダウンストリーム分析用の追加のコンテキストとフラグでデータを拡充します。
始める前に
- Google Cloud Security Command Center が環境で有効になっていて、構成されていることを確認します。 Google Cloud
- Google SecOps インスタンスがあることを確認します。
- Security Command Center と Cloud Logging への特権アクセス権があることを確認します。
Cloud Storage バケットを作成する
- Google Cloud コンソールにログインします。
[Cloud Storage バケット] のページに移動します。
[作成] をクリックします。
[バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。
[始める] セクションで、次の操作を行います。
- バケット名の要件を満たす一意の名前を入力します(例: gcp-scc-observation-logs)。
階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。
バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。
[ラベルを追加] をクリックし、ラベルのキーと値を指定します。
[データの保存場所の選択] セクションで、次の操作を行います。
- ロケーション タイプを選択してください。
ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。
クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。
[データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。
[オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。
[オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。
- [データ保護] で、バケットに設定するオプションを選択します。
- オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
[作成] をクリックします。
Security Command Center のロギングを構成する
- Google Cloud コンソールにログインします。
[Security Command Center] ページに移動します。
組織を選択する。
[設定] をクリックします。
[継続的エクスポート] タブをクリックします。
[エクスポート名] で [Logging エクスポート] をクリックします。
[シンク] で、[検出を Logging にロギング] をオンにします。
[ロギング プロジェクト] で、検出結果を記録するプロジェクトを入力または検索します。
[保存] をクリックします。
構成 Google Cloud Security Command Center の検出ログのエクスポート
- Google Cloud コンソールにログインします。
- [ロギング] > [ログルーター] に移動します。
- [シンクを作成] をクリックします。
次の構成パラメータを指定します。
- シンク名: わかりやすい名前を入力します(例:
scc-observation-logs-sink
)。 - シンク デスティネーション: [Cloud Storage Storage] を選択し、バケットの URI(
gs://gcp-scc-observation-logs
など)を入力します。 ログフィルタ:
logName="projects/<your-project-id>/logs/cloudsecurityscanner.googleapis.com%2Fobservations" resource.type="security_command_center_observation" logName="projects/<your-project-id>/logs/cloudsecurityscanner.googleapis.com%2Ffindings" resource.type="security_center_findings"
エクスポート オプションを設定する: すべてのログエントリを含めます。
- シンク名: わかりやすい名前を入力します(例:
[作成] をクリックします。
Cloud Storage の権限を構成する
- [IAM と管理] > [IAM] に移動します。
- Cloud Logging サービス アカウントを見つけます。
- バケットに対する roles/storage.admin を付与します。
Google Cloud Security Command Center の観測ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Google Cloud Security Command Center Observation logs)。
- [Source type] として [Google Cloud Storage] を選択します。
- [ログタイプ] として [Security Command Center Observation] を選択します。
- [Chronicle Service Account] フィールドの横にある [Get Service Account] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- ストレージ バケット URI: Cloud Storage バケットの URL(
gs://gcp-scc-observation-logs
など)。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
Source deletion options: 必要に応じて削除オプションを選択します。
Asset namespace: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
- ストレージ バケット URI: Cloud Storage バケットの URL(
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
access.callerIp | read_only_udm.principal.ip | 直接マッピング。 |
access.callerIpGeo.regionCode | read_only_udm.principal.location.country_or_region | 直接マッピング。 |
access.methodName | read_only_udm.additional.fields.value.string_value | 直接マッピング。read_only_udm.target.labels.value にもマッピングされます。 |
access.principalEmail | read_only_udm.principal.user.email_addresses | 直接マッピング。 |
access.principalSubject | read_only_udm.principal.user.attribute.labels.value | 直接マッピング。 |
assetDisplayName | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
assetId | read_only_udm.target.asset.asset_id | assets/ の後の値が assetId フィールドから抽出され、AssetID:<extracted_value> としてマッピングされます。 |
category | read_only_udm.metadata.product_event_type | 直接マッピング。 |
contacts.security.contacts.email | read_only_udm.security_result.about.user.email_addresses | 直接マッピング。about オブジェクトは、連絡先の数に応じて複数回繰り返すことができます。このフィールドの roles.name フィールドは Security に設定されています。 |
contacts.technical.contacts.email | read_only_udm.security_result.about.user.email_addresses | 直接マッピング。about オブジェクトは、連絡先の数に基づいて複数回繰り返すことができます。このフィールドの roles.name フィールドは Technical に設定されています。 |
createTime | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。このフィールドの key フィールドは createTime に設定されています。 |
eventTime | read_only_udm.metadata.event_timestamp | タイムスタンプ形式に変換されます。 |
externalUri | read_only_udm.about.url | 直接マッピング。 |
findingClass | read_only_udm.security_result.category_details | 直接マッピング。 |
findingProviderId | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
mitreAttack.primaryTactic | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。このフィールドの key フィールドは primary_tactic に設定されています。 |
mitreAttack.primaryTechniques | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、テクニックの数に基づいて複数回繰り返すことができます。このフィールドの key フィールドは primary_technique に設定されています。 |
ミュート | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。このフィールドの key フィールドは mute に設定されています。 |
name | read_only_udm.metadata.product_log_id | 直接マッピング。 |
parentDisplayName | read_only_udm.metadata.description | 直接マッピング。 |
resource.display_name | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
resource.name | read_only_udm.target.resource.name、read_only_udm.principal.resource.name | 直接マッピング。このフィールドを使用して principal.resource.name フィールドに値を設定すると、パーサーは resource.project_name が空かどうかを確認します。空でない場合、代わりに resource.project_name が使用されます。 |
resource.parent_display_name | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
resource.parent_name | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
resource.project_display_name | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
resource.project_name | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
resource.type | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
resourceName | read_only_udm.target.resource.name | 直接マッピング。 |
securityMarks.name | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。このフィールドの key フィールドは securityMarks_name に設定されています。 |
重要度 | read_only_udm.security_result.severity、read_only_udm.security_result.priority_details | 直接マッピング。 |
sourceDisplayName | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
sourceProperties.contextUris.mitreUri.displayName | read_only_udm.security_result.detection_fields.key | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。 |
sourceProperties.contextUris.mitreUri.url | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。 |
sourceProperties.detectionCategory.ruleName | read_only_udm.security_result.rule_name | 直接マッピング。 |
sourceProperties.detectionCategory.subRuleName | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。このフィールドの key フィールドは sourceProperties_detectionCategory_subRuleName に設定されています。 |
sourceProperties.detectionPriority | read_only_udm.security_result.priority_details | 直接マッピング。 |
sourceProperties.findingId | read_only_udm.target.resource.attribute.labels.value | 直接マッピング。 |
state | read_only_udm.security_result.detection_fields.value | 直接マッピング。detection_fields オブジェクトは、使用可能なフィールドに基づいて複数回繰り返すことができます。このフィールドの key フィールドは state に設定されています。 |
なし | is_alert | ログが正常に解析された場合は true に設定します。 |
なし | is_significant | ログが正常に解析された場合は true に設定します。 |
なし | read_only_udm.metadata.log_type | GCP_SECURITYCENTER_OBSERVATION にハードコードされています。 |
なし | read_only_udm.metadata.product_name | Security Command Center にハードコードされています。 |
なし | read_only_udm.metadata.vendor_name | Google にハードコードされています。 |
なし | read_only_udm.principal.user.account_type | プリンシパルのメールアドレスが存在する場合は、CLOUD_ACCOUNT_TYPE に設定します。 |
なし | read_only_udm.security_result.alert_state | ALERTING にハードコードされています。 |
なし | read_only_udm.security_result.priority | 重大度が LOW の場合は LOW_PRIORITY に設定します。 |
なし | read_only_udm.target.application | resourceName フィールドから抽出されます。 |
なし | read_only_udm.target.resource.product_object_id | 親フィールドから抽出されます。 |
なし | read_only_udm.target.resource.resource_type | デフォルトでは CLUSTER に設定されています。category が Impact: GPU Instance Created または Impact: Many Instances Created の場合、VIRTUAL_MACHINE に設定します。category が Persistence: Add Sensitive Role の場合は SETTING に設定します。 |
なし | read_only_udm.target.resource_ancestors.name | parent フィールドと resourceName フィールドから抽出されます。 |
なし | read_only_udm.target.resource_ancestors.product_object_id | parent、resource.project_name、resourceName フィールドから抽出されます。 |
なし | read_only_udm.target.resource_ancestors.resource_type | resource.type が google.compute.Project の場合は CLOUD_PROJECT に設定します。 |
なし | read_only_udm.target.labels.key | access.methodName が存在する場合、値は access_methodName に設定されます。 |
なし | read_only_udm.target.labels.value | 値は access.methodName から設定されます。 |
なし | read_only_udm.target.resource.attribute.labels.key | キーは、使用可能なフィールドに基づいて、resource_parentDisplayName 、resource_type 、resource_parentName 、resource_projectDisplayName 、resource_displayName 、finding_id 、source_id 、FindingProviderId 、sourceDisplayName 、asset_display_name のいずれかの値に設定されます。 |
なし | read_only_udm.target.resource.attribute.labels.value | 値は、使用可能なフィールド(parentDisplayName、resource.type、resource.parent_name、resource.project_display_name、resource.display_name、sourceProperties.findingId、sourceProperties.sourceId、findingProviderId、sourceDisplayName、assetDisplayName)に基づいて、次のいずれかのフィールドから設定されます。 |
変更点
2023-11-29
- パーサーでホスト名が処理される方法の不整合を修正しました。
2023-05-02
security_result.url_back_to_product
フィールドに、正しい形式のウェブアドレスが含まれていることを確認しました。
2023-04-12
GCP_SECURITYCENTER_OBSERVATION
パーサーをデフォルトとして更新しました。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。