Google Cloud DNS Threat Detector のログを収集する

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

このドキュメントでは、Google Cloud Storage V2 を使用して Google Cloud DNS Threat Detector ログを Google Security Operations に取り込む方法について説明します。

Infoblox を活用した DNS Armor は、Google Cloud ワークロードに DNS レイヤのセキュリティを提供するフルマネージド サービスです。高度な脅威検出機能は、運用上の複雑さやパフォーマンスのオーバーヘッドを増やすことなく、攻撃チェーンの最も早い段階である DNS クエリで悪意のあるアクティビティを検出するように設計されています。脅威が検出された場合は、Cloud Logging から DNS 脅威に関する実用的な分析情報を取得できます。

プロジェクトで DNS 脅威検出機能を有効にすると、DNS Armor はインターネット宛ての DNS クエリログを Infoblox が提供する Google Cloud ベースの分析エンジンに安全に送信します。このエンジンは、脅威インテリジェンス フィードと AI ベースの振る舞い分析を組み合わせて脅威を特定します。検出された悪意のあるアクティビティは DNS Armor 脅威ログを生成します。そのログがプロジェクトに返され、Cloud Logging に書き込まれます。これにより、ユーザーはログを表示して脅威に対処することができます。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス。
  • Cloud Storage API が有効になっている GCP プロジェクト。
  • GCS バケットを作成、管理する権限。
  • GCS バケットの IAM ポリシーを管理する権限。
  • プロジェクトで Network Security API が有効になっている。
  • DNS 脅威検出機能を有効にするために必要な IAM ロール。
  • DNS 脅威ログを表示する権限: resourcemanager.projects.getresourcemanager.projects.listnetworksecurity.dnsThreatDetectors.getnetworksecurity.dnsThreatDetectors.list、またはロール roles/networksecurity.dnsThreatDetectorViewerroles/logging.viewer

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

  1. Google Cloud Console に移動します。
  2. プロジェクトを選択するか、新しいプロジェクトを作成します。
  3. ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
  4. [バケットを作成] をクリックします。
  5. 次の構成情報を提供してください。

    設定
    バケットに名前を付ける グローバルに一意の名前(dns-threat-detector-logs など)を入力します。
    ロケーション タイプ ニーズに基づいて選択します(リージョン、デュアルリージョン、マルチリージョン)。
    ロケーション ロケーションを選択します(例: us-central1)。
    ストレージ クラス Standard(頻繁にアクセスされるログにおすすめ)
    アクセス制御 均一(推奨)
    保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする
  6. [作成] をクリックします。

DNS 脅威検出機能の作成

このセクションでは、VPC ネットワークで悪意のあるインターネット宛ての DNS アクティビティをモニタリングする DNS 脅威検出機能を作成する方法について説明します。

プロジェクトで有効にできる DNS 脅威検出機能は 1 つだけです。

Google Cloud コンソールを使用する

  1. Google Cloud コンソールで、[高度な脅威検出] ページに移動します。
  2. [DNS 脅威検出機能を作成します] をクリックします。
  3. DNS 脅威検出機能の名前を入力します。
  4. [プロジェクト内のすべての VPC ネットワーク] を選択します。
  5. [作成] をクリックします。

gcloud コマンドライン ツールを使用する

または、gcloud コマンドを使用して DNS 脅威検出機能を作成します。

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--project=PROJECT_ID \
--provider="infoblox"

置き換えます。 - my-dns-threat-detector: DNS 脅威検出機能の名前。- PROJECT_ID: プロジェクト ID。

DNS Threat Detector ログを GCS にエクスポートするように Cloud Logging を構成する

DNS Armor の脅威ログは Cloud Logging に書き込まれます。これらのログを GCS バケットにエクスポートするようにログシンクを構成する必要があります。

  1. Google Cloud コンソールで、[ロギング] > [ログルーター] に移動します。
  2. [シンクを作成] をクリックします。
  3. 次の構成の詳細を指定します。
    • シンク名: わかりやすい名前を入力します(例: dns-threat-detector-to-gcs)。
    • シンクの説明: 省略可能な説明。
  4. [次へ] をクリックします。
  5. [シンクサービスの選択] セクションで、次の操作を行います。
    • シンクサービス: [Cloud Storage バケット] を選択します。
    • Cloud Storage バケットを選択: プルダウンからバケット(dns-threat-detector-logs など)を選択します。
  6. [次へ] をクリックします。
  7. [シンクに含めるログの選択] セクションに、次のフィルタ クエリを入力します。

    resource.type="networksecurity.googleapis.com/DnsThreatDetector"
    logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"
    

PROJECT_ID は実際の GCP プロジェクト ID に置き換えます。

  1. [次へ] をクリックします。
  2. 構成を確認して、[シンクを作成] をクリックします。

gcloud コマンドライン ツールを使用する

または、gcloud コマンドを使用してログシンクを作成します。

gcloud logging sinks create dns-threat-detector-to-gcs \
    gs://dns-threat-detector-logs \
    --log-filter='resource.type="networksecurity.googleapis.com/DnsThreatDetector" AND logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"' \
    --project=PROJECT_ID

次のように置き換えます。 - dns-threat-detector-logs: GCS バケット名。- PROJECT_ID: GCP プロジェクト ID。

Google SecOps サービス アカウントを取得する

Google SecOps は、一意のサービス アカウントを使用して GCS バケットからデータを読み取ります。このサービス アカウントにバケットへのアクセス権を付与する必要があります。

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

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: GCP DNS Threat Detector Logs)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [Google Cloud DNS Threat Detector] を選択します。

  7. [サービス アカウントを取得する] をクリックします。

  8. 一意のサービス アカウント メールアドレスが表示されます(例:)。

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. このメールアドレスをコピーします。次のステップでこれを使用します。

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

  11. 次の入力パラメータの値を指定します。

    • ストレージ バケットの URL: 接頭辞パスを含む GCS バケット URI を入力します。

      gs://dns-threat-detector-logs/
      

      次のように置き換えます。

      • dns-threat-detector-logs: GCS バケット名。
    • Source deletion option: 必要に応じて削除オプションを選択します。
      • なし: 転送後にファイルを削除しません(テストにおすすめ)。
      • 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
      • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。
    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  12. [次へ] をクリックします。

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

Google SecOps サービス アカウントに IAM 権限を付与する

Google SecOps サービス アカウントには、GCS バケットに対する Storage オブジェクト閲覧者ロールが必要です。

  1. [Cloud Storage] > [バケット] に移動します。
  2. バケット名(dns-threat-detector-logs など)をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成の詳細を指定します。
    • プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
    • ロールを割り当てる: [ストレージ オブジェクト閲覧者] を選択します。
  6. [保存] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
record.jsonPayload.dnsQuery.responseCode、record.jsonPayload.dnsQuery.authAnswer、record.jsonPayload.dnsQuery.queryTime、record.jsonPayload.partnerId、record.jsonPayload.detectionTime、record.logName additional.fields 値が追加マップにコピーされ、空でない場合は value.string_value を持つマップ エントリとしてマージされます。
record.receiveTimestamp metadata.collected_timestamp ISO8601 タイムスタンプとして解析されます
metadata.event_type has_principal と has_target の場合は「NETWORK_CONNECTION」、has_principal の場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定します。
record.timestamp metadata.event_timestamp ISO8601 タイムスタンプとして解析されます
record.insertId metadata.product_log_id 空でない場合、値が直接コピーされます
record.jsonPayload.dnsQuery.rdata network.dns.answers 値を answer.data にコピーし、空でない場合は配列として統合
record.jsonPayload.dnsQuery.queryName、record.jsonPayload.dnsQuery.queryType network.dns.questions queryName から questions.name、queryType 文字列から整数にマッピングされた questions.type を取得し、空でない場合は配列としてマージ
record.jsonPayload.dnsQuery.responseCode network.dns.response_code 事前定義されたテーブルを使用して文字列から整数にマッピング
record.jsonPayload.dnsQuery.protocol network.ip_protocol 空でない場合、値が直接コピーされます
record.jsonPayload.dnsQuery.sourceIp principal.asset.ip 空でない場合、値が直接コピーされます
record.jsonPayload.dnsQuery.sourceIp principal.ip 空でない場合、値が直接コピーされます
record.jsonPayload.dnsQuery.location principal.location.country_or_region 空でない場合、値が直接コピーされます
record.resource.labels.location principal.location.name 空でない場合、値が直接コピーされます
record.jsonPayload.dnsQuery.vmProjectNumber、record.jsonPayload.dnsQuery.projectNumber principal.resource.attribute.labels 値が追加マップにコピーされ、空でない場合はマップ エントリとしてマージされます。
record.jsonPayload.dnsQuery.vmInstanceId principal.resource.id 空でない場合、値が直接コピーされます
record.resource.labels.id principal.resource.product_object_id 空でない場合、値が直接コピーされます
record.resource.type principal.resource.type 空でない場合、値が直接コピーされます
security_result 構築された security_result マップから統合
record.jsonPayload.threatInfo.confidence security_result.confidence (?i)Low の場合は LOW_CONFIDENCE、(?i)Medium の場合は MEDIUM_CONFIDENCE、(?i)High の場合は HIGH_CONFIDENCE にマッピングされます。
record.jsonPayload.threatInfo.threatDescription security_result.description 空でない場合、値が直接コピーされます
record.jsonPayload.threatInfo.threatIndicatorType、record.jsonPayload.threatInfo.threatIndicator、record.jsonPayload.threatInfo.threatFeed、record.jsonPayload.threatInfo.category、record.jsonPayload.threatInfo.type、record.jsonPayload.threatInfo.threat、record.jsonPayload.threatInfo.severity、record.resource.labels.resource_container security_result.detection_fields 値が追加マップにコピーされ、空でない場合はマップ エントリとしてマージされます。
record.severity security_result.severity (?i)Low の場合は LOW に、(?i)(Informational|Info) の場合は INFORMATIONAL に、(?i)Medium の場合は MEDIUM に、(?i)Critical の場合は CRITICAL に、(?i)High の場合は HIGH にマッピングされます。
record.jsonPayload.threatInfo.threatId security_result.threat_id 空でない場合、値が直接コピーされます
record.jsonPayload.dnsQuery.destinationIp target.asset.ip 空でない場合、値が直接コピーされます
record.jsonPayload.dnsQuery.destinationIp target.ip 空でない場合、値が直接コピーされます
metadata.vendor_name 「Google Cloud」に設定
metadata.product_name 「Google Cloud DNS Threat Detector」に設定します。

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