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의 이메일 이벤트 데이터는 고급 검색 이벤트를 Azure Storage 계정으로 스트리밍하는 Microsoft Defender XDR 스트리밍 API를 통해 제공됩니다. Google SecOps는 스트리밍된 이벤트를 스토리지 계정에서 직접 읽으므로 중간 수집기가 필요하지 않습니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- 다음 권한이 있는 Microsoft Azure 포털에 대한 권한 액세스
- Microsoft Defender XDR과 동일한 테넌트에 스토리지 계정 만들기
- 구독에 리소스 제공자 등록
- 액세스 키 관리
- 스토리지 계정의 컨트리뷰터 역할 (스트리밍 API 구성에 필요)
- 보안 관리자 역할 이상의 권한으로 Microsoft Defender 포털에 액세스할 수 있어야 합니다.
테넌트에 배포된 Microsoft Defender for Office 365: Email* 및 UrlClickEvents 고급 검색 테이블은 Defender for Office 365의 레코드로 채워지며, Defender for Office 365가 없으면 비어 있습니다.
Azure 스토리지 계정 구성
Microsoft.Insights 리소스 제공자 등록
스트리밍 API에는 스토리지 계정을 보유한 구독에 Microsoft.Insights 리소스 공급자가 필요합니다.
- Azure 포털에 로그인합니다.
- 구독 > 내 구독 > 리소스 제공업체로 이동합니다.
- Microsoft.Insights를 검색합니다.
- 등록을 클릭합니다.
스토리지 계정 만들기
- Azure 포털에서 스토리지 계정을 검색합니다.
- + 만들기를 클릭합니다.
다음 구성 세부정보를 제공합니다.
설정 값 구독 Azure 구독 (Microsoft Defender XDR과 동일한 테넌트)을 선택합니다. 리소스 그룹 기존 항목 선택 또는 새로 만들기 스토리지 계정 이름 고유한 이름 (예: defenderemaillogs)을 입력합니다.리전 리전을 선택합니다 (예: East US).성능 표준 (권장) 중복성 GRS (지리적 중복 스토리지) 또는 LRS (로컬 중복 스토리지) 검토 + 만들기를 클릭합니다.
계정 개요를 검토하고 만들기를 클릭합니다.
배포가 완료될 때까지 기다립니다.
신뢰할 수 있는 Microsoft 서비스 허용
- 방금 만든 스토리지 계정으로 이동합니다.
- 보안 + 네트워킹에서 네트워킹을 선택합니다.
- 방화벽 및 가상 네트워크 탭의 예외에서 신뢰할 수 있는 서비스 목록의 Azure 서비스가 이 스토리지 계정에 액세스하도록 허용이 선택되어 있는지 확인합니다.
- 저장을 클릭합니다.
스토리지 계정 사용자 인증 정보 가져오기
- 동일한 스토리지 계정에서 보안 + 네트워킹 아래의 액세스 키를 선택합니다.
- 키 표시를 클릭합니다.
- 나중에 사용할 수 있도록 다음을 복사하여 저장합니다.
- 스토리지 계정 이름: 생성 시 입력한 이름 (예:
defenderemaillogs) - 키 1 또는 키 2: 공유 액세스 키
- 스토리지 계정 이름: 생성 시 입력한 이름 (예:
스토리지 계정 리소스 ID 가져오기
- 동일한 스토리지 계정의 개요 페이지에서 JSON 보기를 클릭합니다.
리소스 ID를 복사하여 저장합니다. 형식은 다음과 같습니다.
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
Microsoft Defender XDR 스트리밍 API 구성
- 최소한 보안 관리자 권한이 있는 계정을 사용하여 Microsoft Defender 포털에 로그인합니다.
- 설정 > Microsoft Defender XDR > 스트리밍 API로 이동합니다.
- 추가를 클릭합니다.
- 새 스트리밍 API 설정 추가 플라이아웃에서 다음 구성 세부정보를 제공합니다.
- 이름: 설정 이름을 입력합니다 (예:
secops-email-events). - Azure Storage로 이벤트 전달을 선택합니다.
- 스토리지 계정 리소스 ID: 이전에 저장한 리소스 ID를 붙여넣습니다.
- 이름: 설정 이름을 입력합니다 (예:
- 다음 이벤트 유형을 선택합니다.
- EmailEvents
- EmailAttachmentInfo
- EmailUrlInfo
- EmailPostDeliveryEvents
- UrlClickEvents
- 제출을 클릭합니다.
스트리밍이 시작되면 선택한 각 이벤트 유형 (Microsoft에서 문서화)에 대해 스토리지 계정에 blob 컨테이너가 생성됩니다. 컨테이너 이름은 insights-logs-advancedhunting-<event type> 패턴을 따릅니다 (예: insights-logs-advancedhunting-emailevents). Microsoft 문서에는 다른 테이블의 패턴이 표시되어 있으므로 항상 스토리지 계정에서 정확한 이름을 가져오세요. 각 blob 행은 time, tenantId, category (AdvancedHunting- 접두사가 있는 테이블 이름) 및 properties 객체 내 이벤트 필드가 있는 JSON으로 이벤트를 전달합니다.
Microsoft Defender for Office 365 로그를 수집하도록 Google SecOps에서 피드 구성
이벤트 유형 컨테이너당 하나의 피드를 만듭니다.
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예:
Defender for Office 365 - EmailEvents). - 소스 유형으로 Microsoft Azure Blob Storage V2를 선택합니다.
- 로그 유형으로 Microsoft Defender for Office 365를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
- Azure URI: 컨테이너 경로와 함께 Blob 서비스 엔드포인트 URL을 입력합니다.
https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/insights-logs-advancedhunting-emailevents/다음을 바꿉니다.
<STORAGE_ACCOUNT_NAME>: Azure 스토리지 계정 이름컨테이너 세그먼트: 스토리지 계정에서 복사한 정확한 컨테이너 이름입니다.
소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
- 파일 삭제 안함: 소스에서 파일을 삭제하지 않습니다.
- 전송된 파일 및 빈 디렉터리 삭제: 가져오기가 완료되면 소스에서 파일과 빈 디렉터리를 삭제합니다.
최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다 (기본값은 180일).
인증 드롭다운 (기본값은 액세스/공유 키)에서 사용할 방법을 선택하고 해당 사용자 인증 정보를 제공합니다.
- 액세스/공유 키: 키 필드에 앞에서 캡처한 스토리지 계정 액세스 키 (키 1 또는 키 2)를 붙여넣습니다.
- SAS 토큰: 토큰 필드에 컨테이너에 발급된 공유 액세스 서명 (SAS) 토큰을 붙여넣습니다.
- Azure V2 워크로드 아이덴티티 제휴: Microsoft Entra 애플리케이션 클라이언트 ID 및 테넌트 ID를 입력합니다. 피드에 표시되는 읽기 전용 주체 ID를 복사하고 Azure 측의 스토리지 계정에 일치하는 ID 액세스 권한을 부여합니다.
애셋 네임스페이스: 애셋 네임스페이스
수집 라벨: 이 피드의 이벤트에 적용할 라벨
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
동일한 로그 유형과 고유한 피드 이름을 사용하여 나머지 컨테이너 (
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 주소 범위에서 + IP 범위 추가를 클릭합니다.
- 각 Google SecOps IP 범위를 CIDR 표기법으로 추가합니다.
현재 IP 범위를 가져오려면 다음 단계를 따르세요.
- IP 허용 목록 문서를 참고하세요.
- 또는 피드 관리 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 전문가에게 문의하여 답변을 받으세요.