收集 Azure Storage 审核日志

支持的平台:

本文档介绍了如何使用 Azure 存储账号将 Azure 存储审核日志导出到 Google 安全运营中心。解析器会处理 JSON 格式的日志,将其转换为统一数据模型 (UDM)。它会从原始日志中提取字段、执行数据类型转换、使用其他上下文(例如用户代理解析和 IP 地址细分)丰富数据,并将提取的字段映射到相应的 UDM 字段。

准备工作

  • 确保您拥有 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 Storage 审核日志配置日志导出

  1. 使用特权账号登录 Azure 门户
  2. 依次前往存储空间账号 > 诊断设置
  3. 点击 + 添加诊断设置
  4. blobqueuetablefile 选择诊断设置。
    • 为每个诊断设置在类别组中选择 allLogs 选项。
    • 为每个诊断设置输入描述性名称。
  5. 选择归档到存储账号复选框作为目标位置。
    • 指定订阅存储空间账号
  6. 点击保存

在 Google SecOps 中配置 Feed 以提取 Azure Storage 审核日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击新增
  3. Feed 名称字段中,输入 Feed 的名称;例如,Azure Storage 审核日志
  4. 选择 Microsoft Azure Blob Storage 作为来源类型
  5. 选择 Azure Storage 审核作为日志类型
  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 映射 逻辑
callerIpAddress principal.asset.ip 系统会使用 Grok 模式从 callerIpAddress 字段中提取 IP 地址,并将其分配给 principal.asset.ip
callerIpAddress principal.ip 系统使用 Grok 模式从 callerIpAddress 字段中提取 IP 地址,并将其分配给 principal.ip
callerIpAddress principal.port 系统使用 Grok 模式从 callerIpAddress 字段中提取端口号,并将其分配给 principal.port
category security_result.category_details category 字段的值被分配给 security_result.category_details
correlationId security_result.detection_fields[0].key 字面量字符串 correlationId 会分配给键字段。
correlationId security_result.detection_fields[0].value correlationId 字段的值被分配给 security_result.detection_fields[0].valuetime 字段的值会解析为时间戳并分配给 event.idm.read_only_udm.metadata.event_timestamp。如果 categoryStorageWrite 且存在 principal.user.userid(从 properties.accountName 派生),则将该值设为 USER_RESOURCE_UPDATE_CONTENT。如果 categoryStorageDeleteprincipal.user.userid 存在,则该值设为 USER_RESOURCE_DELETION。否则,该值设置为 USER_RESOURCE_ACCESS。字面量字符串 AZURE_STORAGE_AUDIT 会被分配给 event.idm.read_only_udm.metadata.log_type。字面量字符串 AZURE_STORAGE_AUDIT 会被分配给 event.idm.read_only_udm.metadata.product_nameschemaVersion 字段的值被分配给 event.idm.read_only_udm.metadata.product_version。字面量字符串 AZURE_STORAGE_AUDIT 会被分配给 event.idm.read_only_udm.metadata.vendor_name
location target.location.name location 字段的值被分配给 target.location.name
operationName additional.fields[x].key 字面量字符串 operationName 会分配给键字段。
operationName additional.fields[x].value.string_value operationName 字段的值被分配给 additional.fields[x].value.string_value
operationVersion additional.fields[x].key 字面量字符串 operationVersion 会分配给键字段。
operationVersion additional.fields[x].value.string_value operationVersion 字段的值被分配给 additional.fields[x].value.string_value
properties.accountName principal.user.userid properties.accountName 字段的值被分配给 principal.user.userid
properties.clientRequestId additional.fields[x].key 字面量字符串 clientRequestId 会分配给键字段。
properties.clientRequestId additional.fields[x].value.string_value properties.clientRequestId 字段的值被分配给 additional.fields[x].value.string_value
properties.etag additional.fields[x].key 字面量字符串 etag 会分配给键字段。
properties.etag additional.fields[x].value.string_value properties.etag 字段的值被分配给 additional.fields[x].value.string_value
properties.objectKey additional.fields[x].key 字面量字符串 objectKey 会分配给键字段。
properties.objectKey additional.fields[x].value.string_value properties.objectKey 字段的值被分配给 additional.fields[x].value.string_value
properties.requestMd5 additional.fields[x].key 字面量字符串 requestMd5 会分配给键字段。
properties.requestMd5 additional.fields[x].value.string_value properties.requestMd5 字段的值被分配给 additional.fields[x].value.string_value
properties.responseMd5 additional.fields[x].key 字面量字符串 responseMd5 会分配给键字段。
properties.responseMd5 additional.fields[x].value.string_value properties.responseMd5 字段的值被分配给 additional.fields[x].value.string_value
properties.serviceType additional.fields[x].key 字面量字符串 serviceType 会分配给键字段。
properties.serviceType additional.fields[x].value.string_value properties.serviceType 字段的值被分配给 additional.fields[x].value.string_value
properties.tlsVersion network.tls.version properties.tlsVersion 字段的值被分配给 network.tls.version
properties.userAgentHeader network.http.parsed_user_agent properties.userAgentHeader 字段的值会解析为用户代理字符串,并分配给 network.http.parsed_user_agent
properties.userAgentHeader network.http.user_agent properties.userAgentHeader 字段的值被分配为 network.http.user_agent
protocol network.application_protocol protocol 字段的值被分配给 network.application_protocol
resourceId target.resource.id resourceId 字段的值被分配给 target.resource.id
resourceId target.resource.product_object_id resourceId 字段的值被分配给 target.resource.product_object_id。字面量字符串 DATABASE 会被分配给 target.resource.resource_type
resourceType additional.fields[x].key 字面量字符串 resourceType 会分配给键字段。
resourceType additional.fields[x].value.string_value resourceType 字段的值被分配给 additional.fields[x].value.string_value。如果 statusTextSuccess,则该值设置为 ALLOW
statusCode network.http.response_code statusCode 字段的值会转换为整数并赋给 network.http.response_code。字面量字符串 MICROSOFT_AZURE 会被分配给 target.cloud.environment
time timestamp time 字段的值会解析为时间戳并分配给 timestamp
uri network.http.referral_url uri 字段的值被分配给 network.http.referral_url

变化

2024-12-12

  • identity.tokenHashidentity.typeidentity.requester.appIdidentity.requester.tenantIdidentity.requester.tokenIssuerproperties.sourceAccessTierprincipal.typeauth.actionauth.roleAssignmentIdauth.roleDefinitionId 映射到 additional.fields
  • identity.requester.upn 映射到 src.user.userid
  • identity.requester.objectId 映射到 src.user.product_object_id

2024-12-06

  • smbCommandMinor 映射到 security_result.action_details

2024-07-31

  • statusTextcorrelationId 初始化为 null。

2024-04-08

  • 新创建的解析器。

需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。