概要

Datadog Cloud SIEM は、Datadog で処理されたすべてのログに検出ルールを適用し、標的型攻撃や脅威インテリジェンスに記載された IP がシステムと通信している、あるいは安全でないリソース変更などの脅威を検出します。この脅威は、トリアージするためにセキュリティシグナルエクスプローラーでセキュリティシグナルとして表面化されます。

Google Cloud DataflowDatadog テンプレートを使用して、Google Cloud サービスから Datadog にログを転送します。このガイドでは、Google Cloud の監査ログを使用して脅威を検出するために、次の手順について説明します。

  1. Data Access の監査ログを有効にする
  2. Google Cloud のパブリッシュ/サブスクリプション (Pub/Sub) トピックとプルサブスクリプションを作成して、構成済みのログシンクからログを受信します。
  3. カスタム Dataflow ワーカーのサービスアカウントを作成します。
  4. ログを Pub/Sub に公開するためのログシンクを作成します。
  5. Dataflow ジョブを作成して実行します。
  6. Cloud SIEM でセキュリティシグナルのトリアージを行う

Pub/Sub Push サブスクリプションを使用した Google Cloud のログ収集は、以下の理由で非推奨となっています。

  • Google Cloud VPC を使用している場合、Push サブスクリプションは VPC 外部のエンドポイントにアクセスできない。
  • Push サブスクリプションは、イベントの圧縮やバッチ処理を提供しないため、少ないログ量にのみ適している。

Push サブスクリプションのドキュメントは、トラブルシューティングやレガシーセットアップの変更のためにのみ維持されています。代わりに、Datadog Dataflow テンプレートを使用して Pull サブスクリプションで Google Cloud ログを Datadog に転送してください。

Data Access の監査ログを有効にする

  1. IAM & Admin Console > Audit Log に移動します。
  2. データアクセスログを有効にするサービスを選択します。
  3. Log Types パネルで、Admin ReadData ReadData Write を有効にします。
  4. Save をクリックします。

新サービスのデフォルト構成を変更する

新しい Google Cloud サービスが追加された場合、デフォルトの監査構成を引き継ぎます。

新しい Google Cloud サービスに対して Data Access の監査ログがキャプチャされるようにするには、デフォルトの監査構成を変更します。

  1. IAM & Admin Console > Audit Log に移動します。
  2. Admin ReadData ReadData Write を有効にします。
  3. Save をクリックします。

Google Cloud のパブリッシュ/サブスクリプション (Pub/Sub) システムを作成する

  1. Pub/Sub > Topics に移動します。
  2. Create Topic をクリックします。
  3. わかりやすいトピック名を入力します。例えば、export-audit-logs-to-datadog とします。
  4. Add a default subscription を選択したままにしておくと、デフォルトの構成値でサブスクリプションが作成されます。サブスクリプション名はトピック名に「-sub」を付加したものが自動生成され、後で Dataflow ジョブを作成する際に使用します。
  5. 作成をクリックします。

outputDeadletterTopic パラメーター用の追加トピックとサブスクリプションを作成します。

Datadog API によって拒否されたログメッセージを処理するために、追加のトピックとデフォルトのサブスクリプションを作成します。このトピックは後で Dataflow ジョブ を設定する際に使用します。

  1. Pub/Sub > Topics に戻ります。
  2. Create Topic をクリックします。
  3. わかりやすいトピック名を入力します。
  4. Add a default subscription を選択したままにしておきます。
  5. 作成をクリックします。

警告: pub/sub は、Google Cloud の割り当てと制限に従います。ログの数がこれらの制限を上回る場合、Datadog はログをいくつかのトピックに分割することをお勧めします。これらの制限に近づいたときに通知するモニターを設定する方法については、ログ転送のモニターを参照してください。

Secret Manager でシークレットを作成する

Datadog では、有効な Datadog API キー値を使用して Secret Manager でシークレットを作成することを推奨しています。このシークレットは後で Dataflow ジョブをセットアップする際に使用します。

  1. Security > Secret Manager に移動します。
  2. Create Secret をクリックします。
  3. シークレットの名前を入力します。
  4. Datadog API キーをコピーして、Secret value セクションに貼り付けます。
  5. オプションで、ユースケースに応じてその他の構成を設定します。
  6. Create Secret をクリックします。

カスタム Dataflow ワーカーサービスアカウントを作成する

Dataflow パイプラインワーカーのデフォルトの動作は、プロジェクトの Compute Engine のデフォルトのサービスアカウントを使用することです。このアカウントは、プロジェクト内のすべてのリソースへの権限を付与します。本番環境からログを転送している場合は、必要なロールと権限のみを持つカスタムワーカーのサービスアカウントを作成し、このサービスアカウントを Dataflow パイプラインワーカーに割り当てます。

: Dataflow パイプラインワーカー用のカスタムサービスアカウントを作成していない場合は、デフォルトの Compute Engine のサービスアカウントが下記の必要な権限を持っていることを確認してください。

  1. Google Cloud の Service Account ページに移動します。
  2. プロジェクトを選択します。
  3. Create Service Account をクリックします。
  4. わかりやすいサービスアカウント名を入力します。
  5. Create and Continue をクリックします。
  6. 以下のロールを追加します。
    必要な権限
    ロールパス説明
    Dataflow Adminroles/dataflow.adminこのサービスアカウントが Dataflow の管理者タスクを実行することを許可します。
    Dataflow Workerroles/dataflow.workerこのサービスアカウントが Dataflow のジョブオペレーションを実行することを許可します
    Pub/Sub Viewerroles/pubsub.viewerこのサービスアカウントが Google Cloud ログで Pub/Sub サブスクリプションからのメッセージを表示することを許可します
    Pub/Sub Subscriberroles/pubsub.subscriberこのサービスアカウントが Google Cloud ログで Pub/Sub サブスクリプションからのメッセージを取得することを許可します
    Pub/Sub Publisherroles/pubsub.publisherこのサービスアカウントが別のサブスクリプションに失敗したメッセージを公開することを許可します。これにより、ログの解析や再送信が可能になります
    Secret Manager Secret Accessorroles/secretmanager.secretAccessorこのサービスアカウントが Secret Manager で Datadog API キーにアクセスすることを許可します
    Storage Object Adminroles/storage.objectAdminこのサービスアカウントがファイルのステージング用に指定された Cloud Storage バケットに対する読み取りと書き込みを行うことを許可します
  7. 続行します。
  8. Done をクリックします。

Pub/Sub にログを公開するためのログシンクを作成する

  1. Google Cloud の Logs Explorer に移動します。
  2. 左サイドメニューの Log Router を選択します。
  3. Create Sink をクリックします。
  4. わかりやすいシンク名を入力します。
  5. Next をクリックします。
  6. Select Sink Service ドロップダウンメニューで、Cloud Pub/Sub topic を選択します。 : Cloud Pub/Sub トピックは別のプロジェクトに配置できます。
  7. Select a Cloud Pub/Sub topic で、先ほど作成した Pub/Sub を選択します。
  8. Next をクリックします。
  9. Datadog に送信するログの包含フィルターを入力します。
  10. Next をクリックします。
  11. オプションで、Datadog に送信しないログを除外するための除外フィルターを入力します。
  12. Create Sink をクリックします。

: 異なるシンクを利用して、Google Cloud Logging から同一の Pub/Sub トピックに対して複数のエクスポートを行うことが可能です。

Dataflow ジョブを作成して実行する

  1. Google Cloud Dataflow に移動します。
  2. Create job from template をクリックします。
  3. ジョブの名前を入力します。
  4. 地域のエンドポイントを選択します。
  5. Dataflow template ドロップダウンメニューで、Pub/Sub to Datadog を選択します。
  6. Required Parameters セクションで、次を行います。 a. Pub/Sub input subscription ドロップダウンメニューで、新しい Pub/Sub システムを作成したときに作成されたデフォルトのサブスクリプションを選択します。 b. Datadog Logs API URL フィールドに以下の値を入力します。
    https://
    
    : 上記の URL をコピーする前に、このドキュメントページの右側にある Datadog サイトセレクタが Datadog サイトに設定されていることを確認してください。 c. Output deadletter Pub/Sub topic フィールドで、Datadog API によって拒否されたメッセージを受信するために以前に作成した 追加トピックを選択します。 d. Temporary location フィールドで、ストレージバケット内の一時ファイルのパスを指定します。
  7. 先ほど Datadog API キー値用の シークレットを Secret Manager で作成した場合:
    a. Optional Parameters をクリックして、追加フィールドを表示します。 b. Google Cloud Secret Manager ID フィールドにシークレットのリソース名を入力します。 リソース名を取得するには、Secret Manager の自分のシークレットに移動します。シークレットをクリックします。Action の下にある 3 つの点をクリックし、Copy resource name を選択します。 c. Source of the API key passed フィールドに SECRET_MANAGER と入力します。
  8. Datadog API キーの値にシークレットを使用していない場合:
    • 推奨:
      • Source of API key passedKMS に設定します。
      • Google Cloud KMS key for the API key を Cloud KMS キー ID に設定します。
      • 暗号化された API キーを Logs API Key に設定します。
    • 推奨しません: Source of API key passedPLAINTEXT に設定し、Logs API Key に平文の API キーを設定します。
  9. その他の使用可能なオプションの詳細については、Dataflow テンプレートのテンプレートパラメーターを参照してください。
  10. カスタムワーカーサービスアカウントを作成した場合は、Service account email ドロップダウンメニューでそれを選択します。
  11. Run Job をクリックします。

Datadog Log Explorer で Cloud Pub/Sub トピックに配信された新規ログイベントを確認します。

Cloud SIEM でセキュリティシグナルのトリアージを行う

Cloud SIEM は、設定した Google Cloud の監査ログを含む、処理されたすべてのログに対して、すぐに検出ルールを適用します。検出ルールで脅威が検出されると、セキュリティシグナルが生成され、セキュリティシグナルエクスプローラーで確認することができます。

参考資料

PREVIEWING: may/unit-testing