ManageEngine Exchange Reporter Plus のログを収集する

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

このドキュメントでは、ManageEngine Exchange Reporter Plus を構成して、Webhook を使用してログを Google Security Operations に push する方法について説明します。

ManageEngine Exchange Reporter Plus は、Microsoft Exchange Server と Exchange Online 環境向けのウェブベースのレポート、監査、モニタリング ソリューションです。ハイブリッド Exchange 環境のメールボックス サイズ、メール トラフィック、パブリック フォルダ、Exchange ActiveSync ログ、管理者アクティビティと構成変更の監査ログに関する包括的なレポートを提供します。

始める前に

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

  • Google SecOps インスタンス
  • ManageEngine Exchange Reporter Plus がインストールされ、Exchange Server または Exchange Online をモニタリングするように構成されている
  • ManageEngine Exchange Reporter Plus ウェブ コンソールへの管理者アクセス権
  • Google Cloud コンソールへのアクセス(API キーの作成用)

Google SecOps で Webhook フィードを作成する

フィードを作成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: ManageEngine Exchange Reporter Plus Logs)。
  5. [Source type] として [Webhook] を選択します。
  6. [ログタイプ] として [ManageEngine Exchange Reporter Plus] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • Split delimiter(省略可): 複数行のイベントを分割するには、\n を入力します。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル
  9. [次へ] をクリックします。
  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

秘密鍵を生成して保存する

フィードを作成したら、認証用のシークレット キーを生成する必要があります。

  1. フィードの詳細ページで、[シークレット キーを生成] をクリックします。
  2. ダイアログに秘密鍵が表示されます。
  3. 秘密鍵をコピーして安全に保存します。

重要: シークレット キーは一度しか表示されず、後で取得することはできません。秘密鍵を紛失した場合は、新しい秘密鍵を生成する必要があります。

フィード エンドポイントの URL を取得する

  1. フィードの [詳細] タブに移動します。
  2. [エンドポイント情報] セクションで、[フィード エンドポイント URL] をコピーします。
  3. URL の形式は次のとおりです。

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    または

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. 次の手順で使用するため、この URL を保存します。

  5. [完了] をクリックします。

Google Cloud API キーを作成する

Chronicle では、認証に API キーが必要です。Google Cloud コンソールで制限付き API キーを作成します。

API キーを作成する

  1. Google Cloud コンソールの [認証情報] ページに移動します。
  2. プロジェクト(Chronicle インスタンスに関連付けられているプロジェクト)を選択します。
  3. [認証情報を作成> API キー] をクリックします。
  4. API キーが作成され、ダイアログに表示されます。
  5. [API キーを編集] をクリックして、キーを制限します。

API キーを制限する

  1. [API キー] 設定ページで、次の操作を行います。
    • 名前: わかりやすい名前を入力します(例: Chronicle Webhook API Key)。
  2. [API の制限] で次の操作を行います。
    1. [キーを制限] を選択します。
    2. [API を選択] プルダウンで、[Google SecOps API](または [Chronicle API])を検索して選択します。
  3. [保存] をクリックします。
  4. ページ上部の [API キー] フィールドから API キーの値をコピーします。
  5. API キーを安全に保存します。

ManageEngine Exchange Reporter Plus の Webhook を構成する

Webhook URL を作成する

  • Chronicle エンドポイント URL、API キー、シークレット キーを組み合わせます。

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
  • 例:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
    

Exchange Reporter Plus でログ転送を構成する

  1. 管理者として ManageEngine Exchange Reporter Plus ウェブ コンソールにログインします。
  2. [設定> 管理 > 全般設定 > ログ転送] に移動します。
  3. [ログ転送を有効にする] チェックボックスをオンにします。
  4. [Webhook] タブをクリックします。
  5. 次の構成の詳細を入力します。
    • HTTP Method: [POST] を選択します。
    • HTTP URL: 前の手順で作成した完全な Webhook URL(Chronicle エンドポイント URL に API キーと秘密鍵がクエリ パラメータとして追加されたもの)を貼り付けます。
  6. [詳細設定] セクションで、次の操作を行います。
    1. [HTTP Request Headers] をクリックします。
    2. 次のヘッダーを追加します。
      • キー: Content-Type
      • : application/json
  7. [保存] をクリックします。

ログ転送を確認する

  1. 構成を保存すると、Exchange Reporter Plus は webhook エンドポイントを介して監査ログの Google SecOps への転送を開始します。
  2. Google SecOps コンソールにログインし、取り込みラベル MANAGE_ENGINE_REPORTER_PLUS を使用してログが [検索] インターフェースに表示されることを確認します。

ファイアウォール構成

次のファイアウォール ルールが構成されていることを確認します。

Exchange Reporter Plus サーバーからの送信:

  • プロトコル: HTTPS(TCP 443)
  • 宛先: Chronicle リージョン エンドポイント(malachiteingestion-pa.googleapis.com またはリージョン エンドポイント)
  • 目的: Webhook 経由で Google SecOps にログを配信する

認証方法のリファレンス

Chronicle ウェブフック フィードは、複数の認証方法をサポートしています。ベンダーがサポートしている方法を選択します。

ベンダーがカスタム HTTP ヘッダーをサポートしている場合は、この方法を使用するとセキュリティが強化されます。

  • リクエストの形式:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

メリット:

  • API キーとシークレットが URL に表示されない
  • より安全(ヘッダーがウェブサーバーのアクセスログに記録されない)
  • ベンダーがサポートしている場合の推奨方法

方法 2: クエリ パラメータ

ベンダーがカスタム ヘッダーをサポートしていない場合は、URL に認証情報を追加します。

  • URL 形式:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
  • 例:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
    
  • リクエストの形式:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

デメリット: - 認証情報が URL に表示される - ウェブサーバーのアクセスログに記録される可能性がある - ヘッダーよりも安全性が低い

方法 3: ハイブリッド(URL + ヘッダー)

一部の構成では、URL に API キーを使用し、ヘッダーにシークレット キーを使用します。

  • リクエストの形式:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

認証ヘッダー名

Chronicle は、認証に次のヘッダー名を受け入れます。

API キーの場合:

  • x-goog-chronicle-auth(推奨)
  • X-Goog-Chronicle-Auth(大文字と小文字を区別しない)

秘密鍵の場合:

  • x-chronicle-auth(推奨)
  • X-Chronicle-Auth(大文字と小文字を区別しない)

Webhook の上限とベスト プラクティス

リクエストに関する上限

上限
最大リクエスト サイズ 4 MB
最大 QPS(秒間クエリ数) 15,000
リクエストのタイムアウト 30 秒
再試行の動作 指数バックオフによる自動

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
msg.OrganizationId additional.fields キー「OrganizationId」と msg.OrganizationId の値、キー「MailboxGuid」と msg.MailboxGuid の値、キー「RecordType」と msg.RecordType の値を持つラベルを統合
msg.MailboxGuid additional.fields
msg.RecordType additional.fields
msg.CreationTime metadata.event_type 空でない場合は event_type の値に設定します。それ以外の場合は、msg.Operation == 「Update」の場合は「USER_UNCATEGORIZED」、msg.Operation == 「Create」かつ msg.MailboxOwnerUPN が空でない場合は「USER_CREATION」、msg.Operation == 「Create」の場合は「USER_UNCATEGORIZED」、msg.UserId が空でない場合は「USER_UNCATEGORIZED」、msg.ClientIP が空でない場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定します。
msg.Operation metadata.product_event_type 値を直接コピーしました
msg.Id metadata.product_log_id 値を直接コピーしました
msg.ClientVersion metadata.product_version msg.ClientVersion が空でない場合はその値、空の場合は msg.Version を文字列に変換した値
msg.Version metadata.product_version
AffectedItems.0.InternetMessageId network.email.mail_id Gsub <
AffectedItems network.email.subject JSON として解析され、item.Subject が抽出され、見つかった場合はマージされます
msg.ClientInfoString network.http.user_agent msg.ClientInfoString が空でない場合はその値、それ以外の場合は msg.Client
msg.Client network.http.user_agent
msg.ClientProcessName principal.application 値を直接コピーしました
msg.OriginatingServer principal.hostname grok パターンを使用して抽出。成功した場合は抽出された値、それ以外の場合は直接コピーされた値
clientIP principal.ip grok を使用して msg.ClientIP から抽出されます
clientPort principal.port grok を使用して msg.ClientIP から抽出され、整数に変換されます
msg.UserKey principal.user.attribute.labels ラベルキーを「UserKey」、値を msg.UserKey に設定して統合
msg.UserType principal.user.attribute.roles roles.name を msg.UserType に設定(マージ済み)
msg.UserId principal.user.email_addresses msg.UserId がメールアドレスの正規表現と一致する場合に統合
msg.UserId principal.user.userid 値を直接コピーしました
msg.MailboxOwnerSid principal.user.windows_sid msg.MailboxOwnerSid が空でない場合はその値、それ以外の場合は msg.LogonUserSid
msg.LogonUserSid principal.user.windows_sid
security_result security_result security_result ハッシュから統合
security_result_action security_result.action security_result_action から統合されました
msg.ResultStatus security_result.action_details 値を直接コピーしました
msg.RecordType security_result.detection_fields 文字列に変換され、キー「RecordType」が設定され、値が msg.RecordType に設定され、統合されました
msg.OrganizationName target.administrative_domain 値を直接コピーしました
msg.DestFolder target.file.full_path grok を使用して fileId と filePath を抽出し、バックスラッシュを gsubs で置き換え、fileId/filePath として連結
ホスト target.hostname 値を直接コピーしました
msg.Folder target.process.parent_process.file.full_path grok を使用して parentFileId と parentFilePath を抽出し、バックスラッシュを gsubs で置き換え、parentFileId/parentFilePath として連結しました
msg.MailboxOwnerUPN target.user.email_addresses メールの正規表現に一致する場合に統合
msg.MailboxOwnerUPN target.user.user_display_name スペースが含まれている場合に設定
msg.MailboxOwnerUPN target.user.userid メールアドレスではなく、スペースがない場合は設定
metadata.product_name metadata.product_name [Manage Engine] に設定します。
metadata.vendor_name metadata.vendor_name 「Manage Engine Reporter Plus」に設定します。

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