收集 Azure Application Gateway 日志

支持的语言:

本文档介绍了如何通过设置 Google Security Operations Feed 来收集 Azure Application Gateway 日志。此解析器可处理单条记录和多条记录 JSON 结构,从“records”数组中提取字段,执行数据类型转换,将字段映射到 UDM,并使用元数据和派生字段(例如网络连接类型)丰富数据。它还会处理不同 operationName 值的特定逻辑,提取相关的 IP 地址、子网和其他配置详细信息。

准备工作

确保您满足以下前提条件:

  • Google SecOps 实例
  • 对 Azure 订阅的特权访问权限
  • 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 Application Gateway

  1. 登录 Azure 门户。
  2. 前往所需资源组。
  3. 选择应用网关(系统随即会显示应用网关窗口)。
  4. 监控部分,依次选择诊断设置 > 开启诊断
  5. 选择添加诊断设置诊断设置窗口会显示诊断日志的设置)。
  6. 日志部分中,执行以下操作:
    1. 选中 ApplicationGatewayAccessLog 复选框。
    2. 选中 ApplicationGatewayFirewallLog 复选框。
  7. 如需将日志存储在存储账号中,请执行以下操作:
    1. 选中归档到存储账号复选框。
    2. 订阅列表中,选择现有订阅。
    3. 存储账号列表中,选择一个现有存储账号。

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed > 添加新 Feed
  • 内容中心 > 内容包 > 开始

如何设置 Azure 应用网关 Feed

  1. 点击 Azure 平台包。
  2. 找到 Azure 应用网关日志类型,然后点击添加新 Feed
  3. 为以下字段指定值:

    • 来源类型:Microsoft Azure Blob Storage V2。
    • Azure URI:Blob 端点网址。
      • ENDPOINT_URL/BLOB_NAME
        • 替换以下内容:
          • ENDPOINT_URL:Blob 端点网址。(https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME:Blob 的名称。(例如,insights-logs-<logname>
    • 源删除选项:根据您的提取偏好设置选择删除选项。
    • 文件存在时间上限:包含在过去指定天数内修改的文件。 默认值为 180 天。
    • 共享密钥:用于访问 Azure 资源的共享密钥(采用 base-64 编码的 512 位随机字符串)。

    高级选项

    • Feed 名称:用于标识 Feed 的预填充值。
    • 资产命名空间与 Feed 关联的命名空间
    • 提取标签:应用于相应 Feed 中所有事件的标签。
  4. 点击创建 Feed

如需详细了解如何为相应产品系列中的不同日志类型配置多个 Feed,请参阅按产品配置 Feed

UDM 映射表

日志字段 UDM 映射 逻辑
Category metadata.product_event_type 直接从 Category 字段映射。
ClientOperationId additional.fields[].key:"ClientOperationId", value.string_value 直接从 ClientOperationId 字段映射。
CorrelationRequestId additional.fields[].key:"CorrelationRequestId", value.string_value 直接从 CorrelationRequestId 字段映射。
GatewayManagerVersion additional.fields[].key:"GatewayManagerVersion", value.string_value 直接从 GatewayManagerVersion 字段映射。
category metadata.product_event_type 直接从 category 字段映射。
level security_result.severity 直接从 level 字段映射,并转换为大写。如果值为“WARNING”,则严重程度设置为“HIGH”,并将 security_result.severity_details 设置为原始值。
properties.clientIP principal.ipprincipal.asset.ip 直接从 properties.clientIP 字段映射。
properties.clientPort principal.port 直接从 properties.clientPort 字段映射,并转换为整数。
properties.clientResponseTime additional.fields[].key:"clientResponseTime", value.string_value 直接从 properties.clientResponseTime 字段映射。
properties.configuration.BgpConfiguration.GatewayConfig.Asn security_result.detection_fields[].key:"ASN", value operationName 为“SetGatewayConfiguration”时,直接从 properties.configuration.BgpConfiguration.GatewayConfig.Asn 字段映射。
properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress target.iptarget.asset.ip operationName 为“SetGatewayConfiguration”时,直接从 properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress 字段映射。
properties.configuration.BgpConfiguration.GatewayConfig.PeerType security_result.detection_fields[].key:"PeerType", value operationName 为“SetGatewayConfiguration”时,直接从 properties.configuration.BgpConfiguration.GatewayConfig.PeerType 字段映射。
properties.configuration.IkeVersion principal.resource.attribute.labels[].key:"ike_version", value operationName 为“SetConnectionConfiguration”时,直接从 properties.configuration.IkeVersion 字段映射。
properties.configuration.LocalSubnets principal.resource.attribute.labels[].key:"local subnets", value operationName 为“SetConnectionConfiguration”时,properties.configuration.LocalSubnets 数组中 IP 地址的串联字符串。
properties.configuration.LocalTunnelEndpoint principal.ipprincipal.asset.ip operationName 为“SetConnectionConfiguration”时,直接从 properties.configuration.LocalTunnelEndpoint 字段映射。
properties.configuration.Name principal.hostnameprincipal.asset.hostname 直接从 properties.configuration.Name 字段映射。如果为空,则该值取自 properties.instance
properties.configuration.RemoteSite target.hostnametarget.asset.hostname 直接从 properties.configuration.RemoteSite 字段映射。
properties.configuration.RemoteSubnets principal.resource.attribute.labels[].key:"remote subnets", value operationName 为“SetConnectionConfiguration”时,properties.configuration.RemoteSubnets 数组中 IP 地址的串联字符串。
properties.configuration.RemoteTunnelEndpoint target.iptarget.asset.ip operationName 为“SetConnectionConfiguration”时,直接从 properties.configuration.RemoteTunnelEndpoint 字段映射。
properties.configuration.VIPAddress principal.ipprincipal.asset.ip operationName 为“SetGatewayConfiguration”时,直接从 properties.configuration.VIPAddress 字段映射。
properties.configuration.VirtualNetworkRanges principal.resource.attribute.labels[].key:"virutal network ranges", value operationName 为“SetGatewayConfiguration”时,properties.configuration.VirtualNetworkRanges 数组中 IP 地址的串联字符串。
properties.configuration.VirtualNetworkSubnets principal.resource.attribute.labels[].key:"virtual network subnets", value operationName 为“SetGatewayConfiguration”时,properties.configuration.VirtualNetworkSubnets 数组中 IP 地址的串联字符串。
properties.error_info additional.fields[].key:"error_info", value.string_value 直接从 properties.error_info 字段映射。
properties.host principal.hostnameprincipal.asset.hostname 如果 properties.originalHost 为空,则直接从 properties.host 字段映射。
properties.httpMethod network.http.method 直接从 properties.httpMethod 字段映射。
properties.httpStatus network.http.response_code 直接从 properties.httpStatus 字段映射,并转换为整数。
properties.httpVersion network.application_protocol 如果 properties.httpVersion 字段包含“HTTP”,则设置为“HTTP”。
properties.instance principal.hostnameprincipal.asset.hostname 如果 properties.configuration.Name 为空,则用作 principal.hostname 的值。
properties.message metadata.description 直接从 properties.message 字段映射。
properties.operationName additional.fields[].key:"operationName", value.string_value 直接从 properties.operationName 字段映射。
properties.operationStatus security_result.category_details 直接从 properties.operationStatus 字段映射。如果值为“Success”或“InProgress”,则将 security_result.action 设置为“ALLOW”。
properties.originalHost principal.hostnameprincipal.asset.hostname 直接从 properties.originalHost 字段映射。
properties.originalRequestUriWithArgs additional.fields[].key:"originalRequestUriWithArgs", value.string_value 直接从 properties.originalRequestUriWithArgs 字段映射。
properties.receivedBytes network.received_bytes 直接从 properties.receivedBytes 字段映射,并转换为无符号整数。
properties.requestQuery additional.fields[].key:"requestQuery", value.string_value 直接从 properties.requestQuery 字段映射。
properties.requestUri target.url 直接从 properties.requestUri 字段映射。
properties.sentBytes network.sent_bytes 直接从 properties.sentBytes 字段映射,并转换为无符号整数。
properties.serverResponseLatency additional.fields[].key:"Server Response Latency", value.string_value 直接从 properties.serverResponseLatency 字段映射。
properties.serverRouted target.iptarget.asset.iptarget.port 使用正则表达式从 properties.serverRouted 字段中提取 IP 和端口。
properties.sslCipher network.tls.cipher 直接从 properties.sslCipher 字段映射。
properties.sslClientCertificateIssuerName network.tls.server.certificate.issuer 直接从 properties.sslClientCertificateIssuerName 字段映射。
properties.sslProtocol network.tls.version 直接从 properties.sslProtocol 字段映射。
properties.timeTaken additional.fields[].key:"timeTaken", value.string_value 直接从 properties.timeTaken 字段映射。
properties.transactionId network.session_id 直接从 properties.transactionId 字段映射。
properties.userAgent network.http.user_agentnetwork.http.parsed_user_agent 直接从 properties.userAgent 字段映射。此外,该字段会转换为已解析的用户代理并映射到 network.http.parsed_user_agent
properties.WAFEvaluationTime additional.fields[].key:"WAFEvaluationTime", value.string_value 直接从 properties.WAFEvaluationTime 字段映射。
properties.WAFMode additional.fields[].key:"WAFMode", value.string_value 直接从 properties.WAFMode 字段映射。
resourceId target.resource.id 直接从 resourceId 字段映射。
resourceid target.resource.product_object_id 直接从 resourceid 字段映射。
ruleName security_result.rule_name 直接从 ruleName 字段映射。
time/timeStamp metadata.event_timestamptimestamp 解析为使用 RFC 3339 或 ISO8601 格式的时间戳。建议使用 timeStamp,但如果不存在 timeStamp,则使用 time
(解析器逻辑) metadata.event_type 如果主账号和目标账号都存在,则设置为“NETWORK_CONNECTION”;如果只有主账号存在,则设置为“STATUS_UPDATE”;否则设置为“GENERIC_EVENT”。
(解析器逻辑) metadata.product_name 设置为“Azure 网关”。
(解析器逻辑) metadata.vendor_name 设置为“Microsoft”。
(解析器逻辑) has_principal 一个布尔值标志,如果提取了任何正文信息(主机名、IP 或端口),则设置为“true”,否则设置为“false”。
(解析器逻辑) has_target 一个布尔值标志,如果提取了任何目标信息(主机名、IP、端口、资源 ID 或网址),则设置为“true”,否则设置为“false”。
(解析器逻辑) disambiguation_key 当从单个日志条目中提取多个事件时添加。