Google Cloud でのセキュリティ ログ分析

Last reviewed 2022-12-14 UTC

このガイドでは、セキュリティ担当者は、セキュリティ分析で使用する Google Cloud ログをオンボーディングする方法について説明します。セキュリティ分析を実施することで、マルウェア、フィッシング、ランサムウェア、適切に構成されていないアセットなどの脅威を防止、検出、対処できます。

このガイドでは、次の方法について説明します。

  • ログの分析を有効にします。
  • これらのログを、BigQueryChronicle、サードパーティのセキュリティ情報やイベント管理(SIEM)テクノロジーなどの任意の分析ツールにエクスポートします。
  • コミュニティ セキュリティ分析(CSA)のプロジェクトでサンプルクエリを使用して、ログを分析してクラウドの使用状況を監査し、データとワークロードに対する潜在的な脅威を検出します。

このガイドの情報は、Google Cloud の自律性セキュリティ オペレーションの一部です。これには、脅威検出機能を向上させるために、検出と対応のプラクティスとエンジニアリング分析のエンジニアリング主導の変換が含まれます。

このガイドでは、分析するデータソースをログで提供します。ただし、このガイドのコンセプトを適用して、Security Command Center のセキュリティ結果など、Google Cloud の他のセキュリティ関連データを分析できます。Security Command Center Premium には、定期的に更新されるマネージド検出器のリストがあります。これらは、システム内の脅威、脆弱性、構成ミスをほぼリアルタイムで識別するように設計されています。これらのコマンドを Security Command Center から分析し、このガイドで説明するセキュリティ分析ツールに取り込んだログと関連付けることで、潜在的なセキュリティ上の脅威をより広範囲に把握できます。

次の図は、セキュリティ データソース、セキュリティ分析ツール、CSA クエリがどのように連携するかを示しています。

セキュリティ分析のツールとコンテンツ。

この図は、Cloud Logging からのログ、Cloud Asset Inventory からのアセットの変更、Security Command Center からのセキュリティの検出結果から始まります。この図は、選択したセキュリティ データソース(BigQuery、Chronicle、サードパーティの SIEM)にエクスポートされているセキュリティ データソースを示しています。最後に、この図では、分析ツールで CSA クエリを使用して、エクスポートされたセキュリティ データソースを分析しています。

セキュリティ ログ分析のワークフロー

このセクションでは、Google Cloud でセキュリティ ログ分析を設定する手順について説明します。セキュリティ ログ分析を設定する最初のステップは、分析するログを有効にすることです。次に、ログをエクスポートする必要があります。最後に、ログを分析する必要があります。次の図は、この 3 つのステップを図示しています。

セキュリティ ログ分析を設定する 3 つのステップ:(1)ログを有効にする、(2)ログをエクスポートする、(3)ログを分析する。

プロセスの各ステップは、次のリストで説明するように、さまざまなコンポーネントで構成されています。

  • ログを有効にする: Google Cloud では多くのセキュリティ ログを利用できます。各ログには、特定のセキュリティ上の疑問の解決に役立つさまざまな情報があります。Cloud Audit Logs などの一部のログはデフォルトで有効になります。その他は、Cloud Logging で追加の取り込みコストが発生するため、手動で有効にする必要があります。したがって、ワークフローの最初のステップは、セキュリティ分析のニーズに最も関連性の高いセキュリティ ログに優先順位を付けて、それらの特定のログを個別に有効にすることです。

    可視性と脅威検出のカバレッジの観点からログを評価できるように、このガイドにはログスコープ ツールが含まれています。このツールは、MITRE ATT&CK® Matrix for Enterprise で関連するログを戦術と技術にマッピングします。このツールは、Security Command Center の Event Threat Detection ルールを、依存するログにマッピングします。ログスコープ ツールを使用すると、使用する分析ツールに関係なくログを評価できます。

  • ログをエクスポートする: 分析するログを特定して有効にしたら、BigQuery、Chronicle、サードパーティの SIEM テクノロジーなどの分析ツールにログをエクスポートします。

    ログをエクスポートする方法は、使用する分析ツールによって異なります。このガイドでは、さまざまなエクスポート オプションについて簡単に説明し、ログシンクを使用して BigQuery にログをエクスポートする方法を示します。

  • ログを分析する: ログを分析ツールにエクスポートしたら、次のステップでは、エクスポートされたログを分析して、潜在的なセキュリティ上の脅威を特定します。エクスポートされたログをどのように分析するかは、使用する分析ツールによって異なります。BigQuery データセットを使用する場合は、SQL クエリを使用してログを分析できます。Chronicle を使用している場合は、YARA-L ルールを使用してログを分析します。サードパーティの SIEM ツールを使用している場合は、そのツールで指定されたクエリ言語を使用します。

    このガイドでは、BigQuery データセットまたはサードパーティ製 SIEM ツールのログを分析するために使用できる SQL クエリについて説明します。このガイドの SQL クエリは、コミュニティ セキュリティ分析(CSA)プロジェクトから提供されています。CSA は、Google Cloud ログの分析を開始するために再利用できる事前構築済みのクエリとルールのベースラインを提供するように設計されたオープンソースのセキュリティ分析のオープンソース セットです。

次のセクションでは、セキュリティ ログ分析ワークフローの各ステップを設定して適用する方法について詳しく説明します。

ログを有効化

ログを有効にするプロセス全体は次のとおりです。

  • このガイドのログスコープ ツールを使用して、エクスポートするログを特定する。
  • ログスコープ ツールによって生成されたログフィルタを記録し、後でログシンクを構成するときに使用する。
  • 選択した各ログまたはサービスに対してロギングを有効にする。

ロギングは、すべてのサービスではデフォルトで有効になりません。ログスコープ ツールでログを選択しても、それらが自動的に有効になることはありません。関心のある特定のサービスに対して、適切なレベルのロギングが有効になっていることを確認する必要があります。サービスによっては、このセクションで後述するように、Cloud Audit Logs の対応するデータアクセス監査ログとプラットフォーム ログの両方を有効にする必要があります。

ログスコープ ツールを使用してログを特定する

ログスコープ ツールは、次のインタラクティブなテーブルとログフィルタで構成されます。このツールは、Cloud Audit Logs、アクセスの透明性ログ、ネットワーク ログ、複数のプラットフォーム ログなど、Google Cloud 全体のセキュリティ関連の重要なログを一覧表示します。このツールを使用するには、まずセキュリティとコンプライアンスのニーズに基づいて、エクスポートして分析するログを選択します。選択したログが、ツールによって生成されるログフィルタに追加されます。

選択するログを評価するために、このツールによって各ログタイプが次の領域にマッピングされます。

ログ範囲の設定ツール

このセクションのインタラクティブ テーブルは、ログスコーピング ツールとして機能します。ツールが生成したログフィルタは、表に続く [自動生成ログフィルタ] セクションに表示されます。このツールを使用して、エクスポートするログを特定して選択します。

  • ログスコープ ツールでログを選択または削除するには、ログ名の横にある切り替えボタンをクリックします。
  • すべてのログを選択または削除するには、[ログタイプ] 見出しの横にある切り替えボタンをクリックします。
  • 各ログタイプでモニタリングできる MITRE ATT&CK 手法を確認するには、[MITRE ATT&CK 戦術と手法] の横にある をクリックします。


ログフィルタを記録する

ログスコープ ツールによって自動的に生成されるログフィルタには、ツールで選択したすべてのログが含まれます。フィルタをそのまま使用することも、要件に合わせてログフィルタをさらに絞り込むこともできます。たとえば、1 つ以上の特定のプロジェクトにあるリソースのみをフィルタリング(または除外)できます。ロギング要件を満たすログフィルタを作成したら、ログのエクスポート時に使用するためにフィルタを保存する必要があります。たとえば、次のように、テキスト エディタでフィルタを保存したり、環境変数に保存できます。

  1. ログ スコープ ツールを使用して、エクスポートするログを選択します。
  2. ツールに続く [自動生成ログフィルタ] セクションで、ログフィルタのコードをコピーします。
  3. 省略可: フィルタを絞り込むために、コピーしたコードを編集します。
  4. Cloud Shell で、ログフィルタを保存する変数を作成します。

    export LOG_FILTER='LOG_FILTER'
    

    LOG_FILTER は、ログフィルタのコードに置き換えます。

サービス固有のプラットフォーム ログを有効にする

ログスコープ ツールで選択した各プラットフォーム ログに、サービスごとに(通常はリソースレベルで)これらのログを有効にする必要があります。たとえば、Cloud DNS ログは VPC ネットワーク レベルで有効になります。同様に、VPC フローログはサブネット内のすべての VM に対してサブネット レベルで有効になり、ファイアウォール ルールロギングのログは個々のファイアウォール ルールレベルで有効になります。

プラットフォーム ログごとに、ロギングを有効にする手順が異なります。ただし、ログスコープ ツールを使用すると、各プラットフォーム ログに関連する手順をすばやく開くことができます。

特定のプラットフォーム ログのロギングを有効にする手順は次のとおりです。

  1. ログスコープ ツールで、有効にするプラットフォーム ログを見つけます。
  2. [デフォルトで有効] 列で、そのログに対応する [有効にする] リンクをクリックします。リンクをクリックすると、そのサービスのロギングを有効にする方法の詳細が表示されます。

データアクセス監査ログを有効にする

ログスコーピング ツールでわかるように、Cloud Audit Logs のデータアクセス監査ログは広範な脅威検出を提供します。ただし、ボリュームは非常に大きくなる可能性があります。このため、データアクセス監査ログを有効にすると、これらのログの取り込み、保存、エクスポート、処理に関連する追加料金が発生する可能性があります。これらの追加料金は、分析プロセス全体で Cloud Logging に関連する料金から、セキュリティ分析ツールに関連する料金まで発生します。このセクションでは、これらのログを有効にする方法と、価値とコストのトレードオフに役立つベスト プラクティスについて説明します。

データアクセス監査ログは、BigQuery を除き、デフォルトで無効になっています。BigQuery 以外の Google Cloud サービスのデータアクセス監査ログを構成するには、Google Cloud コンソールを使用するか、Cloud CLI を使用 して、Identity and Access Management(IAM)ポリシー オブジェクトを編集します。データアクセス監査ログを有効にする場合は、記録されるオペレーションのタイプを構成することもできます。データアクセス監査ログには次の 3 つのタイプがあります。

  • ADMIN_READ: メタデータまたは構成情報を読み取るオペレーションを記録します。
  • DATA_READ: ユーザー提供データを読み取るオペレーションを記録します。
  • DATA_WRITE: ユーザー提供データを書き込むオペレーションを記録します。

メタデータまたは構成情報を書き込むオペレーションである ADMIN_WRITE オペレーションの記録は構成できません。ADMIN_WRITE オペレーションは、Cloud Audit Logs の管理アクティビティ監査ログに含まれるため、無効にすることはできません。

データアクセス監査ログの量を管理する

データアクセス監査ログを有効にする場合は、セキュリティの可視性の観点から価値を最大化し、費用と管理オーバーヘッドを制限することが目標です。この目標を達成するため、次のようにして価値の低い大量のログを除外することをおすすめします。

  • 機密性の高いワークロード、キー、データをホストするサービスなど、関連サービスを優先します。他のサービスよりも優先できるサービスの例については、データアクセス監査ログの構成の例をご覧ください。
  • デベロッパーやステージング環境をホストするプロジェクトではなく、本番環境ワークロードをホストするプロジェクトなど、関連するプロジェクトを優先します。特定のプロジェクトのすべてのログを除外するには、シンクのログフィルタに次の式を追加します。PROJECT_ID は、すべてのログを除外するプロジェクトの ID に置き換えます。

    プロジェクト ログフィルタの式
    特定のプロジェクトのすべてのログを除外する
    
    NOT logName =~ "^projects/PROJECT_ID"
        
  • 記録するオペレーションを最小限に抑えるために、