收集 Azure Cosmos DB 日志

解析器版本:1.0

支持的平台:

本文档介绍了如何使用 Microsoft Azure Blob Storage 设置 Google Security Operations Feed 来收集 Azure Cosmos DB 日志。

Azure Cosmos DB 是一项全代管式全球分布式多模型数据库服务,专为低延迟、弹性可伸缩性和高可用性而设计。它支持多种 API,包括 NoSQL、MongoDB、Apache Cassandra、Apache Gremlin 和 Table。诊断日志会捕获数据平面请求、控制平面操作、查询运行时统计信息和分区键消耗指标。

准备工作

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

  • Google SecOps 实例
  • Microsoft Azure 门户的特权访问权限,包括:
    • 创建存储账号
    • 为 Azure Cosmos DB 配置诊断设置
    • 管理访问密钥
  • 具有适当权限来配置诊断设置的现有 Azure Cosmos DB 账号

配置 Azure 存储账号

创建存储账号

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

    设置
    订阅 选择您的 Azure 订阅
    资源组 选择现有组或创建新组
    存储账号名称 输入唯一名称(例如 cosmosdbsecops
    区域 选择区域(例如 East US
    性能 标准(推荐)
    冗余 GRS(地理位置冗余存储)或 LRS(本地冗余存储)
  4. 点击检查 + 创建

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

  6. 等待部署完成。

获取存储账号凭据

  1. 前往您刚刚创建的存储账号
  2. 在左侧导航栏中,选择安全性 + 网络下的访问密钥
  3. 点击显示密钥
  4. 复制并保存以下内容以供日后使用:
    • 存储账号名称:您的存储账号名称(例如 cosmosdbsecops
    • 密钥 1密钥 2:共享访问密钥(采用 base-64 编码的 512 位随机字符串)

获取 Blob 服务端点

  1. 在同一存储账号中,从左侧导航栏中选择端点
  2. 复制并保存 Blob 服务端点网址。
    • 示例:https://cosmosdbsecops.blob.core.windows.net/

配置 Azure Cosmos DB 诊断设置

  1. Azure 门户中,搜索 Azure Cosmos DB
  2. 选择您的 Azure Cosmos DB 账号。
  3. 在左侧导航栏中,选择监控下的诊断设置
  4. 点击 + 添加诊断设置
  5. 提供以下配置详细信息:
    • 诊断设置名称:输入一个描述性名称(例如 cosmosdb-to-secops)。
    • 日志部分,选择以下类别:
      • DataPlaneRequests:数据平面操作日志,包括读取、写入和删除请求
      • QueryRuntimeStatistics:已执行查询的查询文本和运行时统计信息
      • PartitionKeyStatistics:逻辑分区键的存储空间消耗统计信息
      • PartitionKeyRUConsumption:每个逻辑分区键的请求单位消耗量
      • ControlPlaneRequests:控制平面操作,包括账号修改、故障切换政策变更、索引编制政策更新、虚拟网络和防火墙规则变更以及 IAM 角色分配
      • TableApiRequests:Table API 账号的数据平面请求(如果适用)
      • MongoRequests:MongoDB API 账号(如果适用)的数据平面请求
      • CassandraRequests:Cassandra API 账号(如果适用)的数据平面请求
      • GremlinRequests:Gremlin API 账号(如果适用)的数据平面请求
    • 目标详细信息部分中,选中归档到存储账号复选框。
    • 订阅:选择包含您的存储空间的订阅。
    • 存储账号:选择您创建的存储账号(例如 cosmosdbsecops)。
  6. 点击保存

了解 Blob 容器结构

  • 配置完成后,日志会按以下结构存储:

    https://<storage-account>.blob.core.windows.net/
      insights-logs-<log-category>/
        resourceId=/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/
          y=<year>/m=<month>/d=<day>/h=<hour>/m=<minute>/
            PT1H.json
    

诊断设置创建的容器示例

  • insights-logs-dataplanerequests
  • insights-logs-queryruntimestatistics
  • insights-logs-partitionkeystatistics
  • insights-logs-partitionkeyruconsumption
  • insights-logs-controlplanerequests

在 Google SecOps 中配置 Feed 以注入 Azure Cosmos DB 日志

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

    • Azure URI:输入包含容器路径的 Blob 服务端点网址:

      https://cosmosdbsecops.blob.core.windows.net/insights-logs-dataplanerequests/
      

    替换以下内容:

    • cosmosdbsecops:您的 Azure 存储账号名称。
    • insights-logs-dataplanerequests:存储日志的 Blob 容器名称。
    • 来源删除选项:根据您的偏好选择删除选项:
      • 永不:转移后永不删除任何文件。
      • 删除已转移的文件:在成功转移后删除文件。
      • 删除已转移的文件和空目录:成功转移后删除文件和空目录。
    • 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
    • 共享密钥:输入您从存储账号中捕获的共享密钥值(访问密钥)。
    • 资产命名空间资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签。
  9. 点击下一步

  10. 最终确定界面中查看新的 Feed 配置,然后点击提交

从多个容器提取数据

如果您在诊断设置中选择了多个日志类别,则每个类别都会创建一个单独的 Blob 容器。为要注入的每个容器分别创建一个 Feed:

  1. 为主要数据平面日志创建 Feed(如上所示)。
  2. 点击添加新 Feed 以创建其他 Feed。
  3. Azure URI 中使用相同的存储账号凭据,但使用不同的容器路径。

示例

  • Feed 1(数据平面请求):https://cosmosdbsecops.blob.core.windows.net/insights-logs-dataplanerequests/
  • Feed 2(查询运行时统计信息):https://cosmosdbsecops.blob.core.windows.net/insights-logs-queryruntimestatistics/
  • Feed 3(控制平面请求):https://cosmosdbsecops.blob.core.windows.net/insights-logs-controlplanerequests/
  • Feed 4(分区键 RU 消耗量):https://cosmosdbsecops.blob.core.windows.net/insights-logs-partitionkeyruconsumption/
  • Feed 5(分区键统计信息):https://cosmosdbsecops.blob.core.windows.net/insights-logs-partitionkeystatistics/

配置 Azure 存储防火墙(如果已启用)

如果您的 Azure 存储账号使用防火墙,则必须添加 Google SecOps IP 范围。

  1. Azure 门户中,前往您的存储账号
  2. 安全性 + 网络下,选择网络
  3. 防火墙和虚拟网络下,选择从所选虚拟网络和 IP 地址启用
  4. 防火墙部分的地址范围下,点击 + 添加 IP 范围
  5. 以 CIDR 表示法添加每个 Google SecOps IP 范围。

    如需获取当前的 IP 范围,请执行以下操作:

  6. 点击保存

UDM 映射表

日志字段 UDM 映射 逻辑
activity_id_label additional.fields 已合并
additional_Channel additional.fields 已合并
additional_Event_Origin_Id additional.fields 已合并
additional_Management_Group_Name additional.fields 已合并
additional_Source_System additional.fields 已合并
additional_Task additional.fields 已合并
auth_token_type_label additional.fields 已合并
collection_rid_label additional.fields 已合并
connection_mode_label additional.fields 已合并
key_type_label additional.fields 已合并
number_of_rows_returned_label additional.fields 已合并
operation_name_label additional.fields 已合并
param_value additional.fields 已映射:trueparameter_label
parameter_label additional.fields 已合并
partition_id_label additional.fields 已合并
shapesignature_label additional.fields 已合并
signature_label additional.fields 已合并
properties.partialipaddress intermediary.ip 已合并
Activity metadata.description 直接映射
time metadata.event_timestamp 解析为 ISO8601
TenantId metadata.product_deployment_id 直接映射
EventSourceName metadata.product_event_type 直接映射
category metadata.product_event_type 直接映射
EventID metadata.product_log_id 直接映射
properties.statusCode network.http.response_code 直接映射
properties.userAgent network.http.user_agent 直接映射
properties.useragent network.http.user_agent 直接映射
properties.responseLength network.received_bytes 直接映射
properties.requestLength network.sent_bytes 直接映射
SubjectDomainName principal.administrative_domain 直接映射
domain principal.administrative_domain 直接映射
SourceComputerId principal.asset.asset_id 直接映射
Computer principal.hostname 直接映射
properties.clientIpAddress principal.ip 已合并
EventSourceName principal.platform 映射:(?i)WindowsWINDOWS(?i)macMAC(?i)LinuxLINUX
SubjectUserName principal.user.user_display_name 直接映射
user_name principal.user.user_display_name 直接映射
Account principal.user.userid 直接映射
SubjectLogonId principal.user.userid 直接映射
SubjectUserSid principal.user.windows_sid 直接映射
properties.queryexecutionstatus security_result.summary 直接映射
TargetDomainName target.administrative_domain 直接映射
target_application target.application 已重命名/已映射
FilePath target.file.full_path 直接映射
FileHash target.file.sha256 直接映射
properties.region target.location.country_or_region 直接映射
CommandLine target.process.command_line 直接映射
properties.querytext.query target.process.command_line 直接映射
Process target.process.file.full_path 直接映射
ParentProcessName target.process.parent_process.file.full_path 直接映射
ProcessId target.process.pid 直接映射
Token_Elevation_Type target.resource.attribute.labels 已合并
Workspace_Resource_Id target.resource.attribute.labels 已合并
resource_attribute_labels target.resource.attribute.labels 已重命名/已映射
properties.databaseName target.resource.name 直接映射
properties.databasename target.resource.name 直接映射
_ResourceId target.resource.product_object_id 直接映射
resourceId target.resource.product_object_id 直接映射
properties.collectionName target.resource.resource_subtype 直接映射
properties.collectionname target.resource.resource_subtype 直接映射
TargetUserName target.user.user_display_name 直接映射
TargetLogonId target.user.userid 直接映射
TargetUserSid target.user.windows_sid 直接映射
不适用 metadata.event_type 常量:USER_RESOURCE_ACCESS
不适用 metadata.product_name 常量:Azure Cosmos DB
不适用 metadata.vendor_name 常量:Microsoft
不适用 principal.platform 常量:WINDOWS
不适用 target.resource.resource_type 常量:DATABASE
_Internal_WorkspaceResourceId", "TokenElevationType target.resource.attribute.labels 从变更日志映射
Channel", "Task", "SourceSystem", "EventOriginId", "ManagementGroupName additional.fields 从变更日志映射

更新日志

查看相应解析器的更改日志

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