收集 Azure Storage 审核日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用 Azure 存储账号将 Azure 存储审核日志导出到 Google 安全运营中心。解析器会处理 JSON 格式的日志,将其转换为统一数据模型 (UDM)。它会从原始日志中提取字段、执行数据类型转换、使用其他上下文(例如用户代理解析和 IP 地址细分)丰富数据,并将提取的字段映射到相应的 UDM 字段。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有有效的 Azure 租户。
- 确保您拥有对 Azure 的特权访问权限。
配置 Azure 存储账号
- 在 Azure 控制台中,搜索存储账号。
- 点击创建。
- 为以下输入参数指定值:
- 订阅:选择相应订阅。
- 资源组:选择资源组。
- 地区:选择地区。
- 效果:选择效果(推荐“标准”)。
- 冗余:选择冗余级别(建议使用 GRS 或 LRS)。
- 存储账号名称:为新存储账号输入名称。
- 点击 Review + create(检查 + 创建)。
- 查看账号概览,然后点击创建。
- 在存储账号概览页面上,选择安全 + 网络中的访问密钥子菜单。
- 点击 key1 或 key2 旁边的显示。
- 点击复制到剪贴板以复制密钥。
- 将密钥保存在安全的位置,以备日后使用。
- 在存储账号概览页面中,选择设置中的端点子菜单。
- 点击复制到剪贴板,复制 Blob 服务端点网址;例如
https://<storageaccountname>.blob.core.windows.net
。 - 将端点网址保存在安全的位置,以备日后使用。
为 Azure Storage 审核日志配置日志导出
- 使用特权账号登录 Azure 门户。
- 依次前往存储空间账号 > 诊断设置。
- 点击 + 添加诊断设置。
- 为
blob
、queue
、table
和file
选择诊断设置。- 为每个诊断设置在类别组中选择 allLogs 选项。
- 为每个诊断设置输入描述性名称。
- 选择归档到存储账号复选框作为目标位置。
- 指定订阅和存储空间账号。
- 点击保存。
在 Google SecOps 中配置 Feed 以提取 Azure Storage 审核日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在 Feed 名称字段中,输入 Feed 的名称;例如,Azure Storage 审核日志。
- 选择 Microsoft Azure Blob Storage 作为来源类型。
- 选择 Azure Storage 审核作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- 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 中的事件的标签。
- Azure URI:Blob 端点网址。
点击下一步。
在最终确定界面中查看新的 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 。 |
变化
2024-12-12
- 将
identity.tokenHash
、identity.type
、identity.requester.appId
、identity.requester.tenantId
、identity.requester.tokenIssuer
、properties.sourceAccessTier
、principal.type
、auth.action
、auth.roleAssignmentId
和auth.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
- 将
statusText
和correlationId
初始化为 null。
2024-04-08
- 新创建的解析器。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。