Cloud Run のログを収集する

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

このガイドでは、Cloud Storage を使用して Cloud Run ログを Google Security Operations にエクスポートする方法について説明します。パーサーは JSON ログからフィールドを抽出し、統合データモデル(UDM)に変換します。HTTP リクエストデータやシステム監査ログなど、さまざまなログ形式を処理し、関連するフィールドを UDM にマッピングします。また、Cloud Run に固有のラベルとメタデータでデータを拡充します。

始める前に

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

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

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

    [バケット] に移動

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

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

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

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

      3. バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。

      4. [ラベルを追加] をクリックし、ラベルのキーと値を指定します。

    2. [データの保存場所の選択] セクションで、次の操作を行います。

      1. ロケーション タイプを選択してください。
      2. ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。

      3. クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。

    3. [データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。

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

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

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

Cloud Run でログのエクスポートを構成する

  1. Google Cloud [ようこそ] ページで、[Cloud Run] アイコンをクリックします。
  2. 上部の検索バーで「ロギング」を検索し、Enter キーを押します。
  3. ログ エクスプローラで、[ログ名] で [Cloud Run] を選択し、[適用] をクリックしてログをフィルタします。
  4. メニューから [その他の操作] > [シンクの作成] をクリックします。
  5. 次の構成を指定します。
    1. シンクの詳細: 名前と説明を入力します。
    2. [次へ] をクリックします。
    3. シンクのエクスポート先: [Cloud Storage バケット] を選択します。
    4. Cloud Storage バケット: 先ほど作成したバケットを選択するか、新しいバケットを作成します。
    5. [次へ] をクリックします。
    6. シンクに含めるログを選択する: Cloud Storage バケットでオプションを選択すると、デフォルトのログが入力されます。
    7. [次へ] をクリックします。
    8. 省略可: [シンクに含めないログの選択] で、シンクに含めないログを選択します。
  6. [シンクを作成] をクリックします。

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

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Cloud Run Logs)。
  4. [Source type] として [Google Cloud Storage] を選択します。
  5. [Log type] として [GCP Cloud Run] を選択します。
  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 マッピング ロジック
httpRequest.latency target.resource.attribute.labels.[] 未加工ログの httpRequest.latency の値は、target.resource.attribute.labels 内のキー http_request_latency を持つラベルの値として使用されます。
httpRequest.protocol network.application_protocol httpRequest.protocolHTTP が含まれている場合、UDM フィールドは HTTP に設定されます。
httpRequest.remoteIp principal.asset.ip 未加工ログの httpRequest.remoteIp の値が使用されます。
httpRequest.remoteIp principal.ip 未加工ログの httpRequest.remoteIp の値が使用されます。
httpRequest.requestMethod network.http.method 未加工ログの httpRequest.requestMethod の値が使用されます。
httpRequest.requestSize network.sent_bytes 未加工ログの httpRequest.requestSize の値は符号なし整数に変換され、使用されます。
httpRequest.requestUrl target.url 未加工ログの httpRequest.requestUrl の値が使用されます。
httpRequest.responseSize network.received_bytes 未加工ログの httpRequest.responseSize の値は符号なし整数に変換され、使用されます。
httpRequest.serverIp target.asset.ip 未加工ログの httpRequest.serverIp の値が使用されます。
httpRequest.serverIp target.ip 未加工ログの httpRequest.serverIp の値が使用されます。
httpRequest.status network.http.response_code 未加工ログの httpRequest.status の値は整数に変換され、使用されます。
httpRequest.userAgent network.http.parsed_user_agent 未加工ログの httpRequest.userAgent の値は、ユーザー エージェント文字列として解析されます。
httpRequest.userAgent network.http.user_agent 未加工ログの httpRequest.userAgent の値が使用されます。
insertId metadata.product_log_id 未加工ログの insertId の値が使用されます。
labels.instanceId additional.fields.[] labels.instanceId の値は、additional.fields 内のキー instanceId を持つラベルの値として使用されます。
labels.run.googleapis.com_execution_name additional.fields.[] labels.run.googleapis.com_execution_name の値は、additional.fields 内のキー execution_name を持つラベルの値として使用されます。
labels.run.googleapis.com_task_attempt additional.fields.[] labels.run.googleapis.com_task_attempt の値は、additional.fields 内のキー task_attempt を持つラベルの値として使用されます。
labels.run.googleapis.com_task_index additional.fields.[] labels.run.googleapis.com_task_index の値は、additional.fields 内のキー task_index を持つラベルの値として使用されます。
logName metadata.product_event_type 未加工ログの logName の値が使用されます。
resource.labels.configuration_name target.resource.attribute.labels.[] resource.labels.configuration_name の値は、target.resource.attribute.labels 内のキー configuration_name を持つラベルの値として使用されます。
resource.labels.job_name additional.fields.[] resource.labels.job_name の値は、additional.fields 内のキー job_name を持つラベルの値として使用されます。
resource.labels.location target.location.name 未加工ログの resource.labels.location の値が使用されます。
resource.labels.project_id target.resource.attribute.labels.[] resource.labels.project_id の値は、target.resource.attribute.labels 内のキー project_id を持つラベルの値として使用されます。
resource.labels.revision_name target.resource.attribute.labels.[] resource.labels.revision_name の値は、target.resource.attribute.labels 内のキー revision_name を持つラベルの値として使用されます。
resource.labels.service_name target.resource.attribute.labels.[] resource.labels.service_name の値は、target.resource.attribute.labels 内のキー service_name を持つラベルの値として使用されます。
resource.type target.resource.resource_subtype 未加工ログの resource.type の値が使用されます。
severity security_result.severity severity の値が Info と一致する場合(大文字と小文字は区別されません)、UDM フィールドは INFORMATIONAL に設定されます。
textPayload additional.fields.[] textPayload の値は、additional.fields 内のキー Textpayload を持つラベルの値として使用されます。
timestamp metadata.event_timestamp 未加工ログの timestamp の値はタイムスタンプとして解析されます。
timestamp timestamp 未加工ログの timestamp の値はタイムスタンプとして解析されます。特定のフィールドの有無に基づいてパーサー ロジックによって決定されます。デフォルトは GENERIC_EVENT です。has_principal_iphas_target_iphttpRequest.protocolHTTP と一致する場合、NETWORK_HTTP に設定されます。GCP_RUN にハードコードされています。GCP_RUN にハードコードされています。Google Cloud Platform にハードコードされています。GOOGLE_CLOUD_PLATFORM にハードコードされています。

変更点

2024-01-22

機能強化:

  • logName が projects/1234/logs/run.googleapis.com%2Fstderrprojects/1234/logs/run.googleapis.com%2Fstdoutprojects/1234/logs/run.googleapis.com%2Frequestsprojects/1234/logs/run.googleapis.com%2Fvarlog%2Fsystem のログのマッピングを追加しました。
  • httpRequest.latencytarget.resource.attribute.labels にマッピングしました。
  • resource.labels.configuration_nametarget.resource.attribute.labels にマッピングしました。
  • resource.labels.revision_nametarget.resource.attribute.labels にマッピングしました。
  • resource.labels.service_nametarget.resource.attribute.labels にマッピングしました。
  • httpRequest.protocolnetwork.application_protocol にマッピングしました。
  • httpRequest.requestMethodnetwork.http.method にマッピングしました。
  • httpRequest.requestSizenetwork.sent_bytes にマッピングしました。
  • httpRequest.requestUrltarget.url にマッピングしました。
  • httpRequest.responseSizenetwork.received_bytes にマッピングしました。
  • httpRequest.remoteIpprincipal.ipprincipal.asset.ip にマッピングしました。
  • httpRequest.serverIp を target.ipandtarget.asset.ip` にマッピングしました。
  • httpRequest.statusnetwork.http.response_code にマッピングしました。
  • httpRequest.userAgentnetwork.http.user_agent にマッピングしました。
  • logNamemetadata.product_event_type にマッピングしました。
  • textPayloadadditional.fields にマッピングしました。
  • labels.run.googleapis.com_execution_nameadditional.fields にマッピングしました。
  • labels.run.googleapis.com_task_attemptadditional.fields にマッピングしました。
  • labels.run.googleapis.com_task_indexadditional.fields にマッピングしました。
  • labels.instanceIdadditional.fields にマッピングしました。
  • resource.labels.job_nameadditional.fields にマッピングしました。

2023-04-13

機能強化:

  • target.resource.attribute.cloud.environmentGOOGLE_CLOUD_PLATFORM に設定する。
  • target.resource.name を完全なリソース名の値に設定します。

2022-07-13

  • パーサーを新しく作成しました。

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