收集 Azure 应用服务日志

支持的平台:

本文档介绍了如何使用 Azure 存储账号将 Azure APP Service 日志导出到 Google 安全运营中心。解析器会将采用 JSON 格式的原始 Azure App Service 日志转换为结构化的统一数据模型 (UDM)。它会从原始日志中提取相关字段,执行数据清理和标准化,并将提取的信息映射到相应的 UDM 字段,最终为每个日志条目输出符合 UDM 标准的 JSON 对象。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您拥有有效的 Azure 租户。
  • 确保您拥有对 Azure 的特权访问权限。

配置 Azure 存储账号

  1. 在 Azure 控制台中,搜索存储账号
  2. 点击 + 创建
  3. 为以下输入参数指定值:
    • 订阅:选择相应订阅。
    • 资源组:选择资源组。
    • 地区:选择地区。
    • 效果:选择效果(推荐“标准”)。
    • 冗余:选择冗余级别(建议使用 GRS 或 LRS)。
    • 存储账号名称:为新存储账号输入名称。
  4. 点击 Review + create(检查 + 创建)。
  5. 查看账号概览,然后点击创建
  6. 存储账号概览页面上,选择安全 + 网络中的访问密钥子菜单。
  7. 点击 key1key2 旁边的显示
  8. 点击复制到剪贴板以复制密钥。
  9. 将密钥保存在安全的位置,以备日后使用。
  10. 存储账号概览页面中,选择设置中的端点子菜单。
  11. 点击复制到剪贴板,复制 Blob 服务端点网址(例如 https://<storageaccountname>.blob.core.windows.net
  12. 将端点网址保存在安全的位置,以备日后使用。

为 Azure AD 登录日志配置日志导出

  1. 使用您的特权账号登录 Azure 门户
  2. 前往应用服务,然后选择所使用的必需应用服务。
  3. 依次选择监控 > App Service 日志
  4. 应用日志记录(blob)开启
  5. Web 服务日志记录下,选择 Storage
  6. 选择订阅存储账号
  7. 根据您的要求定义保留期限配额
  8. 开启以显示详细错误消息
  9. 失败请求跟踪开启
  10. 点击保存

在 Google SecOps 中配置 Feed 以提取 Azure 应用服务日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击新增
  3. Feed 名称字段中,输入 Feed 的名称(例如 Azure 应用服务日志)。
  4. 选择 Microsoft Azure Blob Storage 作为来源类型
  5. 选择 Azure APP Service 作为日志类型
  6. 点击下一步
  7. 为以下输入参数指定值:

    • 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 中的事件的标签。

  8. 点击下一步

  9. 最终确定界面中查看新的 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.hostnameprincipal.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_namemetadata.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.ProtocolClientBrowserClientModelClientOSOperationIdParentIdItemCount 映射到 additional.fields
  • CsUriQuerySDKVersionCookie 映射到 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 专业人士寻求解答。