收集 Azure API 管理日志

解析器版本:1.0

支持:

本文档介绍了如何创建 Azure Event Hub Feed,以将 Azure API 管理日志注入到 Google Security Operations。

Azure API 管理是一个混合式多云管理平台,可用于管理所有环境中的 API。它可帮助组织向外部、合作伙伴和内部开发者发布 API,以充分发挥其数据和服务的潜力。API 管理提供 API 发现、网关功能、安全政策、分析和开发者互动工具。诊断日志会捕获有关 API 网关操作的详细信息,包括请求、响应和错误。

准备工作

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

  • Google SecOps 实例
  • 对 Microsoft Azure 门户的特权访问权限,包括:
    • 创建事件中心命名空间
    • 创建事件中心
    • 为 Azure API 管理配置诊断设置
    • 管理访问权限政策
  • 现有的 Azure API 管理服务实例

创建事件中心命名空间

事件中心命名空间是一个或多个事件中心的管理容器。

  1. 在 Azure 门户中,搜索事件中心。
  2. 点击 + 创建。
  3. 提供以下配置详细信息:

    设置 值
    订阅 选择您的 Azure 订阅
    资源组 选择现有组或创建新组
    命名空间名称 输入一个唯一名称(例如 secops-apim-eventhub)
    位置 选择区域(例如 East US)
    价格层级 标准版(推荐用于生产环境)
    吞吐量单位 从 1 开始,启用自动扩充(推荐)
  4. 点击 Review + create(检查 + 创建)。

  5. 查看概览,然后点击创建。

  6. 等待部署完成(1-2 分钟)。

创建事件中心

  1. 部署命名空间后,前往事件中心命名空间。
  2. 在左侧导航栏中,选择实体下的 Event Hubs。
  3. 点击 + Event Hub。
  4. 提供以下配置详细信息:

    设置 值
    名称 输入一个唯一名称(例如 apim-logs)
    分区数 40(建议采用此值,以便实现最佳的 Google SecOps 伸缩)
    消息保留 7 天(建议的最低时长)
    拍摄 已停用(Google SecOps 不需要)
  5. 点击创建。

获取事件中心连接字符串

Google SecOps 需要连接字符串才能向事件中心进行身份验证。

  1. 前往事件中心命名空间。
  2. 在左侧导航栏中,选择设置下的共享访问权限政策。
  3. 点击默认政策 RootManageSharedAccessKey。
  4. 复制连接字符串 - 主键。
  5. 请妥善保存此连接字符串。
  • 示例:

    Original: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==;EntityPath=apim-logs
    
    Remove EntityPath: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==
    

选项 B:事件中心级连接字符串

  1. 前往事件中心(而非命名空间)。
  2. 在左侧导航栏中,选择设置下的共享访问权限政策。
  3. 点击 + 添加以创建新政策。
  4. 提供以下配置详细信息:
    • 政策名称:输入描述性名称(例如 chronicle-read)
    • 权限:仅选择收听(只读权限)
  5. 点击创建。
  6. 点击新创建的政策。
  7. 复制连接字符串 - 主键。
  8. 请妥善保存此连接字符串。

将 Azure API 管理配置为流式传输到事件中心

  1. 在 Azure 门户中,搜索 API 管理服务。
  2. 选择您的 API 管理服务实例。
  3. 在左侧导航栏中,选择监控下的诊断设置。
  4. 点击 + 添加诊断设置。
  5. 提供以下配置详细信息:
    • 诊断设置名称:输入一个描述性名称(例如 apim-to-secops)。
    • 在日志部分,选择以下类别:
      • GatewayLogs:API Gateway 请求和响应日志
      • WebSocketConnectionLogs:WebSocket 连接日志(如果适用)
      • DeveloperPortalAuditLogs:开发者门户审核日志(如果适用)
      • GatewayLlmLogs:生成式 AI 网关日志(如果适用)
      • GatewayMCPLogs:Model Context Protocol (MCP) 服务器日志(如果适用)
    • 在目标详细信息部分中,选中流式传输到事件中心复选框。
    • 订阅:选择包含事件中心命名空间的订阅。
    • 事件中心命名空间:选择您之前创建的命名空间(例如 secops-apim-eventhub)。
    • Event Hub 名称:选择您创建的 Event Hub(例如 apim-logs)。
    • 事件中心政策名称:选择 RootManageSharedAccessKey 或具有发送权限的自定义政策。
  6. 点击保存。

(可选)配置 Azure Blob Storage 以进行检查点设置

Google SecOps 可以使用 Azure Blob 存储来存储事件中心检查点,这些检查点会跟踪哪些事件已处理。这样可以防止在 Feed 暂时中断时重复提取数据。

创建用于检查点设置的存储账号

  1. 在 Azure 门户中,搜索存储账号。
  2. 点击 + 创建。
  3. 提供以下配置详细信息:

    设置 值
    订阅 选择您的 Azure 订阅
    资源组 使用与事件中心相同的资源组
    存储账号名称 输入一个唯一名称(例如 secopsapimcheckpoint)
    区域 与事件中心位于同一区域
    性能 标准
    冗余 LRS(本地冗余存储)
  4. 点击 Review + create(检查 + 创建)。

  5. 点击创建。

创建 Blob 容器

  1. 前往您刚刚创建的存储账号。
  2. 在左侧导航栏中,选择数据存储区下的容器。
  3. 点击 + 容器。
  4. 提供以下配置详细信息:
    • 名称:输入 checkpoints
    • 公开访问权限级别:私密(不允许匿名访问)
  5. 点击创建。

获取存储账号凭据

  1. 在存储账号中,选择安全性 + 网络下的访问密钥。
  2. 点击显示密钥。
  3. 复制并保存:
    • 存储账号名称:存储账号的名称
    • 密钥 1:访问密钥值

您将在创建 Google SecOps Feed 时提供这些值。

(可选)创建专用使用方群组

默认情况下,事件中心提供一个名为 $Default 的使用方组。对于生产环境,建议为 Google SecOps 创建专用消费者群组。

  1. 前往事件中心(而非命名空间)。
  2. 在左侧导航栏中,选择实体下的使用方群组。
  3. 点击 + 消费者群组。
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 chronicle)
  5. 点击创建。

在 Google SecOps 中配置 Feed 以注入 Azure API 管理日志

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 在下一页上,点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入 Feed 的名称(例如 Azure API Management Logs)。
  5. 选择 Microsoft Azure 事件中心作为来源类型。
  6. 选择 Azure API 管理作为日志类型。
  7. 点击下一步。
  8. 为以下输入参数指定值:

    • 事件中心连接字符串:输入您之前获取的事件中心连接字符串

    • 如果使用命名空间级连接字符串:

      • 确保您移除了 EntityPath 参数
      • 您还必须在下一个字段中提供事件中心名称
    • 如果使用 Event Hub 级连接字符串:

      • 按原样使用连接字符串(包括 EntityPath)
      • Event hub name(事件中心名称)字段可以留空
    • Event Hub 名称:输入 Event Hub 名称(例如 apim-logs)

      • 如果使用命名空间级连接字符串,则为必需。
      • 如果使用事件中心级连接字符串,则为可选。
    • 消费者群组(可选):输入消费者群组名称

      • 留空可使用默认的 $Default 使用方群组
      • 如果您创建了专用消费者群组,请输入其名称(例如 chronicle)
    • Blob 存储容器名称(可选):对于检查点,请输入容器名称(例如 checkpoints)

    如果提供用于检查点设置的 Blob 存储空间:

    • Azure Storage 账号名称:输入来自检查点配置的存储账号名称
    • Azure Storage 账号密钥:输入来自检查点配置的访问密钥

    • 资产命名空间:资产命名空间

    • 注入标签:要应用于此 Feed 中事件的标签

  9. 点击下一步。

  10. 在最终确定界面中查看新的新闻信息流配置,然后点击提交。

如需详细了解 Google SecOps Feed,请参阅 Google SecOps Feed 文档。

UDM 映射表

日志字段 UDM 映射 逻辑
Level_label additional.fields 已合并
Sku_label additional.fields 已合并
apiId_label additional.fields 已合并
apiRevision_label additional.fields 已合并
apimSubscriptionId_label additional.fields 已合并
backendMethod_label additional.fields 已合并
backendProtocol_label additional.fields 已合并
backendResponseCode_label additional.fields 已合并
backendTime_label additional.fields 已合并
cache_label additional.fields 已合并
clientProtocol_label additional.fields 已合并
durationMs_label additional.fields 已合并
eventName_label additional.fields 已合并
eventid_label additional.fields 已合并
functionInvocationId_label additional.fields 已合并
functionName_label additional.fields 已合并
hostInstanceId_label additional.fields 已合并
hostVersion_label additional.fields 已合并
isRequestSuccess_label additional.fields 已合并
operationId_label additional.fields 已合并
productId_label additional.fields 已合并
properties.message metadata.description 直接映射
time metadata.event_timestamp 解析为 ISO8601
has_principal metadata.event_type 已映射:true → STATUS_UPDATE
operationName metadata.product_event_type 直接映射
DeploymentVersion metadata.product_version 直接映射
properties.method network.http.method 直接映射
properties.responseCode network.http.response_code 直接映射
properties.responseSize network.received_bytes 直接映射
properties.requestSize network.sent_bytes 直接映射
correlationId network.session_id 直接映射
properties.clientTlsCipherSuite network.tls.cipher 直接映射
properties.clientTlsVersion network.tls.version 直接映射
callerIpAddress principal.asset.ip 已合并
callerIpAddress principal.ip 已合并
location principal.location.name 直接映射
properties.url principal.url 直接映射
properties.userId principal.user.userid 直接映射
action security_result.action 已合并
resultType security_result.action 已映射:Succeeded → action
category security_result.category_details 已合并
properties.category security_result.category_details 已合并
level security_result.severity 直接映射
resultType security_result.summary 直接映射
properties.appName target.application 直接映射
properties.processId target.process.pid 直接映射
roleInstance_label target.resource.attribute.labels 已合并
resourceId target.resource.product_object_id 直接映射
properties.backendUrl target.url 直接映射
不适用 metadata.event_type 常量:GENERIC_EVENT
不适用 metadata.product_name 常量:AZURE API MANAGEMENT
不适用 metadata.vendor_name 常量:AZURE_API_MANAGEMENT
不适用 network.tls.version_protocol 常量:HTTP

更新日志

查看此解析器的更新日志

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。