Microsoft Defender for Office 365 ログを収集する
このドキュメントでは、Microsoft Azure Blob Storage V2 を使用して Google Security Operations フィードを設定し、Microsoft Defender for Office 365 のログを収集する方法について説明します。
Microsoft Defender for Office 365 は、フィッシング、ビジネスメール詐欺、マルウェア攻撃などの高度な脅威から組織を保護するメール セキュリティ ソリューションです。Defender for Office 365 のメール イベントデータは、Microsoft Defender XDR Streaming API を介して利用できます。この API は、高度なハンティング イベントを Azure Storage アカウントにストリーミングします。Google SecOps は、ストレージ アカウントからストリーミングされたイベントを直接読み取るため、中間コレクタは必要ありません。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Microsoft Azure ポータルへの特権アクセス。次の権限が必要です。
- Microsoft Defender XDR と同じテナントにストレージ アカウントを作成する
- サブスクリプションにリソース プロバイダを登録する
- アクセスキーを管理する
- ストレージ アカウントの共同作成者ロール(Streaming API 構成に必要)
- Microsoft Defender ポータルへのアクセス権(少なくともセキュリティ管理者ロールが必要)
テナントにデプロイされた Microsoft Defender for Office 365: Email* と UrlClickEvents の高度なハンティング テーブルには、Defender for Office 365 のレコードが入力されます。これがないと、テーブルは空のままになります。
Azure Storage アカウントを構成する
Microsoft.Insights リソース プロバイダを登録する
Streaming API には、ストレージ アカウントを保持するサブスクリプションに Microsoft.Insights リソース プロバイダが必要です。
- Azure ポータルにログインします。
- [Subscriptions] > [Your subscription] > [Resource providers] に移動します。
- 「Microsoft.Insights」を検索します。
- [Register] をクリックします。
ストレージ アカウントを作成する
- Azure ポータルで、[ストレージ アカウント] を検索します。
- [+ 作成] をクリックします。
次の構成情報を提供してください。
設定 値 サブスクリプション Azure サブスクリプション(Microsoft Defender XDR と同じテナント)を選択します。 リソース グループ 既存のものを選択するか、新しいものを作成 ストレージ アカウント名 一意の名前を入力します(例: defenderemaillogs)。リージョン リージョンを選択します(例: East US)。パフォーマンス 標準(推奨) 冗長性 GRS(地理冗長ストレージ)または LRS(ローカル冗長ストレージ) [Review + create] をクリックします。
アカウントの概要を確認し、[作成] をクリックします。
デプロイが完了するまで待ちます。
信頼できる Microsoft サービスを許可する
- 作成したストレージ アカウントに移動します。
- [セキュリティ + ネットワーキング] で [ネットワーキング] を選択します。
- [ファイアウォールと仮想ネットワーク] タブの [例外] で、[信頼された Azure サービスによるストレージ アカウントへのアクセスを許可する] が選択されていることを確認します。
- [保存] をクリックします。
ストレージ アカウントの認証情報を取得する
- 同じストレージ アカウントで、[セキュリティ + ネットワーキング] の [アクセスキー] を選択します。
- [キーを表示] をクリックします。
- 後で使用するために、次の情報をコピーして保存します。
- ストレージ アカウント名: 作成時に入力した名前(例:
defenderemaillogs) - キー 1 またはキー 2: 共有アクセスキー
- ストレージ アカウント名: 作成時に入力した名前(例:
ストレージ アカウントのリソース ID を取得する
- 同じストレージ アカウントの [概要] ページで、[JSON ビュー] をクリックします。
[リソース ID] をコピーして保存します。次の形式となります。
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
Microsoft Defender XDR Streaming API を構成する
- セキュリティ管理者以上の権限を持つアカウントを使用して、Microsoft Defender ポータルにログインします。
- [Settings] > [Microsoft Defender XDR] > [Streaming API] に移動します。
- [追加] をクリックします。
- [Add new Streaming API settings] フライアウトで、次の構成の詳細を指定します。
- 名前: 設定の名前を入力します(例:
secops-email-events)。 - [Forward events to Azure Storage] を選択します。
- ストレージ アカウントのリソース ID: 先ほど保存したリソース ID を貼り付けます。
- 名前: 設定の名前を入力します(例:
- 次のイベントタイプを選択します。
- EmailEvents
- EmailAttachmentInfo
- EmailUrlInfo
- EmailPostDeliveryEvents
- UrlClickEvents
- [送信] をクリックします。
ストリーミングが開始されると、選択したイベントタイプごとにストレージ アカウントに blob コンテナが作成されます(Microsoft のドキュメントを参照)。コンテナ名は insights-logs-advancedhunting-<event type> パターン(insights-logs-advancedhunting-emailevents など)に従います。Microsoft のドキュメントには他のテーブルのパターンが示されているため、常にストレージ アカウントから正確な名前を取得してください。各 blob 行には、time、tenantId、category(AdvancedHunting- 接頭辞が付いたテーブル名)、properties オブジェクト内のイベント フィールドを含む JSON としてイベントが格納されます。
Microsoft Defender for Office 365 のログを取り込むように Google SecOps でフィードを構成する
イベントタイプ コンテナごとに 1 つのフィードを作成します。
- [設定] > [データ管理] > [フィード] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一のフィードを構成する] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Defender for Office 365 - EmailEvents)。 - [ソースタイプ] として [Microsoft Azure Blob Storage V2] を選択します。
- [ログタイプ] として [Microsoft Defender for Office 365] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- Azure URI: コンテナパスを含む Blob Service エンドポイント URL を入力します。
https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/insights-logs-advancedhunting-emailevents/次のように置き換えます。
<STORAGE_ACCOUNT_NAME>: Azure ストレージ アカウント名。コンテナ セグメント: ストレージ アカウントからコピーした正確なコンテナ名。
Source deletion option: 必要に応じて削除オプションを選択します。
- ファイルを削除しない: ソースからファイルを削除しません。
- 転送されたファイルと空のディレクトリを削除する: 取得が正常に完了した後、ソースからファイルと空のディレクトリを削除します。
ファイルの最長存続期間: 過去数日間に変更されたファイルを含めます(デフォルトは 180 日)。
認証のプルダウン(デフォルトは [アクセスキー / 共有キー])から、使用する方法を選択し、対応する認証情報を指定します。
- アクセスキー / 共有キー: [キー] フィールドに、以前にキャプチャしたストレージ アカウントのアクセスキー([キー 1] または [キー 2])を貼り付けます。
- SAS トークン: [トークン] フィールドに、コンテナ用に発行された Shared Access Signature(SAS)トークンを貼り付けます。
- Azure V2 Workload Identity 連携: Microsoft Entra アプリケーションのクライアント ID とテナント ID を入力します。フィードに表示される読み取り専用のサブジェクト ID をコピーし、Azure 側でストレージ アカウントへの一致する ID アクセス権を付与します。
Asset namespace: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
残りの各コンテナ(
insights-logs-advancedhunting-emailattachmentinfo、insights-logs-advancedhunting-emailurlinfo、insights-logs-advancedhunting-emailpostdeliveryevents、insights-logs-advancedhunting-urlclickevents)に対して、同じログタイプと異なるフィード名を使用して、手順を繰り返します。
Azure Storage ファイアウォールを構成する(有効になっている場合)
Azure Storage アカウントでファイアウォールを使用している場合は、Google SecOps の IP 範囲を追加する必要があります。
- Azure ポータルで、[ストレージ アカウント] に移動します。
- [セキュリティ + ネットワーキング] で [ネットワーキング] を選択します。
- [ファイアウォールと仮想ネットワーク] で、[選択した仮想ネットワークと IP アドレスから有効にする] を選択します。
- [ファイアウォール] セクションの [アドレス範囲] で、[+ IP 範囲を追加] をクリックします。
- 各 Google SecOps IP 範囲を CIDR 表記で追加します。
現在の IP 範囲を取得するには:
- IP 許可リストのドキュメントをご覧ください。
- または、Feed Management API を使用してプログラムで取得します。
[保存] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
CompAuth_label |
additional.fields |
統合済み |
DKIM_label |
additional.fields |
統合済み |
DMARC_label |
additional.fields |
統合済み |
SPF_label |
additional.fields |
統合済み |
additional_email_cluster_id |
additional.fields |
統合済み |
additional_fields_label |
additional.fields |
統合済み |
additional_replyto |
additional.fields |
統合済み |
attachment_cnt_label |
additional.fields |
統合済み |
attachment_count_label |
additional.fields |
統合済み |
bulk_complaint_level_label |
additional.fields |
統合済み |
clicked_label |
additional.fields |
統合済み |
confidence_level_label |
additional.fields |
統合済み |
connectors_label |
additional.fields |
統合済み |
delivery_action_label |
additional.fields |
統合済み |
delivery_location_label |
additional.fields |
統合済み |
detection_methods_label |
additional.fields |
統合済み |
email_action_label |
additional.fields |
統合済み |
email_action_policy_guid_label |
additional.fields |
統合済み |
email_action_policy_label |
additional.fields |
統合済み |
email_cluster_id_label |
additional.fields |
統合済み |
email_direction_label |
additional.fields |
統合済み |
email_language_label |
additional.fields |
統合済み |
exchange_transport_rule_label |
additional.fields |
統合済み |
is_first_contact_label |
additional.fields |
統合済み |
org_level_action_label |
additional.fields |
統合済み |
org_level_policy_label |
additional.fields |
統合済み |
phishData_label |
additional.fields |
統合済み |
sender_from_address_label |
additional.fields |
統合済み |
sender_mail_label |
additional.fields |
統合済み |
spamData_label |
additional.fields |
統合済み |
threat_names_label |
additional.fields |
統合済み |
threat_types_label |
additional.fields |
統合済み |
url_chain_list |
additional.fields |
統合済み |
url_count_label |
additional.fields |
統合済み |
url_loc_label |
additional.fields |
統合済み |
url_location_label |
additional.fields |
統合済み |
urlcount_label |
additional.fields |
統合済み |
user_level_action_label |
additional.fields |
統合済み |
user_level_policy_label |
additional.fields |
統合済み |
workload_label |
additional.fields |
統合済み |
_time |
metadata.event_timestamp |
RFC3339 として解析 |
time |
metadata.event_timestamp |
yyyy-MM-ddTHH:mm:ss.SSSSSSSZ として解析 |
event_type |
metadata.event_type |
直接マッピングされます。 |
_raw.category |
metadata.product_event_type |
直接マッピングされます。 |
operationName |
metadata.product_event_type |
直接マッピングされます。 |
_raw.properties.ReportId |
metadata.product_log_id |
直接マッピングされます。 |
_raw.properties.SenderFromAddress |
network.email.from |
直接マッピングされます。 |
_raw.properties.InternetMessageId |
network.email.mail_id |
直接マッピングされます。 |
_raw.properties.Subject |
network.email.subject |
統合済み |
properties.Subject |
network.email.subject |
統合済み |
_raw.properties.RecipientEmailAddress |
network.email.to |
統合済み |
email |
network.email.to |
マッピング済み: ^.+@.+$ → email |
properties.EmailSize |
network.received_bytes |
名前変更 / マッピング |
_raw.properties.NetworkMessageId |
network.session_id |
直接マッピングされます。 |
_raw.properties.SenderFromDomain |
principal.administrative_domain |
直接マッピングされます。 |
_raw.properties.SenderMailFromDomain |
principal.administrative_domain |
直接マッピングされます。 |
properties.SenderMailFromDomain |
principal.administrative_domain |
直接マッピングされます。 |
_raw.properties.UrlDomain |
principal.asset.hostname |
直接マッピングされます。 |
properties.SenderFromDomain |
principal.asset.hostname |
直接マッピングされます。 |
properties.UrlDomain |
principal.asset.hostname |
直接マッピングされます。 |
_raw.properties.SenderIPv4 |
principal.asset.ip |
統合済み |
_raw.properties.SenderIPv6 |
principal.asset.ip |
統合済み |
sender_ip |
principal.asset.ip |
統合済み |
_raw.properties.SenderMailFromAddress |
principal.email |
直接マッピングされます。 |
target.SHA256 |
principal.file.sha256 |
直接マッピングされます。 |
_raw.properties.UrlDomain |
principal.hostname |
直接マッピングされます。 |
properties.SenderFromDomain |
principal.hostname |
直接マッピングされます。 |
properties.UrlDomain |
principal.hostname |
直接マッピングされます。 |
_raw.properties.SenderIPv4 |
principal.ip |
統合済み |
_raw.properties.SenderIPv6 |
principal.ip |
統合済み |
sender_ip |
principal.ip |
統合済み |
_raw.properties.Url |
principal.url |
直接マッピングされます。 |
properties.Url |
principal.url |
直接マッピングされます。 |
_raw.properties.SenderObjectId |
principal.user.product_object_id |
直接マッピングされます。 |
tenantId |
principal.user.product_object_id |
直接マッピングされます。 |
_raw.properties.SenderDisplayName |
principal.user.user_display_name |
直接マッピングされます。 |
properties.SenderDisplayName |
principal.user.user_display_name |
直接マッピングされます。 |
action |
security_result.action |
統合済み |
properties.Action |
security_result.action_details |
直接マッピングされます。 |
security_result_category |
security_result.category |
統合済み |
category |
security_result.category_details |
統合済み |
Phish_level |
security_result.confidence |
マッピング済み: high → HIGH_CONFIDENCE、medium → MEDIUM_CONFIDENCE、low → LOW_CONFIDENCE |
properties.ActionResult |
security_result.description |
直接マッピングされます。 |
action_type_label |
security_result.detection_fields |
統合済み |
cribl_pipe_label |
security_result.detection_fields |
統合済み |
email_action_label |
security_result.detection_fields |
統合済み |
email_action_policy_label |
security_result.detection_fields |
統合済み |
email_language_label |
security_result.detection_fields |
統合済み |
emailactpol_guid_label |
security_result.detection_fields |
統合済み |
internet_message_id_label |
security_result.detection_fields |
統合済み |
network_message_id_label |
security_result.detection_fields |
統合済み |
operation_name_label |
security_result.detection_fields |
統合済み |
phish_level_label |
security_result.detection_fields |
統合済み |
recipient_id_label |
security_result.detection_fields |
統合済み |
report_id_label |
security_result.detection_fields |
統合済み |
sender_id_label |
security_result.detection_fields |
統合済み |
tenant_label |
security_result.detection_fields |
統合済み |
transport_rule_guid_label |
security_result.detection_fields |
統合済み |
trigger_label |
security_result.detection_fields |
統合済み |
properties.DeliveryLocation |
security_result.summary |
直接マッピングされます。 |
properties.ThreatNames |
security_result.threat_name |
直接マッピングされます。 |
properties.AccountUpn |
target.email |
直接マッピングされます。 |
_raw.properties.FileName |
target.file.full_path |
直接マッピングされます。 |
_raw.properties.FileType |
target.file.mime_type |
直接マッピングされます。 |
properties.FileType |
target.file.mime_type |
直接マッピングされます。 |
properties.FileName |
target.file.names |
統合済み |
_raw.properties.FileSize |
target.file.size |
名前変更 / マッピング |
properties.FileSize |
target.file.size |
名前変更 / マッピング |
properties.RecipientDomain |
target.hostname |
直接マッピングされます。 |
_raw.tenantId |
target.resource.id |
直接マッピングされます。 |
_raw.properties.RecipientObjectId |
target.user.product_object_id |
直接マッピングされます。 |
| なし | metadata.event_type |
定数: GENERIC_EVENT |
| なし | metadata.product_name |
定数: MICROSOFT_DEFENDER_MAIL |
| なし | metadata.vendor_name |
定数: MICROSOFT_DEFENDER_MAIL |
| なし | network.direction |
定数: INBOUND |
| なし | security_result.confidence |
定数: HIGH_CONFIDENCE |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。