收集 Azure Storage 审核日志
解析器版本: 9.0
支持:
Google SecOps
SIEM
本文档介绍如何使用 Azure Storage 账号将 Azure Storage 审核日志导出到 Google Security Operations。解析器会处理 JSON 格式的日志,并将其转换为统一数据模型 (UDM)。它会从原始日志中提取字段,执行数据类型转换,使用其他上下文(例如用户代理解析和 IP 地址细分)丰富数据,并将提取的字段映射到相应的 UDM 字段。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例
- 有效的 Azure 租户
- 对 Azure 的特权访问权限
配置 Azure Storage 账号
- 在 Azure 控制台中,搜索存储账号 。
- 点击创建 。
- 为以下输入参数指定值:
- 订阅:选择订阅。
- 资源组:选择资源组。
- 区域:选择区域。
- 性能:选择性能(建议使用“标准”)。
- 冗余:选择冗余(建议使用 GRS 或 LRS)。
- 存储账号名称:输入新存储账号的名称。
- 点击 Review + create (检查 + 创建)。
- 查看账号概览,然后点击创建 。
- 在存储账号概览 页面中,选择安全性 + 网络 中的访问密钥 子菜单。
- 点击 key1 或 key2 旁边的显示 。
- 点击 Copy to clipboard (复制到剪贴板)以复制密钥。
- 将密钥保存在安全位置以供日后使用。
- 在存储账号概览 页面中,选择设置 中的端点 子菜单。
- 点击 Copy to clipboard (复制到剪贴板)以复制 Blob 服务 端点网址;例如
https://<storageaccountname>.blob.core.windows.net。 - 将端点网址保存在安全位置以供日后使用。
如何为 Azure Storage 审核日志配置日志导出
- 使用您的特权账号登录 Azure 门户 。
- 依次前往存储账号 > 诊断设置。
- 点击 + 添加诊断设置。
- 选择
blob、queue、table和file的诊断设置。- 在每个诊断设置的类别组 中,选择 allLogs 选项。
- 为每个诊断设置输入描述性名称。
- 选中归档到存储账号 复选框作为目标。
- 指定订阅 和存储账号 。
- 点击保存 。
设置 Feed
您可以通过以下两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed > 添加新 Feed
- 内容中心 > 内容包 > 开始使用
如何设置 Azure Storage 审核 Feed
- 点击 Azure 平台 包。
- 找到 Azure Storage 审核 日志类型,然后点击添加新 Feed 。
为以下字段指定值:
- 来源类型:Microsoft Azure Blob Storage V2。
- Azure URI:Blob 端点网址。
ENDPOINT_URL/BLOB_NAME- 替换以下内容:
ENDPOINT_URL:Blob 端点网址 (https://<storageaccountname>.blob.core.windows.net)BLOB_NAME:Blob 的名称(例如<logname>-logs)
- 替换以下内容:
来源删除选项:根据您的注入偏好设置选择删除选项。
最长文件存在时间:包含在过去指定天数内修改的文件。 默认值为 180 天。
共享密钥:Azure Blob Storage 的访问密钥。
高级选项
- Feed 名称:预填充的值,用于标识 Feed。
- 资产命名空间:与 Feed 关联的命名空间。
- 注入标签:应用于此 Feed 中所有事件的标签。
点击创建 Feed 。
如需详细了解如何为此产品系列中的不同日志类型配置多个 Feed,请参阅按产品配置 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].value。系统会将 time 字段的值解析为时间戳,并将其分配给 event.idm.read_only_udm.metadata.event_timestamp。如果 category 为 StorageWrite 且 principal.user.userid 存在(派生自 properties.accountName),则该值将设置为 USER_RESOURCE_UPDATE_CONTENT。如果 category 为 StorageDelete 且 principal.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_name。系统会将 schemaVersion 字段的值分配给 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。如果 statusText 为 Success,则该值将设置为 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。 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。