收集 Azure APP Service 記錄
支援以下發布途徑:
Google secops
Siem
本文件說明如何使用 Azure 儲存體帳戶,將 Azure APP Service 記錄匯出至 Google 安全作業。剖析器會將原始 JSON 格式的 Azure 應用程式服務記錄轉換為結構化的統一資料模型 (UDM)。這個工具會從原始記錄檔中擷取相關欄位、執行資料清理和正規化,並將擷取的資訊對應至相應的 UDM 欄位,最後為每個記錄項目輸出符合 UDM 規範的 JSON 物件。
事前準備
請確認您已完成下列必要條件:
- Google SecOps 執行個體
- 有效的 Azure 租用戶
- 特殊存取權 (Azure)
設定 Azure 儲存體帳戶
- 在 Azure 控制台中搜尋「儲存體帳戶」。
- 點選「+ 建立」。
- 指定下列輸入參數的值:
- 訂閱:選取訂閱項目。
- 資源群組:選取資源群組。
- 區域:選取區域。
- 成效:選取成效 (建議使用標準)。
- 備援功能:選取備援功能 (建議使用 GRS 或 LRS)。
- 儲存體帳戶名稱:輸入新儲存體帳戶的名稱。
- 按一下「Review + create」。
- 查看帳戶總覽,然後按一下「建立」。
- 在「儲存空間帳戶總覽」頁面中,選取「安全性與網路」的「存取金鑰」子選單。
- 按一下「key1」或「key2」旁邊的「顯示」。
- 按一下「複製到剪貼簿」即可複製金鑰。
- 將金鑰儲存於安全的位置,以供日後使用。
- 在「儲存空間帳戶總覽」頁面中,選取「設定」中的「端點」子選單。
- 按一下「複製到剪貼簿」,複製 Blob 服務端點網址,例如
https://<storageaccountname>.blob.core.windows.net
。 - 將端點網址儲存於安全位置,以供日後使用。
如何設定 Azure AD 登入記錄的記錄匯出功能
- 使用權限帳戶登入 Azure 入口網站。
- 前往「應用程式服務」,然後選取目前使用的必要應用程式服務。
- 依序選取「監控」>「應用程式服務記錄」。
- 將「Application Logging (blob)」設為「開啟」。
- 在「Web Service Logging」下方選取「Storage」。
- 選取「訂閱」和「儲存空間帳戶」。
- 根據需求定義保留期限和配額。
- 將「詳細錯誤訊息」設為「開啟」。
- 將「失敗的要求追蹤」設為「開啟」。
- 按一下 [儲存]。
設定動態饋給
在 Google SecOps 平台中,有兩個不同的入口可用來設定動態消息:
- SIEM 設定 > 動態饋給
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態」設定動態
如要針對這個產品系列中的不同記錄類型設定多個動態饋給,請參閱「依產品設定動態饋給」。
如要設定單一動態饋給,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一頁中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給的名稱,例如「Azure APP Service Logs」。
- 選取「Microsoft Azure Blob Storage」做為「Source type」。
- 選取「Azure APP Service」做為「Log type」。
- 點選「下一步」。
指定下列輸入參數的值:
- Azure URI:Blob 端點網址。
ENDPOINT_URL/BLOB_NAME
- 替換下列內容:
ENDPOINT_URL
:Blob 端點網址 (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
:Blob 的名稱 (例如<logname>-logs
)
- 替換下列內容:
- URI 是:根據記錄串流設定選取 URI 類型 (單一檔案 | 目錄 | 包含子目錄的目錄)。
來源刪除選項:根據擷取偏好設定選取刪除選項。
共用金鑰:Azure Blob 儲存體的存取金鑰。
資產命名空間:資產命名空間。
攝入標籤:要套用至這個動態饋給事件的標籤。
- Azure URI:Blob 端點網址。
點選「下一步」。
在「完成」畫面中查看新的動態饋給設定,然後按一下「提交」。
透過內容中心設定動態饋給
指定下列欄位的值:
- Azure URI:Blob 端點網址。
ENDPOINT_URL/BLOB_NAME
- 替換下列內容:
ENDPOINT_URL
:Blob 端點網址 (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
:Blob 的名稱 (例如insights-logs-<logname>
)
- 替換下列內容:
- URI 是:根據記錄串流設定選取 URI 類型 (單一檔案 | 目錄 | 包含子目錄的目錄)。
- 來源刪除選項:根據擷取偏好設定選取刪除選項。
- 共用金鑰:Azure Blob 儲存體的存取金鑰。
進階選項
- 動態饋給名稱:預先填入的值,用於識別動態饋給。
- 來源類型:用於收集記錄並匯入 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
- 攝入標籤:套用至這個動態饋給中所有事件的標籤。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
AppRoleInstance | read_only_udm.principal.resource.product_object_id | 直接對應 |
AppRoleName | read_only_udm.principal.resource.name | 直接對應 |
AppVersion | read_only_udm.principal.resource.attribute.labels.value | 直接對應 |
類別 | read_only_udm.metadata.product_event_type | 直接對應 |
CIp | read_only_udm.target.asset.ip | 直接對應 |
CIp | read_only_udm.target.ip | 直接對應 |
ClientCity | read_only_udm.principal.location.city | 直接對應 |
ClientCountryOrRegion | read_only_udm.principal.location.country_or_region | 直接對應 |
ClientIP | read_only_udm.principal.asset.ip | 直接對應 |
ClientIP | read_only_udm.principal.ip | 直接對應 |
ClientStateOrProvince | read_only_udm.principal.location.state | 直接對應 |
ClientType | read_only_udm.additional.fields.value.string_value | 直接對應 |
ComputerName | read_only_udm.principal.asset.hostname | 直接對應 |
ComputerName | read_only_udm.principal.hostname | 直接對應 |
Cookie | read_only_udm.principal.resource.attribute.labels.value | 直接對應 |
CsBytes | read_only_udm.network.sent_bytes | 從 CsBytes 重新命名 |
CsHost | read_only_udm.additional.fields.value.string_value | 直接對應 |
CsMethod | read_only_udm.network.http.method | 直接對應 |
CsUriQuery | read_only_udm.principal.resource.attribute.labels.value | 直接對應 |
CsUriStem | read_only_udm.additional.fields.value.string_value | 直接對應 |
CsUriStem | read_only_udm.target.url | 直接對應 |
CsUsername | read_only_udm.principal.user.user_display_name | 直接對應 |
EventIpAddress | read_only_udm.principal.asset.ip | 直接對應 |
EventIpAddress | read_only_udm.principal.ip | 直接對應 |
EventPrimaryStampName | read_only_udm.additional.fields.value.string_value | 直接對應 |
EventStampName | read_only_udm.additional.fields.value.string_value | 直接對應 |
EventStampType | read_only_udm.additional.fields.value.string_value | 直接對應 |
主機 | read_only_udm.principal.asset.hostname | 直接對應 |
主機 | read_only_udm.principal.hostname | 直接對應 |
IKey | read_only_udm.target.resource.attribute.labels.value | 直接對應 |
執行個體 | read_only_udm.additional.fields.value.string_value | 直接對應 |
名稱 | read_only_udm.additional.fields.value.string_value | 直接對應 |
通訊協定 | read_only_udm.additional.fields.value.string_value | 直接對應 |
通訊協定 | read_only_udm.network.application_protocol | 如果「Protocol」(通訊協定) 為 HTTP/1.1 ,則會對應至 HTTP |
參照網址 | read_only_udm.network.http.referral_url | 直接對應 |
ResourceGUID | read_only_udm.target.resource.product_object_id | 已從 ResourceGUID 重新命名 |
SDKVersion | read_only_udm.additional.fields.value.string_value | 直接對應 |
SDKVersion | read_only_udm.principal.resource.attribute.labels.value | 直接對應 |
SPort | read_only_udm.principal.port | 已從 SPort 重新命名 |
ScBytes | read_only_udm.network.received_bytes | 從 ScBytes 重新命名 |
ScStatus | read_only_udm.network.http.response_code | 已從 ScStatus 重新命名 |
TimeTaken | read_only_udm.additional.fields.value.string_value | 直接對應 |
類型 | read_only_udm.additional.fields.value.string_value | 直接對應 |
使用者 | read_only_udm.principal.user.userid | 直接對應 |
UserAddress | read_only_udm.principal.asset.ip | 從 UserAddress 擷取 (如果是有效的 IP 位址) |
UserAddress | read_only_udm.principal.ip | 從 UserAddress 擷取 (如果是有效的 IP 位址) |
UserAgent | read_only_udm.network.http.user_agent | 直接對應 |
UserDisplayName | read_only_udm.principal.user.user_display_name | 直接對應 |
category | read_only_udm.metadata.product_event_type | 直接對應 |
level | read_only_udm.security_result.severity | 從 level 改為大寫並重新命名 |
位置 | read_only_udm.principal.location.name | 直接對應 |
operationName | read_only_udm.additional.fields.value.string_value | 直接對應 |
record.properties.Protocol | read_only_udm.additional.fields.value.string_value | 直接對應 |
record.properties.Result | read_only_udm.security_result.summary | 直接對應 |
record.time | read_only_udm.metadata.event_timestamp | 剖析為 RFC 3339 時間戳記 |
resourceId | read_only_udm.target.resource.attribute.labels.value | 直接對應 |
resourceId | read_only_udm.target.resource.product_object_id | 從 resourceId 重新命名 |
read_only_udm.metadata.event_type | 根據主體、目標和通訊協定是否存在而決定。如果主體、目標和 Protocol=HTTP 都存在,請將其設為 NETWORK_HTTP 。如果主體和目標存在,請設為 NETWORK_CONNECTION 。如果只有主體,請將其設為 STATUS_UPDATE 。否則,請將其設為 GENERIC_EVENT 。 |
異動
2024-10-18
改善項目:
- 已將
properties.XForwardedHost
對應至principal.hostname
和principal.asset.hostname
。 - 已將
properties_category
對應至additional.fields
。 - 已將
properties.roleInstance
對應至principal.resource.product_object_id
。 - 已將
properties.message
對應至security_result.summary
。
2024-09-30
改善項目:
- 新增支援功能,可剖析未剖析的 JSON 記錄新格式。
2024-06-24
改善項目:
- 已將
metadata.product_name
和metadata.vendor_name
對應至AZURE_APP_SERVICE
。
2024-06-07
改善項目:
- 新增對 JSON 記錄的支援,當記錄不是陣列格式時。
- 已將
properties.ScSubStatus
對應至additional.fields
。 - 已將
properties.ScWin32Status
對應至additional.fields
。
2024-04-25
改善項目:
- 已將
properties.User
對應至principal.user.userid
。 - 已將
properties.UserDisplayName
對應至principal.user.user_display_name
。 - 已將
properties.UserAddress
對應至principal.ip
。 - 將
properties.Protocol
、ClientBrowser
、ClientModel
、ClientOS
、OperationId
、ParentId
和ItemCount
對應至additional.fields
。 - 將
CsUriQuery
、SDKVersion
和Cookie
對應至principal.resource.attribute.labels
。 - 已將
SessionId
對應至network.session_id
。 - 已將
Message
對應至security_result.summary
。 - 已將
SeverityLevel
對應至security_result.severity_details
。
2024-02-20
改善項目:
- 已將
record.AppRoleInstance
對應至principal.resource.product_object_id
。 - 已將
record.AppRoleName
對應至principal.resource.name
。 - 已將
record.ClientCity
對應至principal.location.city
。 - 已將
record.ClientCountryOrRegion
對應至principal.location.country_or_region
。 - 已將
record.ClientStateOrProvince
對應至principal.location.state
。 - 已將
record.ClientIP
對應至principal.ip
。 - 已將
Result
對應至security_result.summary
。 - 已將
UserAgent
對應至network.http.user_agent
。 - 已將
Referer
對應至network.http.referral_url
。 - 已將
record.ResourceGUID
對應至target.resource.product_object_id
。 - 如果沒有
record.ResourceGUID
,則將record.resourceId
對應至target.resource.product_object_id
。 - 如果
record.ResourceGUID
存在,則將record.resourceId
對應至additional.fields
。 - 已將
record.Type
對應至additional.fields
。 - 已將
record.ClientType
對應至additional.fields
。 - 已將
record.SDKVersion
對應至additional.fields
。 - 已將
record.Name
對應至additional.fields
。 - 已將
record.Instance
對應至additional.fields
。 - 已將
record.TimeTaken
對應至additional.fields
。 - 已將
record.Cookie
對應至additional.fields
。 - 已將
record.AppVersion
對應至principal.resource.attribute.labels
。 - 已將
record.IKey
對應至target.resource.attribute.labels
。 - 已將
record.Category
對應至metadata.product_event_type
。 - 已將
CsUriStem
對應至target.url
。 CsBytes
的對應項目已從network.received_bytes
變更為network.sent_bytes
。ScBytes
的對應項目已從network.sent_bytes
變更為network.received_bytes
。
2023-12-07
- 新建的剖析器。
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。