收集 Azure 应用服务日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用 Azure 存储账号将 Azure APP Service 日志导出到 Google 安全运营中心。解析器会将采用 JSON 格式的原始 Azure App Service 日志转换为结构化的统一数据模型 (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 门户。
- 前往应用服务,然后选择所使用的必需应用服务。
- 依次选择监控 > App Service 日志。
- 为应用日志记录(blob)开启。
- 在 Web 服务日志记录下,选择 Storage。
- 选择订阅和存储账号。
- 根据您的要求定义保留期限和配额。
- 开启以显示详细错误消息。
- 为失败请求跟踪开启。
- 点击保存。
在 Google SecOps 中配置 Feed 以提取 Azure 应用服务日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称(例如 Azure 应用服务日志)。
- 选择 Microsoft Azure Blob Storage 作为来源类型。
- 选择 Azure APP Service 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- 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 Storage 的访问密钥。
资源命名空间:资源命名空间。
提取标签:要应用于此 Feed 中的事件的标签。
- Azure URI:Blob 端点网址。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
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 | 如果协议为 HTTP/1.1 ,则映射到 HTTP |
Referer | 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 | 直接映射 |
类别 | read_only_udm.metadata.product_event_type | 直接映射 |
level | read_only_udm.security_result.severity | 已转换为大写形式并从“level”重命名为“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 专业人士寻求解答。