Cloud Compute のログを収集する

以下でサポートされています。

このドキュメントでは、 Google Cloud Cloud Storage を使用して Google Security Operations にコンピューティング ログをエクスポートする方法について説明します。パーサーはフィールドを抽出し、メッセージ フィールドを正規化して、抽出されたデータを統合データモデル(UDM)スキーマにマッピングし、一貫したセキュリティ イベント表現を実現します。syslog のようなメッセージや Key-Value ペアなど、さまざまなログ形式を処理し、抽出されたフィールド(typeaction など)に基づいてイベントを分類します。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • 環境で Compute が設定され、アクティブになっていることを確認します。 Google Cloud
  • Google Cloudへの特権アクセス権があることを確認します。

Google Cloud Storage バケットを作成する

  1. Google Cloud コンソールにログインします。
  2. [Cloud Storage バケット] のページに移動します。

    [バケット] に移動

  3. [作成] をクリックします。

  4. [バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。

    1. [始める] セクションで、次の操作を行います。

      1. バケット名の要件を満たす一意の名前を入力します(compute-logs など)。
      2. 階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。

        1. バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。
        2. [ラベルを追加] をクリックし、ラベルのキーと値を指定します。
    2. [データの保存場所の選択] セクションで、次の操作を行います。

      1. ロケーション タイプを選択してください。

        1. ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。
        1. クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。
    3. [データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。

    4. [オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。

    5. [オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。

      1. [データ保護] で、バケットに設定するオプションを選択します。
      2. オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
  5. [作成] をクリックします。

Google Cloud Compute ログのエクスポートを構成する

  1. Google Cloud コンソールで、[ロギング] > [ログルーター] に移動します。
  2. [シンクを作成] をクリックします。
  3. 以下の詳細を入力します。

    • シンク名: わかりやすい名前を指定します(例: Compute-Logs-Sink)。
    • シンクの宛先: Cloud Storage を選択します。
    • シンク デスティネーション: Cloud Storage を選択し、バケット URI(gs://<your-bucket-name>/compute-logs など)を入力します。
    • ログフィルタ: 次のようにフィルタを設定して、 Google Cloud Compute ログをキャプチャします。

      • ログ名とタイプ:

        logName="*compute*"
        
      • ネットワーク関連のフィールド(IP アドレス、ポートなど):

        jsonPayload.connection.dest_ip="*" OR jsonPayload.connection.src_ip="*"
        
      • インスタンスの詳細:

        jsonPayload.dest_instance.project_id="*"
        jsonPayload.src_instance.project_id="*"
        
      • セキュリティ関連の詳細:

        jsonPayload.rule_details.action="ALLOW" OR jsonPayload.rule_details.action="BLOCK"
        
  4. [作成] をクリックします。

Cloud Storage の権限を構成する

  1. [IAM] > [IAM と管理] > [サービス アカウント] に移動します。
  2. Cloud Logging サービス アカウントを見つけます(例: service-account@logging.iam.gserviceaccount.com)。
  3. バケットに対する roles/storage.admin ロールを付与します。

Google Cloud Compute ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Google Cloud Compute Logs)。
  4. [Source type] として [Google Cloud Storage] を選択します。
  5. [ログタイプ] として [GCP Compute] を選択します。
  6. [Chronicle サービス アカウント] として [サービス アカウントを取得する] をクリックします。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • Storage Bucket URI: Google Cloud gs://my-bucket/<value> 形式のストレージ バケット URL。
    • URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
    • Source deletion options: 必要に応じて削除オプションを選択します。

    • Asset namespace: アセットの名前空間

    • Ingestion labels: このフィードからのイベントに適用されるラベル。

  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
addr read_only_udm.principal.ip フィールドが空でないか「?」でない場合、プリンシパル IP アドレス リストに統合されます。
jsonPayload.connection.dest_ip read_only_udm.target.ip フィールドが存在する場合は、ターゲット IP アドレスリストに統合されます。
jsonPayload.connection.dest_port read_only_udm.target.port 文字列に変換され、その後整数に変換されて、変換中にエラーが発生しなかった場合にマッピングされます。
jsonPayload.connection.protocol read_only_udm.network.ip_protocol 文字列に変換され、その後整数に変換されます。ルックアップ テーブルを使用して IP プロトコル(TCP、UDP など)を決定し、変換中にエラーが発生しなかった場合にマッピングするために使用されます。
jsonPayload.connection.src_ip read_only_udm.principal.ip フィールドが存在する場合は、プリンシパルの IP アドレスリストに統合されます。
jsonPayload.connection.src_port read_only_udm.principal.port 文字列に変換され、その後整数に変換されて、変換中にエラーが発生しなかった場合にマッピングされます。
jsonPayload.dest_instance.project_id read_only_udm.target.resource.product_object_id jsonPayload.dest_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.dest_instance.region read_only_udm.target.location.name jsonPayload.dest_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.dest_instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name jsonPayload.dest_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.dest_instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone jsonPayload.dest_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.dest_vpc.project_id read_only_udm.target.cloud.vpc.product_object_id 関連するフィールドをマッピングする条件として使用されます。
jsonPayload.dest_vpc.subnetwork_name read_only_udm.target.cloud.vpc.name jsonPayload.dest_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.instance.project_id read_only_udm.target.resource.product_object_id jsonPayload.instance.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.instance.region read_only_udm.target.location.name jsonPayload.instance.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name jsonPayload.instance.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone jsonPayload.instance.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.message read_only_udm.metadata.product_event_type, read_only_udm.principal.application, read_only_udm.target.process.pid, read_only_udm.target.user.userid, read_only_udm.principal.hostname, read_only_udm.target.process.command_line, read_only_udm.security_result.description, read_only_udm.principal.process.file.full_path Grok パターンと条件ロジックに基づいてパースされ、さまざまなフィールドにマッピングされます。
jsonPayload.rule_details.action read_only_udm.security_result.action セキュリティ結果のアクション(ALLOW/BLOCK)を決定し、マッピングするために使用されます。
jsonPayload.rule_details.direction read_only_udm.network.direction ネットワークの方向(INBOUND、OUTBOUND、UNKNOWN_DIRECTION)を決定してマッピングするために使用されます。
jsonPayload.rule_details.priority read_only_udm.security_result.priority_details 変換中にエラーが発生しなかった場合は、文字列に変換され、マッピングされます。
jsonPayload.rule_details.reference read_only_udm.security_result.rule_labels.value ルールラベル値にマッピングされます。
jsonPayload.src_instance.project_id read_only_udm.principal.resource.product_object_id jsonPayload.src_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.src_instance.region read_only_udm.principal.location.name jsonPayload.src_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.src_instance.vm_name read_only_udm.principal.resource.attribute.cloud.project.name jsonPayload.src_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.src_instance.zone read_only_udm.principal.resource.attribute.cloud.availability_zone jsonPayload.src_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.src_vpc.project_id read_only_udm.principal.cloud.vpc.product_object_id 関連するフィールドをマッピングする条件として使用されます。
jsonPayload.src_vpc.subnetwork_name read_only_udm.principal.cloud.vpc.name jsonPayload.src_vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.vpc.project_id read_only_udm.target.cloud.vpc.product_object_id jsonPayload.vpc.project_id が存在する場合に条件付きでマッピングされます。
jsonPayload.vpc.subnetwork_name read_only_udm.target.cloud.vpc.name jsonPayload.vpc.project_id が存在する場合に条件付きでマッピングされます。
logName read_only_udm.security_result.category_details 直接マッピングされます。
resource.labels.instance_id read_only_udm.principal.resource.product_object_id、read_only_udm.principal.asset_id 条件付きでマッピングされます。type が「PROCTITLE」の場合、アセット ID の作成に使用されます。
resource.labels.location read_only_udm.principal.location.name フィールドが存在する場合は条件付きでマッピングされます。
resource.labels.project_id read_only_udm.metadata.product_deployment_id フィールドが存在する場合は条件付きでマッピングされます。
resource.labels.zone read_only_udm.principal.resource.attribute.cloud.availability_zone フィールドが存在する場合は条件付きでマッピングされます。
resource.type read_only_udm.metadata.event_type イベントタイプを特定し、マッピングするために使用されます。
timestamp read_only_udm.metadata.event_timestamp 直接マッピングされます。
type read_only_udm.metadata.product_event_type、read_only_udm.metadata.event_type、read_only_udm.extensions.auth.type イベントタイプ、プロダクトイベントのタイプ、認証タイプを特定し、それに応じてマッピングするために使用されます。
read_only_udm.metadata.event_type このロジックは、「type」フィールドとその他の条件に基づいてイベントタイプを設定します。特定の一致が見つからない場合、デフォルトは「GENERIC_EVENT」になります。
read_only_udm.metadata.log_type 定数値「GCP_COMPUTE」。
read_only_udm.metadata.vendor_name 定数値「Google Cloud Platform」。
read_only_udm.metadata.product_name 定数値「Google Cloud Platform」。
read_only_udm.security_result.rule_labels.key 定数値「参照」。
read_only_udm.target.cloud.vpc.resource_type jsonPayload.instance.project_id または jsonPayload.dest_vpc.project_id が存在する場合は、条件付きで「VPC_NETWORK」に設定されます。
read_only_udm.target.resource.attribute.cloud.environment jsonPayload.instance.project_id、jsonPayload.dest_vpc.project_id、または jsonPayload.src_vpc.project_id が存在する場合は、条件付きで「GOOGLE_CLOUD_PLATFORM」に設定されます。
read_only_udm.principal.administrative_domain 「kv_data」フィールドから抽出された「Account Domain」フィールドからマッピングされます。
read_only_udm.principal.user.user_display_name 「kv_data」フィールドから抽出された「Account Name」フィールドからマッピングされます。
read_only_udm.target.resource.name 「kv_data」フィールドから抽出された「Object Name」フィールドからマッピングされます。
read_only_udm.target.resource.type 「kv_data」フィールドから抽出された「Object Type」フィールドからマッピングされます。
read_only_udm.principal.process.pid 「kv_data」フィールドから抽出された「プロセス ID」フィールドからマッピングされます。
read_only_udm.target.user.windows_sid 「kv_data」フィールドから抽出された「Security ID」フィールドからマッピングされます。
read_only_udm.network.session_id 「auid」フィールドからマッピングされます。

変更点

2024-06-18

機能強化:

  • 「file」を「principal.file.names」にマッピングしました。
  • 「function」を「principal.resource.attribute.labels」にマッピングしました。
  • 「line」を「principal.resource.attribute.labels」にマッピングしました。
  • 「timestamp」を「event_timestamp」にマッピングしました。

2023-02-24

バグの修正:

  • UI での検索を容易にするため、「asset_id」のマッピングを追加しました。「asset:resource.labels.instance_id」が「principal.asset_id」にマッピングされます。

2022-06-16

機能強化:

  • 次の新しいフィールドのマッピングを追加しました。jsonPayload.Message(syslog)。
  • プロセス名を principal.application に変更。
  • プロセス ID は principal.process.pid にマッピングされます。
  • アカウントのドメインを principal.administrative_domain に変更。
  • Account Name を principal.user.user_display_name に変更します。
  • オブジェクト名を target.resource.name に変更します。
  • Object Type を target.resource.type に変更。
  • セキュリティ ID は target.user.windows_sid にマッピングされます。
  • addr を principal.ip に変更します。
  • auid を network.session_id に変更しました。
  • Linux ログの「LINUX - %{type}」、Windows ログの「WINDOWS event log」を metadata.product_event_type にマッピングしました。
  • pid を target.process.pid に変更します。
  • acct を target.user.userid に変更します。
  • exe を target.process.command_line にマッピングします。
  • file_path を principal.process.file.full_path に変更します。
  • desc のマッピングを metadata.description から security_result.description に変更しました。

2022-05-23

機能強化:

  • 次の新しいフィールドのマッピングを追加しました。
  • jsonPayload.message を syslog として送信します。
  • resource.labels.zone を principal.resource.attribute.cloud.availability_zone に変更しました。
  • resource.labels.location を principal.location.name に変更しました。
  • resource.labels.project_id を metadata.product_deployment_id に変更しました。
  • resource.labels.instance_id を principal.resource.product_object_id に変更しました。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。