收集 Microsoft Entra ID (原稱 Azure Active Directory) 登入記錄
剖析器版本:26.0
本文說明如何設定 Google Security Operations 資訊提供,以收集 Microsoft Entra ID (原稱 Azure Active Directory) 登入記錄。您可以透過兩種方法設定擷取作業:Azure 事件中樞 (建議使用) 或第三方 API。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- Microsoft Azure 入口網站的特殊權限存取權。
- Microsoft Entra ID 中的安全管理員或全域管理員角色 (診斷設定的必要條件)。
- 如果是第三方 API 方法,請使用下列其中一個角色授予管理員同意聲明:
- 全域管理員:可為任何 API 授予任何權限的同意聲明。
- 具備特殊權限的角色管理員:可為任何 API 授予任何權限的同意聲明。
- Cloud 應用程式管理員:可授予任何 API 的任何權限,但 Microsoft Graph 應用程式角色 (應用程式權限) 除外。
方法 1:Azure 事件中樞 (建議)
這個方法會使用診斷設定,透過 Azure 事件中樞串流 Microsoft Entra ID 登入記錄。Google SecOps 會使用 Azure 事件中樞動態饋給類型,直接從事件中樞擷取記錄。
建立 Event Hubs 命名空間
事件中樞命名空間是管理容器,可容納一或多個事件中樞。
- 在 Azure 入口網站中,搜尋 Event Hubs。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取現有資料庫或建立新資料庫 命名空間名稱 輸入不重複的名稱 (例如 secops-entraid-signin)位置 選取最接近 Microsoft Entra 租戶的區域 定價方案 標準 (建議用於正式環境) 處理量單位 從 1 開始,啟用自動增加功能 (建議) 按一下「Review + create」。
查看總覽,然後按一下「建立」。
等待部署作業完成 (1 到 2 分鐘)。
建立事件中樞
- 部署命名空間後,請前往 Event Hub 命名空間。
- 在左側導覽面板中,選取「實體」下方的「事件中樞」。
- 按一下「+ Event Hub」。
請提供下列設定詳細資料:
設定 值 名稱 輸入不重複的名稱 (例如 entraid-signin-logs)分區數量 40 (建議使用,可發揮 Google SecOps 的最大效益) 訊息保留時間 7 天 (建議至少) 擷取 已停用 (Google SecOps 不需要) 點選「建立」。
取得事件中樞連線字串
Google SecOps 需要連線字串,才能向事件中樞驗證。
選項 A:命名空間層級的連線字串 (建議)
- 前往 Event Hub 命名空間。
- 在左側導覽中,選取「設定」下方的「共用存取權政策」。
- 按一下預設政策「RootManageSharedAccessKey」RootManageSharedAccessKey。
- 複製「連線字串 - 主鍵」。
- 請妥善儲存這個連線字串。
範例:
Original: Endpoint=sb://secops-entraid-signin.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==;EntityPath=entraid-signin-logs Remove EntityPath: Endpoint=sb://secops-entraid-signin.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==
選項 B:事件中樞層級的連線字串
- 前往「Event Hub」(不是命名空間)。
- 在左側導覽中,選取「設定」下方的「共用存取權政策」。
- 按一下「+ 新增」建立新政策。
- 請提供下列設定詳細資料:
- 政策名稱:輸入描述性名稱 (例如
chronicle-read) - 權限:僅選取「收聽」 (唯讀存取權)
- 政策名稱:輸入描述性名稱 (例如
- 點選「建立」。
- 按一下新建立的政策。
- 複製「連線字串 - 主鍵」。
請妥善儲存這個連線字串。
設定 Microsoft Entra ID 診斷設定
- 以至少安全性管理員身分登入 Microsoft Entra 系統管理中心。
- 依序前往「Entra ID」>「監控與健康狀態」>「診斷設定」。
- 按一下「+ 新增診斷設定」。
- 請提供下列設定詳細資料:
- 診斷設定名稱:輸入描述性名稱 (例如
signin-logs-to-eventhub)。 - 在「記錄」部分,選取要匯出的登入記錄類別:
- SignInLogs:互動式使用者登入。
- NonInteractiveUserSignInLogs:非互動式使用者登入 (建議)。
- ServicePrincipalSignInLogs:服務主體登入 (選用)。
- ManagedIdentitySignInLogs:受管理的身分登入記錄 (選用)。
- ADFSSignInLogs:AD FS 登入記錄 (選用,如果使用 AD FS)。
- RiskyUsers:由 Microsoft Entra ID Protection 標示為有風險的使用者 (選用)。
- UserRiskEvents:有風險的登入事件詳細資料 (選用)。
- 在「目的地詳細資料」部分,選取「將資料串流至事件中樞」。
- 「Subscription」(訂閱項目):選取包含 Event Hub 命名空間的訂閱項目。
- 事件中樞命名空間:選取您建立的命名空間 (例如
secops-entraid-signin)。 - 事件中樞名稱:選取您建立的事件中樞 (例如
entraid-signin-logs)。 - 事件中樞政策名稱:選取「RootManageSharedAccessKey」。
- 診斷設定名稱:輸入描述性名稱 (例如
按一下 [儲存]。
(選用) 設定 Azure Blob 儲存體以進行檢查點作業
Google SecOps 可使用 Azure Blob Storage 儲存事件中樞檢查點,追蹤已處理的事件。如果動態饋給暫時中斷,可避免重複擷取資料。
建立檢查點的儲存空間帳戶
- 在 Azure 入口網站中,搜尋「儲存體帳戶」。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 使用與事件中樞相同的資源群組 儲存體帳戶名稱 輸入不重複的名稱 (例如 secopsaadsignin)區域 與事件中樞相同的區域 效能 標準 備援功能 LRS (本地備援儲存體) 按一下「Review + create」。
點選「建立」。
建立 Blob 容器
- 前往您建立的儲存空間帳戶。
- 在左側導覽中,選取「資料儲存」下方的「容器」。
- 按一下「+ 容器」。
- 請提供下列設定詳細資料:
- 「Name」(名稱):輸入
checkpoints - 公開存取層級:私人 (不允許匿名存取)
- 「Name」(名稱):輸入
- 點選「建立」。
取得儲存空間帳戶憑證
- 在儲存空間帳戶中,選取「安全性 + 網路」下方的「存取金鑰」。
- 按一下「顯示金鑰」。
- 複製並儲存:
- 儲存體帳戶名稱:儲存體帳戶的名稱。
- 金鑰 1:存取金鑰值。
(選用) 建立專屬的消費者群組
根據預設,事件中樞會提供名為 $Default 的消費者群組。如果是正式環境,建議為 Google SecOps 建立專屬的消費者群組。
- 前往「Event Hub」(不是命名空間)。
- 在左側導覽面板中,選取「實體」下方的「消費者群組」。
- 按一下「+ 消費者群組」。
- 請提供下列設定詳細資料:
- 名稱:輸入描述性名稱 (例如
chronicle)
- 名稱:輸入描述性名稱 (例如
點選「建立」。
在 Google SecOps 中設定動態饋給,以便擷取 Microsoft Entra ID 登入記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Microsoft Entra ID Sign-In Logs - Event Hub)。 - 選取「Microsoft Azure Event Hub」做為「來源類型」。
- 選取「Microsoft Azure AD」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- 事件中樞連線字串:輸入您先前擷取的事件中樞連線字串。
如果使用命名空間層級的連線字串:
- 請確認您已移除
EntityPath參數。 - 您也必須在下一個欄位中提供事件中樞名稱。
如果使用事件中心層級的連線字串:
- 請直接使用連線字串 (包括
EntityPath)。 「事件中樞名稱」欄位可以留空。
- 事件中樞名稱:輸入事件中樞名稱 (例如
entraid-signin-logs)。
如果使用命名空間層級的連線字串,則為必要項目。如果使用事件中樞層級的連線字串,則為選用屬性。
- 事件中樞名稱:輸入事件中樞名稱 (例如
消費者群組 (選用):輸入消費者群組名稱。
如要使用預設的
$Default消費者群組,請留空。如果您建立了專屬的消費者版群組,請輸入群組名稱 (例如
chronicle)。Blob 儲存體容器名稱 (選用):如要檢查點,請輸入容器名稱 (例如
checkpoints)。
如果提供 Blob 儲存空間做為檢查點:
- Azure 儲存體帳戶名稱:輸入檢查點設定中的儲存體帳戶名稱。
Azure 儲存體帳戶金鑰:輸入檢查點設定中的存取金鑰。
資產命名空間:資產命名空間。
擷取標籤:要套用至這個動態饋給事件的標籤。
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
方法 2:第三方 API
這個方法會使用 Microsoft Graph API,直接從 Microsoft 租戶擷取 Microsoft Entra ID 登入記錄。
設定 IP 許可清單
建立動態饋給前,請務必在 Microsoft Azure 網路設定或條件存取政策中,將 Google SecOps IP 範圍加入允許清單。
取得 Google SecOps IP 範圍
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 請注意動態饋給建立介面中顯示的 IP 範圍。
- 或者,您也可以使用 Feed Management API,透過程式擷取 IP 範圍。
設定工作負載身分的條件式存取權 (如有需要)
如果貴機構使用條件存取政策,限制存取位置:
- 在 Microsoft Entra 系統管理中心,依序前往「Protection」(保護) >「Conditional Access」(條件式存取) >「Named locations」(具名位置)。
- 按一下「+ 新增地點」。
- 請提供下列設定詳細資料:
- 「Name」(名稱):輸入
Google SecOps IP Ranges。 - 標示為信任地點:視您的安全政策而定。
- IP 範圍:以 CIDR 標記法新增每個 Google SecOps IP 範圍。
- 「Name」(名稱):輸入
- 點選「建立」。
- 前往「條件存取」>「原則」。
- 如要為工作負載身分套用任何政策,請為名為
Google SecOps IP Ranges的位置或特定服務主體設定排除條件。
設定 Microsoft Entra ID API 存取權
建立應用程式註冊
- 登入 Microsoft Entra 系統管理中心或 Azure 入口網站。
- 依序前往「身分識別」>「應用程式」>「應用程式註冊」。
- 按一下 [新增註冊]。
請提供下列設定詳細資料:
- 名稱:輸入描述性名稱 (例如
Google SecOps Sign-In Logs Integration)。 - 支援的帳戶類型:選取「Accounts in this organizational directory only (Single tenant)」。
- 重新導向 URI:留空 (服務主體驗證不需要)。
- 名稱:輸入描述性名稱 (例如
按一下「註冊」。
註冊後,請複製並儲存下列值:
- 應用程式 (用戶端) ID
- 目錄 (租戶) ID
設定 API 權限
整合作業需要下列 Microsoft Graph 應用程式權限:
- 在應用程式註冊中,前往「API permissions」。
- 按一下「新增權限」。
- 依序選取「Microsoft Graph」>「應用程式權限」。
- 選取下列權限:
- AuditLog.Read.All:讀取登入記錄時必須具備這項權限。
- Directory.Read.All:Microsoft Graph API 需要這項權限,才能存取登入記錄 (已知問題)。
- SecurityEvents.Read.All:Google Security Operations 必須具備這項權限。
- 按一下「Add permissions」。
- 按一下「Grant admin consent for [Your Organization]」。
- 確認「狀態」欄中,這三項權限都顯示「已授予『[您的機構]』」。
| 權限 | 類型 | 說明 |
|---|---|---|
| AuditLog.Read.All | 應用程式 | 讀取所有登入和稽核記錄資料 |
| Directory.Read.All | 應用程式 | 讀取目錄資料 (存取 API 時必須具備這項權限) |
| SecurityEvents.Read.All | 應用程式 | 讀取安全性事件 |
建立用戶端密鑰
- 前往「Certificates & secrets」。
- 按一下 [新增用戶端密碼]。
請提供下列設定詳細資料:
- 說明:輸入描述性名稱 (例如
Google SecOps Feed)。 - 到期:選取到期時間。
- 說明:輸入描述性名稱 (例如
按一下「新增」。
重要事項:請立即複製用戶端密鑰值。這個值只會顯示一次,之後便無法擷取。
建立動態饋給前請先驗證 API 存取權
建立 Google SecOps 資訊提供前,請先確認服務主體可以順利驗證及存取 Microsoft Graph API。
使用 PowerShell 測試驗證
# Replace with your actual values $tenantId = "your-tenant-id" $clientId = "your-client-id" $clientSecret = "your-client-secret" # Token request parameters (must be lowercase) $tokenBody = @{ grant_type = "client_credentials" client_id = $clientId client_secret = $clientSecret scope = "https://graph.microsoft.com/.default" } # Request access token $tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" $tokenResponse = Invoke-RestMethod -Method Post -Uri $tokenEndpoint -Body $tokenBody -ContentType "application/x-www-form-urlencoded" if ($tokenResponse.access_token) { Write-Host "✓ Successfully obtained access token" -ForegroundColor Green # Test API call to sign-ins endpoint $apiUrl = "https://graph.microsoft.com/v1.0/auditLogs/signIns?`$top=1" $headers = @{ Authorization = "Bearer $($tokenResponse.access_token)" } try { $signInResponse = Invoke-RestMethod -Method Get -Uri $apiUrl -Headers $headers Write-Host "✓ Successfully accessed sign-ins API" -ForegroundColor Green Write-Host "Sample sign-in log retrieved successfully" -ForegroundColor Green } catch { Write-Host "✗ Failed to access sign-ins API" -ForegroundColor Red Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red } } else { Write-Host "✗ Failed to obtain access token" -ForegroundColor Red }預期輸出內容:
✓ Successfully obtained access token ✓ Successfully accessed sign-ins API Sample sign-in log retrieved successfully
使用 curl 測試驗證
# Replace with your actual values TENANT_ID="your-tenant-id" CLIENT_ID="your-client-id" CLIENT_SECRET="your-client-secret" # Request access token curl -X POST "https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=$CLIENT_ID" \ -d "client_secret=$CLIENT_SECRET" \ -d "scope=https://graph.microsoft.com/.default" # Test API access curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://graph.microsoft.com/v1.0/auditLogs/signIns?\$top=1"
在 Google SecOps 中設定動態饋給,以便擷取 Microsoft Entra ID 登入記錄
設定動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Microsoft Entra ID Sign-In Logs)。 - 選取「第三方 API」做為「來源類型」。
- 選取「Microsoft Azure AD」做為「記錄類型」。
- 點選「下一步」。
設定動態饋給參數
指定下列輸入參數的值:
- OAuth 用戶端 ID:應用程式註冊時獲得的應用程式 (用戶端) ID。
- OAuth 用戶端密鑰:您先前複製的用戶端密鑰值。
- 租戶 ID:應用程式註冊時取得的 Microsoft 租戶 ID (UUID 格式,例如
0fc279f9-fe30-41be-97d3-abe1d7681418)。 API 完整路徑:Microsoft Graph REST API 端點網址:
graph.microsoft.com/v1.0/auditLogs/signInsAPI 驗證端點:Microsoft Active Directory 驗證端點:
login.microsoftonline.com進階選項:
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:第三方 API (將記錄收集到 Google SecOps 的機制)。
- 資產命名空間:動態饋給將與這個資產命名空間建立關聯。
- 擷取標籤:標籤會加到這個動態饋給的所有事件。
- 點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
地區端點
如要在主權雲端中部署 Microsoft Entra ID,請使用適當的區域端點:
| 雲端環境 | API 完整路徑 | API 驗證端點 |
|---|---|---|
| 全球 | graph.microsoft.com/v1.0/auditLogs/signIns |
login.microsoftonline.com |
| 美國政府 L4 | graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| 美國政府 L5 (國防部) | dod-graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| 中國 (21Vianet) | microsoftgraph.chinacloudapi.cn/v1.0/auditLogs/signIns |
login.chinacloudapi.cn |
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
activityDateTime |
principal.event_timestamp |
從 activityDateTime 欄位剖析。如果欄位不是預期的「yyyy-MM-ddTHH:mm:ss.SSSZ」或「ISO8601」格式,剖析器會嘗試其他格式,例如「MM/dd/yyyy HH:mm:ss A」或「MM/d/yyyy HH:mm:ss A」。 |
activityDisplayName |
security_result.summary |
直接對應自 activityDisplayName。 |
additionalDetails.0.value |
network.http.user_agent |
直接對應自 additionalDetails.0.value。 |
additionalDetails.1.key |
target.resource.attribute.labels.key |
直接對應自 additionalDetails.1.key。 |
additionalDetails.1.value |
target.resource.attribute.labels.value |
直接對應自 additionalDetails.1.value。 |
additionalInfo.[].Key |
network.http.user_agent、target.url |
如果 Key 是 userAgent,請將 Value 對應至 network.http.user_agent 和 network.http.parsed_user_agent。如果 Key 是 alertUrl,請將 Value 對應至 target.url。 |
additionalInfo.[].Value |
network.http.user_agent、target.url |
如果 Key 是 userAgent,請將 Value 對應至 network.http.user_agent 和 network.http.parsed_user_agent。如果 Key 是 alertUrl,請將 Value 對應至 target.url。 |
am_category |
metadata.description |
直接對應自 am_category。 |
am_tenantId |
metadata.product_deployment_id |
直接對應自 am_tenantId。 |
appId |
target.resource.attribute.labels.value |
直接從 appId 對應,標籤鍵為「應用程式 ID」。 |
appDisplayName |
target.application |
直接對應自 appDisplayName。 |
appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name、about.[].user.user_display_name |
直接對應自 appliedConditionalAccessPolicies.[].displayName。 |
appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
直接從 appliedConditionalAccessPolicies.[].enforcedGrantControls 對應,標籤鍵為「applied_conditional_access_policies_enforced_grant_controls」。 |
appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
直接從 appliedConditionalAccessPolicies.[].enforcedSessionControls 對應,標籤鍵為「applied_conditional_access_policies_enforced_session_controls」。 |
appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id、about.[].user.userid |
直接對應自 appliedConditionalAccessPolicies.[].id。 |
appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value、about.[].labels.value |
直接從 appliedConditionalAccessPolicies.[].result 對應,標籤鍵為「Result」。 |
authenticationDetails.[].authenticationMethod |
security_result.[].detection_fields.value |
直接從 authenticationDetails.[].authenticationMethod 對應,標籤鍵為「authenticationMethod」。 |
authenticationDetails.[].authenticationMethodDetail |
security_result.[].detection_fields.value |
直接從 authenticationDetails.[].authenticationMethodDetail 對應,標籤鍵為「authenticationMethodDetail」。 |
authenticationDetails.[].authenticationStepDateTime |
security_result.[].detection_fields.value |
直接從 authenticationDetails.[].authenticationStepDateTime 對應,標籤鍵為「authenticationStepDateTime」。 |
authenticationDetails.[].authenticationStepRequirement |
security_result.[].detection_fields.value |
直接從 authenticationDetails.[].authenticationStepRequirement 對應,標籤鍵為「authenticationStepRequirement」。 |
authenticationDetails.[].authenticationStepResultDetail |
security_result.[].detection_fields.value |
直接從 authenticationDetails.[].authenticationStepResultDetail 對應,標籤鍵為「authenticationStepResultDetail」。 |
authenticationDetails.[].succeeded |
security_result.action |
如果值為「true」,則為 ALLOW,否則為 BLOCK。 |
authenticationRequirement |
additional.fields.value.string_value |
直接從 authenticationRequirement 對應,標籤鍵為「AuthenticationRequirement」。 |
authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
直接從 authenticationRequirementPolicies.[].detail 對應,標籤鍵為「detail」。 |
authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
直接從 authenticationRequirementPolicies.[].requirementProvider 對應,標籤鍵為「requirementProvider」。 |
callerIpAddress |
principal.ip、principal.asset.ip |
直接對應自 callerIpAddress。 |
category |
metadata.description |
直接對應自 category。 |
clientAppUsed |
principal.application |
直接對應自 clientAppUsed。 |
conditionalAccessStatus |
additional.fields.value.string_value |
直接從 conditionalAccessStatus 對應,標籤鍵為「conditionalAccessStatus」。 |
correlationId |
network.session_id、security_result.detection_fields.value |
直接對應自 correlationId。也可用於 security_result.detection_fields.value,標籤鍵為「CorrelationId」。 |
createdDateTime |
when |
when 欄位是從 createdDateTime 欄位衍生而來。系統會使用 grok 從 createdDateTime 欄位擷取日期和時間,然後合併形成 when 欄位。 |
deviceDetail.browser |
network.http.user_agent |
直接對應自 deviceDetail.browser。 |
deviceDetail.deviceId |
principal.asset.asset_id、principal.asset_id |
直接對應至 deviceDetail.deviceId,並加上「裝置 ID:」前置字串。 |
deviceDetail.displayName |
principal.asset.hostname |
直接對應自 deviceDetail.displayName。 |
deviceDetail.isCompliant |
principal.asset.attribute.labels.value |
直接從 deviceDetail.isCompliant 對應,標籤鍵為「isCompliant」。 |
deviceDetail.isManaged |
principal.asset.attribute.labels.value |
直接從 deviceDetail.isManaged 對應,標籤鍵為「isManaged」。 |
deviceDetail.operatingSystem |
principal.platform_version |
直接對應自 deviceDetail.operatingSystem。 |
deviceDetail.trustType |
principal.asset.attribute.labels.value |
直接從 deviceDetail.trustType 對應,標籤鍵為「trustType」。 |
durationMs |
additional.fields.value.string_value |
直接從 durationMs 對應,標籤鍵為「durationMs」。 |
event.id |
- | 未按照說明 (第 3 點) 對應。 |
id |
metadata.product_log_id |
直接對應自 id。 |
identity |
target.user.user_display_name |
如果與 userId 不同且不是電子郵件地址,則直接從 identity 對應。 |
initiatedBy.user.displayName |
principal.user.user_display_name |
直接對應自 initiatedBy.user.displayName。 |
initiatedBy.user.id |
principal.user.userid、principal.user.windows_sid |
直接對應自 initiatedBy.user.id。 |
initiatedBy.user.ipAddress |
principal.ip、principal.asset.ip |
直接對應自 initiatedBy.user.ipAddress。 |
initiatedBy.user.userPrincipalName |
principal.user.email_addresses、principal.user.userid |
直接對應自 initiatedBy.user.userPrincipalName。如果是電子郵件地址,則會對應至 email_addresses,否則會對應至 userid。 |
Level |
security_result.severity_details、level |
直接對應自 Level。 |
level |
security_result.severity_details、security_result.severity |
直接對應自 level。轉換為大寫後,也會對應至 security_result.severity。針對「Information」、「Informational」、「0」、「4」、「Warning」、「1」、「3」、「Error」、「2」和「Critical」值進行特殊處理。 |
location.city |
principal.location.city |
直接對應自 location.city。 |
location.countryOrRegion |
principal.location.country_or_region |
直接對應自 location.countryOrRegion。 |
location.geoCoordinates.altitude |
additional.fields.value.string_value |
直接從 location.geoCoordinates.altitude 對應,標籤鍵為「location_geoCoordinates_altitude」。 |
location.geoCoordinates.latitude |
principal.location.region_latitude、principal.location.region_coordinates.latitude |
直接對應自 location.geoCoordinates.latitude。 |
location.geoCoordinates.longitude |
principal.location.region_longitude、principal.location.region_coordinates.longitude |
直接對應自 location.geoCoordinates.longitude。 |
location.state |
principal.location.state |
直接對應自 location.state。 |
location |
principal.location.name |
直接對應自 location。 |
log_type |
metadata.log_type |
直接對應自 log_type。 |
networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
從 networkLocationDetails.[].networkNames 串連的值,標籤鍵為「networkName {index}」。 |
networkLocationDetails.[].networkType |
security_result.detection_fields.value、additional.fields.value.string_value |
直接從 networkLocationDetails.[].networkType 對應,標籤鍵為「networkType」。也用做 additional.fields.value.string_value,標籤鍵為「networkType {index}」。 |
operationName |
event_type |
如果 operationName 是「登入活動」,則 USER_LOGIN。如果 operationName 是「將成員新增至群組」,則為 USER_CHANGE_PERMISSIONS。 |
operationType |
security_result.action_details |
直接對應自 operationType。 |
properties.activity |
security_result.summary |
直接對應自 properties.activity。 |
properties.activityDateTime |
when |
從 properties.activityDateTime 欄位剖析。如果欄位不是預期的「yyyy-MM-ddTHH:mm:ss.SSSZ」或「ISO8601」格式,剖析器會嘗試其他格式,例如「MM/dd/yyyy HH:mm:ss A」或「MM/d/yyyy HH:mm:ss A」。 |
properties.activityDisplayName |
security_result.summary |
直接對應自 properties.activityDisplayName。 |
properties.additionalInfo |
network.http.user_agent、target.url |
剖析為 JSON,如果索引鍵為 userAgent,則將值對應至 network.http.user_agent 和 network.http.parsed_user_agent。如果鍵為 alertUrl,請將對應值對應至 target.url。 |
properties.appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name |
直接對應自 properties.appliedConditionalAccessPolicies.[].displayName。 |
properties.appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
直接從 properties.appliedConditionalAccessPolicies.[].enforcedGrantControls 對應,標籤鍵為「applied_conditional_access_policies_enforced_grant_controls」。 |
properties.appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
直接從 properties.appliedConditionalAccessPolicies.[].enforcedSessionControls 對應,標籤鍵為「applied_conditional_access_policies_enforced_session_controls」。 |
properties.appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id |
直接對應自 properties.appliedConditionalAccessPolicies.[].id。 |
properties.appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value |
直接從 properties.appliedConditionalAccessPolicies.[].result 對應,標籤鍵為「Result」。 |
properties.appId |
appId |
直接對應自 properties.appId。 |
properties.appDisplayName |
target.application |
直接對應自 properties.appDisplayName。 |
properties.authenticationDetails.[].authenticationMethod |
security_result.detection_fields.value |
直接從 properties.authenticationDetails.[].authenticationMethod 對應,標籤鍵為「authenticationMethod」。 |
properties.authenticationDetails.[].authenticationMethodDetail |
security_result.detection_fields.value |
直接從 properties.authenticationDetails.[].authenticationMethodDetail 對應,標籤鍵為「authenticationMethodDetail」。 |
properties.authenticationDetails.[].authenticationStepDateTime |
security_result.detection_fields.value |
直接從 properties.authenticationDetails.[].authenticationStepDateTime 對應,標籤鍵為「authenticationStepDateTime」。 |
properties.authenticationDetails.[].authenticationStepRequirement |
security_result.detection_fields.value |
直接從 properties.authenticationDetails.[].authenticationStepRequirement 對應,標籤鍵為「authenticationStepRequirement」。 |
properties.authenticationDetails.[].authenticationStepResultDetail |
security_result.detection_fields.value |
直接從 properties.authenticationDetails.[].authenticationStepResultDetail 對應,標籤鍵為「authenticationStepResultDetail」。 |
properties.authenticationRequirement |
additional.fields.value.string_value |
直接從 properties.authenticationRequirement 對應,標籤鍵為「AuthenticationRequirement」。 |
properties.authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
直接從 properties.authenticationRequirementPolicies.[].detail 對應,標籤鍵為「detail」。 |
properties.authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
直接從 properties.authenticationRequirementPolicies.[].requirementProvider 對應,標籤鍵為「requirementProvider」。 |
properties.clientAppUsed |
principal.application |
直接對應自 properties.clientAppUsed。 |
properties.conditionalAccessStatus |
additional.fields.value.string_value |
直接從 properties.conditionalAccessStatus 對應,標籤鍵為「conditionalAccessStatus」。 |
properties.crossTenantAccessType |
additional.fields.value.string_value |
直接從 properties.crossTenantAccessType 對應,標籤鍵為「crossTenantAccessType」。 |
properties.detectedDateTime |
additional.fields.value.string_value |
直接從 properties.detectedDateTime 對應,標籤鍵為「detectedDateTime」。 |
properties.detectionTimingType |
additional.fields.value.string_value |
直接從 properties.detectionTimingType 對應,標籤鍵為「detectionTimingType」。 |
properties.homeTenantId |
additional.fields.value.string_value |
直接從 properties.homeTenantId 對應,標籤鍵為「homeTenantId」。 |
properties.id |
metadata.product_log_id |
直接對應自 properties.id。 |
properties.initiatedBy.user.displayName |
principal.user.user_display_name |
直接對應自 properties.initiatedBy.user.displayName。 |
properties.initiatedBy.user.id |
principal.user.windows_sid |
直接對應自 properties.initiatedBy.user.id。 |
properties.initiatedBy.user.ipAddress |
principal.ip、principal.asset.ip |
直接對應自 properties.initiatedBy.user.ipAddress。 |
properties.initiatedBy.user.userPrincipalName |
principal.user.email_addresses、principal.user.userid |
直接對應自 properties.initiatedBy.user.userPrincipalName。如果是電子郵件地址,則會對應至 email_addresses,否則會對應至 userid。 |
properties.ipAddress |
principal.ip、principal.asset.ip |
直接對應自 properties.ipAddress。 |
properties.isGuest |
additional.fields.value.string_value |
直接從 properties.isGuest 對應,標籤鍵為「isGuest」。 |
properties.isDeleted |
additional.fields.value.string_value |
直接從 properties.isDeleted 對應,標籤鍵為「isDeleted」。 |
properties.isProcessing |
additional.fields.value.string_value |
直接從 properties.isProcessing 對應,標籤鍵為「isProcessing」。 |
properties.lastUpdatedDateTime |
additional.fields.value.string_value |
直接從 properties.lastUpdatedDateTime 對應,標籤鍵為「lastUpdatedDateTime」。 |
properties.location.city |
principal.location.city |
直接對應自 properties.location.city。 |
properties.location.countryOrRegion |
principal.location.country_or_region |
直接對應自 properties.location.countryOrRegion。 |
properties.location.geoCoordinates.latitude |
principal.location.region_latitude、principal.location.region_coordinates.latitude |
直接對應自 properties.location.geoCoordinates.latitude。 |
properties.location.geoCoordinates.longitude |
principal.location.region_longitude、principal.location.region_coordinates.longitude |
直接對應自 properties.location.geoCoordinates.longitude。 |
properties.location.state |
principal.location.state |
直接對應自 properties.location.state。 |
properties.networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
從 properties.networkLocationDetails.[].networkNames 串連的值,標籤鍵為「properties networkName {index}」。 |
properties.networkLocationDetails.[].networkType |
additional.fields.value.string_value |
直接從 properties.networkLocationDetails.[].networkType 對應,標籤鍵為「properties networkType {index}」。 |
properties.riskEventType |
additional.fields.value.string_value |
直接從 properties.riskEventType 對應,標籤鍵為「riskEventType」。 |
properties.riskLastUpdatedDateTime |
additional.fields.value.string_value |
直接從 properties.riskLastUpdatedDateTime 對應,標籤鍵為「riskLastUpdatedDateTime」。 |
properties.riskLevel |
additional.fields.value.string_value |
直接從 properties.riskLevel 對應,標籤鍵為「riskLevel」。 |
properties.riskLevelDuringSignIn |
additional.fields.value.string_value |
直接從 properties.riskLevelDuringSignIn 對應,標籤鍵為「riskLevelDuringSignIn」。 |
properties.riskState |
additional.fields.value.string_value |
直接從 properties.riskState 對應,標籤鍵為「riskState」。 |
properties.riskDetail |
additional.fields.value.string_value |
直接從 properties.riskDetail 對應,標籤鍵為「riskDetail」。 |
properties.riskType |
additional.fields.value.string_value |
直接從 properties.riskType 對應,標籤鍵為「riskType」。 |
properties.source |
additional.fields.value.string_value |
直接從 properties.source 對應,標籤鍵為「source」。 |
properties.targetResources.0.id |
target.user.product_object_id |
直接對應自 properties.targetResources.0.id。 |
properties.targetResources.modifiedProperties.0.newValue |
target.group.product_object_id |
直接對應自 properties.targetResources.modifiedProperties.0.newValue。 |
properties.tokenIssuerType |
additional.fields.value.string_value |
直接從 properties.tokenIssuerType 對應,標籤鍵為「tokenIssuerType」。 |
properties.userAgent |
network.http.user_agent、network.http.parsed_user_agent |
直接對應自 properties.userAgent。 |
properties.userDisplayName |
target.user.user_display_name |
直接對應自 properties.userDisplayName。 |
properties.userId |
target.user.product_object_id |
直接對應自 properties.userId。 |
properties.userPrincipalName |
target.user.userid、target.user.email_addresses |
直接對應自 properties.userPrincipalName。如果是電子郵件地址,則會對應至 email_addresses,否則會對應至 userid。 |
result |
security_result.action、security_result.action_details |
如果 result 為「success」,則為 ALLOW。 |
resultDescription |
security_result.description |
直接對應自 resultDescription。 |
resultSignature |
additional.fields.value.string_value |
直接從 resultSignature 對應,標籤鍵為「resultSignature」。 |
resultType |
security_result.rule_id、action、security_result.summary |
如果 resultType 為「0」,則 ALLOW 和「Successful login occurred」會顯示。否則為 BLOCK 和「Failed login occurred」。 |
resourceId |
target.resource.id、target.resource.product_object_id |
直接對應自 resourceId。 |
resourceDisplayName |
target.resource.name、appDisplayName |
直接對應自 resourceDisplayName。 |
riskDetail |
additional.fields.value.string_value |
直接從 riskDetail 對應,標籤鍵為「riskDetail」。 |
riskEventTypes.[]. |
additional.fields.value.string_value、additional.fields.value.list_value.values.string_value |
值會新增至 additional.fields 中,索引鍵為「riskEventTypes」的清單。此外,每個值都會在 additional.fields 中以「riskEventType」做為鍵,新增為個別欄位。 |
riskEventTypes_v2.[]. |
additional.fields.value.list_value.values.string_value |
值會新增至 additional.fields 中,並以「riskEventTypes_v2」做為鍵。 |
riskLevelAggregated |
additional.fields.value.string_value |
直接從 riskLevelAggregated 對應,標籤鍵為「riskLevelAggregated」。 |
riskLevelDuringSignIn |
additional.fields.value.string_value |
直接從 riskLevelDuringSignIn 對應,標籤鍵為「riskLevelDuringSignIn」。 |
riskState |
additional.fields.value.string_value |
直接從 riskState 對應,標籤鍵為「riskState」。 |
status.additionalDetails |
security_result.description |
直接對應自 status.additionalDetails。 |
status.errorCode |
security_result.rule_id、errorCode |
直接對應自 status.errorCode。 |
target.displayName |
resourceDisplayName |
直接對應自 target.displayName。 |
target.id |
resourceId |
直接對應自 target.id。 |
target.modifiedProperties.[].displayName |
target.resource.attribute.labels.key |
直接對應自 target.modifiedProperties.[].displayName。 |
target.modifiedProperties.[].newValue |
target.resource.attribute.labels.value、target.resource.product_object_id |
直接對應自 target.modifiedProperties.[].newValue。 |
target.modifiedProperties.[].oldValue |
target.resource.attribute.labels.value |
直接對應自 target.modifiedProperties.[].oldValue。 |
target.type |
target.resource.type |
直接對應自 target.type。 |
tenantId |
metadata.product_deployment_id |
直接對應自 tenantId。 |
time |
when |
when 欄位是從 time 欄位衍生而來。系統會使用 grok 從 time 欄位擷取日期和時間,然後合併形成 when 欄位。 |
userAgent |
network.http.user_agent、network.http.parsed_user_agent |
直接對應自 userAgent。 |
userDisplayName |
target.user.user_display_name |
直接對應自 userDisplayName。 |
userId |
target.user.product_object_id |
直接對應自 userId。 |
userPrincipalName |
target.user.userid、principal.administrative_domain、target.user.email_addresses |
直接對應自 userPrincipalName。如果是電子郵件地址,則會對應至 email_addresses,並擷取網域部分,然後對應至 principal.administrative_domain。否則會對應至 userid。 |
| (剖析器邏輯) | event.idm.is_alert、event.idm.is_significant |
如果層級為「重大」,則設為 true。 |
| (剖析器邏輯) | event.idm.read_only_udm.metadata.event_type |
如果 has_target_user 為「true」,請設為「USER_LOGIN」。如果 has_principal_user 為「true」,請設為「USER_UNCATEGORIZED」。如果 has_principal 為「true」,請設為「STATUS_UPDATE」。否則請設為「GENERIC_EVENT」。 |
| (剖析器邏輯) | event.idm.read_only_udm.metadata.vendor_name |
設為「Microsoft」。 |
| (剖析器邏輯) | event.idm.read_only_udm.metadata.product_name |
設為「Azure AD」。 |
| (剖析器邏輯) | event.idm.read_only_udm.extensions.auth.type |
設為「SSO」。 |
| (剖析器邏輯) | event.idm.read_only_udm.extensions.auth.mechanism |
如果 isInteractive 為「true」,請設為「INTERACTIVE」。否則請設為「MECHANISM_OTHER」。 |
| (剖析器邏輯) | security_result.action |
如果結果為成功,請設為 ALLOW。 |
| (剖析器邏輯) | security_result.action |
如果 resultType 為 0,請設為 ALLOW。 |
| (剖析器邏輯) | security_result.action |
如果 resultType 不是 0 且不是「」,則設為 BLOCK。 |
| (剖析器邏輯) | security_result.category |
如果 resultType 不是 0,也不是「」,請設為「AUTH_VIOLATION」。 |
| (剖析器邏輯) | security_result.description |
如果 operationName 為「Add member to group」,且 result 為「success」,則設為「Group membership modified」。 |
| (剖析器邏輯) | security_result.priority |
如果 properties.riskLevelDuringSignIn 為「medium」,請設為「MEDIUM_PRIORITY」。 |
| (剖析器邏輯) | security_result.summary |
如果 resultType 為 0,請設為「Successful login occurred」。 |
| (剖析器邏輯) | security_result.summary |
如果 resultType 不是 0,也不是「」,請設為「Failed login occurred」。 |
| (剖析器邏輯) | security_result.summary |
如果存在,請設為 properties.activityDisplayName。 |
| (剖析器邏輯) | security_result.severity |
如果層級為「Information」、「Informational」、「0」或「4」,請設為 INFORMATIONAL。如果層級為「警告」、「1」或「3」,請設為「中」。如果層級為「Error」或「2」,請設為 ERROR。如果等級為「重大」,則設為「重大」。 |
| (剖析器邏輯) | security_result.severity |
如果 resultType 不是 0 且不是「」,則設為 ERROR。 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。