收集 Microsoft SharePoint (Office 365) 日志
本文档介绍了如何使用 Bindplane 将 Microsoft SharePoint (Office 365) 日志收集到 Google Security Operations 中。
Microsoft SharePoint 是一个基于 Web 的协作平台,可与 Microsoft 361 集成。SharePoint 审核日志会捕获用户活动,包括文件操作、文件夹活动、共享操作、列表操作和网站管理操作。这些日志通过 Microsoft Defender for Cloud Apps SIEM 代理进行访问,该代理从 SharePoint Online 和 OneDrive for Business 中检索审核数据,并以 syslog 格式将其流式传输到本地接收器。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - 如果在代理后运行,请确保防火墙端口已打开
- 具有 SharePoint Online 的 Microsoft 365 租户
- Microsoft Defender for Cloud Apps 许可(包含在 Microsoft 365 E5 中或作为插件提供)
- Microsoft Defender 门户中的“全局管理员”或“安全管理员”角色
- 一台运行 Java 8 或更高版本的 Windows 或 Linux 服务器,用于运行 SIEM 代理(可以与 Bindplane 位于同一主机上)
- 在 Microsoft 365 中启用统一审核日志记录
启用统一审核日志记录
您必须为 Microsoft 365 租户启用统一审核日志记录,Microsoft Defender for Cloud Apps 才能捕获 SharePoint 审核数据。
- 登录 Microsoft Purview 合规性门户。
- 前往审核。
- 如果系统提示,请点击开始记录用户和管理员活动。 注意:启用统一审核日志记录后,内容最多可能需要 12 小时才能可供使用。
或者,您也可以使用 PowerShell 启用统一审核日志记录:
Connect-ExchangeOnline Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true
获取 Bindplane 代理的 Google SecOps 凭证
如需向 Google SecOps 验证 Bindplane 代理的身份,请选择以下方法之一:
- 新部署:使用 Chronicle API(选项 1)。
- 旧版部署:继续使用数据注入身份验证文件(方法 2),直到 Ingestion API 于 2027 年 7 月 20 日停用。
方法 1:为 Chronicle API 创建服务账号(推荐)
- 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
- 前往 IAM 和管理 > 服务账号。
- 点击创建服务账号。
- 提供以下配置详细信息:
- 服务账号名称:输入账号的名称(例如
bindplane-ingest)。 - 服务账号说明:输入说明(例如
Bindplane agent log ingestion)。
- 服务账号名称:输入账号的名称(例如
- 点击创建并继续。
- 在向此服务账号授予对项目的访问权限部分,点击选择角色,然后选择 Chronicle Editor。
- 点击继续,然后点击完成。
- 点击您创建的服务账号,然后前往密钥标签页。
- 依次点击添加密钥 > 创建新密钥。
- 选择 JSON,然后点击创建。密钥文件会下载到您的计算机上。
- 将密钥文件另存为 Bindplane 收集器目录(在 Linux 上为
/opt/observiq-otel-collector/ingestion-auth.json,在 Windows 上为C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)中的ingestion-auth.json,或更新config.yaml中的creds_file_path以与您保存密钥文件的路径相匹配。 - 前往 IAM 和管理 > 设置,然后复制项目编号。您在配置导出器时需要用到该名称。
方法 2:下载数据注入身份验证文件(旧版)
- 登录 Google SecOps 控制台。
- 前往 SIEM 设置> 收集代理。
- 下载数据注入身份验证文件。
- 将文件安全地保存在将要安装 Bindplane 代理的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 前往 SIEM 设置 > 个人资料。
复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
根据以下说明,在 Windows 或 Linux 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet等待安装完成。
运行以下命令,验证安装是否成功:
sc query observiq-otel-collector该服务应显示为正在运行。
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安装完成。
运行以下命令,验证安装是否成功:
sudo systemctl status observiq-otel-collector该服务应显示为 active (running)。
其他安装资源
如需了解其他安装选项和问题排查,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps
找到配置文件
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/sharepoint: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<CUSTOMER_ID>' endpoint: chronicle.googleapis.com log_type: SHAREPOINT raw_log_field: body service: pipelines: logs/sharepoint_to_chronicle: receivers: - udplog exporters: - chronicle/sharepoint
配置参数
替换以下占位符:
导出器配置:
<CUSTOMER_ID>:在上一步中复制的 Google SecOps 客户 ID- creds_file_path:服务账号 JSON 密钥文件的完整路径(选项 1):
- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
location:将<LOCATION>替换为 Google SecOps 实例所在的区域(例如us、europe或asia-southeast1)。导出工具会在此值前面加上chronicle.googleapis.com。如需查看完整列表,请参阅区域级端点。project:将<PROJECT_NUMBER>替换为 IAM 和管理 > 设置中的项目编号。endpoint:保持设置为chronicle.googleapis.com。
旧版提取 API 导出工具
如果您使用选项 2 中的数据注入身份验证文件,请将
exporters代码块替换为以下内容。将creds_file_path设置为提取身份验证文件的路径,如果您的实例位于美国境外,请将malachiteingestion-pa.googleapis.com替换为您的区域端点(例如europe-malachiteingestion-pa.googleapis.com)。exporters: chronicle/sharepoint: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<CUSTOMER_ID>' endpoint: malachiteingestion-pa.googleapis.com log_type: SHAREPOINT raw_log_field: body
保存配置文件
- 修改后,保存文件:
- Linux:依次按
Ctrl+O、Enter和Ctrl+X - Windows:依次点击文件 > 保存
- Linux:依次按
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
运行以下命令:
sudo systemctl restart observiq-otel-collector验证服务是否正在运行:
sudo systemctl status observiq-otel-collector检查日志中是否存在错误:
sudo journalctl -u observiq-otel-collector -f
如需在 Windows 中重启 Bindplane 代理,请执行以下操作:
请从下列选项中选择一项:
- 以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector- 服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry 收集器。
- 右键点击并选择重启。
- 按
验证服务是否正在运行:
sc query observiq-otel-collector检查日志中是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
配置 Microsoft Defender for Cloud Apps SIEM 代理以转发 SharePoint 日志
Microsoft SharePoint Online 是一项云服务,不具备内置的 syslog 转发功能。如需通过 syslog 转发 SharePoint 审核日志,请使用 Microsoft Defender for Cloud Apps SIEM 代理,该代理会从 Defender for Cloud Apps 检索提醒和活动,并将其作为 syslog 消息(采用 CEF 格式)流式传输到 Bindplane 代理。
SIEM 代理的前提条件
一台 Windows 或 Linux 服务器(可以是虚拟机),并满足以下条件:
- 已安装 Java 8 或更高版本
- 传输层安全协议 (TLS) 1.2 或更高版本
- CPU:2 核
- 磁盘空间:20 GB
- RAM:2 GB
第 1 步:在 Microsoft Defender 门户中配置 SIEM 代理
- 登录 Microsoft Defender 门户。
- 选择设置。
- 选择云应用。
- 在系统下,选择 SIEM 代理。
- 点击添加 SIEM 代理,然后选择通用 SIEM。
- 点击启动向导。
- 提供以下配置详细信息:
- 名称:输入一个描述性名称(例如
Chronicle-Bindplane-SharePoint)。 - 选择 SIEM 格式:选择 CEF。
- 名称:输入一个描述性名称(例如
- 点击下一步。
- 提供以下 syslog 连接详细信息:
- 远程 syslog 主机:输入 Bindplane 代理主机的 IP 地址或主机名(例如
192.168.1.100)。 - Syslog 端口号:输入
514(或在 Bindplane 代理config.yaml中配置的端口)。 - 远程 Syslog 协议:选择 UDP(必须与 Bindplane 代理配置中的接收器类型匹配)。
- 远程 syslog 主机:输入 Bindplane 代理主机的 IP 地址或主机名(例如
- 点击下一步。
- 配置要导出的数据类型:
- 启用活动对应的滑块。
- 在活动的应用对象下拉菜单中,设置过滤条件以纳入 SharePoint 活动:
- 选择应用等于,然后选择 Microsoft SharePoint Online 和 Microsoft OneDrive for Business。
- 如果您还想接收与 SharePoint 相关的政策提醒,请启用提醒对应的滑块。
- 点击修改和预览结果,验证过滤条件是否与预期活动匹配。
- 点击下一步。
- 复制摘要页面上显示的令牌,并妥善保存。
点击完成。
第 2 步:下载并运行 SIEM 代理 JAR 文件
- 从 Microsoft 下载中心下载 SIEM 代理。
- 在将运行 SIEM 代理的服务器上解压缩下载的 ZIP 文件。
使用以下命令运行 SIEM 代理:
java -jar mcas-siemagent-0.87.20-signed.jar --token <TOKEN>
将 <TOKEN> 替换为从 Microsoft Defender 门户复制的令牌。
第 3 步:将 SIEM 代理配置为以服务形式运行
为确保日志持续转发,请将 SIEM 代理配置为自动启动:
Linux:
将运行命令添加到
/etc/rc.local或创建 systemd 服务:java -jar /opt/mcas-siemagent/mcas-siemagent-0.87.20-signed.jar --token <TOKEN> &
Windows:
- 配置定时任务:
- 打开任务计划程序。
- 创建一个新任务,并选择不管用户是否登录都要运行。
- 设置操作以运行带有令牌参数的 JAR 文件。
- 取消选中如果任务运行时间超过以下值,则停止任务。
第 4 步:验证 SIEM 代理连接
- 在 Microsoft Defender 门户中,依次前往设置 > 云应用 > SIEM 代理。
- 验证 SIEM 代理状态是否显示为已连接(绿色)。
在 Bindplane 代理主机上,验证是否正在接收 syslog 消息:
sudo journalctl -u observiq-otel-collector -f在 Google SecOps 中,搜索包含
metadata.log_type = "SHAREPOINT"的日志,以确认日志提取情况。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| 发生时间 | metadata.event_timestamp | 使用日期过滤器进行解析,格式为“MM/dd/yyyy HH:mm:ss A”“MM/dd/yyyy HH:mm:ss a”“M/d/yyyy HH:mm:ss A” |
| has_principal | metadata.event_type | 如果 has_principal 为 true 且(has_target_resource 为 true 或 has_target 为 true),则设置为“USER_RESOURCE_ACCESS”;如果 has_principal 为 true,则设置为“STATUS_UPDATE”;否则设置为“GENERIC_EVENT” |
| has_target_resource | metadata.event_type | |
| has_target | metadata.event_type | |
| metadata.product_name | metadata.product_name | 设置为“SHAREPOINT” |
| EventData | metadata.product_version | 直接复制的值 |
| metadata.vendor_name | metadata.vendor_name | 设置为“SHAREPOINT” |
| 创建时间 | principal.asset.attribute.labels | 合并了 Created 中的键为“Created”的标签和 LastModified 中的键为“Last Modified”的标签 |
| LastModified | principal.asset.attribute.labels | |
| SamAccountName | principal.asset.hostname | 直接复制的值 |
| SamAccountName | principal.hostname | 直接复制的值 |
| 数据库 | principal.process.file.names | 已从数据库合并 |
| UserEmail | principal.user.email_addresses | 如果与电子邮件正则表达式匹配,则从 UserEmail 合并 |
| 用户名 | principal.user.user_display_name | 直接复制的值 |
| EventType | security_result.description | 直接复制的值 |
| 目录 | target.file.full_path | 直接复制的值 |
| 叶子 | target.file.names | 从 Leaf 合并 |
| ItemType | target.resource.type | 直接复制的值 |
| SecUserURL | target.url | 直接复制的值 |
| SecUserRole | target.user.attribute.roles | 合并了来自 SecUserRole 的角色 |
| SecUserEmail | target.user.email_addresses | 如果匹配电子邮件正则表达式,则从 SecUserEmail 合并 |
| SecGroupName | target.user.group_identifiers | 从 SecGroupName 合并 |
| SecUserName | target.user.user_display_name | 直接复制的值 |
| SecSamAccountName | target.user.userid | 直接复制值 |