收集 Microsoft SharePoint (Office 365) 記錄
本文說明如何使用 Bindplane,將 Microsoft SharePoint (Office 365) 記錄收集到 Google Security Operations。
Microsoft SharePoint 是網頁式協作平台,與 Microsoft 361 整合。SharePoint 稽核記錄會擷取使用者活動,包括檔案作業、資料夾活動、共用作業、清單作業和網站管理動作。這些記錄可透過 Microsoft Defender for Cloud Apps SIEM 代理程式存取,該代理程式會從 SharePoint Online 和商務用 OneDrive 擷取稽核資料,並以系統記錄的形式串流至本機接收器。
事前準備
請確認您符合下列必要條件:
- Google SecOps 執行個體
- Windows Server 2016 以上版本,或搭載
systemd的 Linux 主機 - 如果透過 Proxy 執行,請確認防火牆通訊埠已開啟
- 已啟用 SharePoint Online 的 Microsoft 365 租戶
- Microsoft Defender for Cloud Apps 授權 (隨附於 Microsoft 365 E5 或加購)
- Microsoft Defender 入口網站的全域管理員或安全性管理員角色
- 搭載 Java 8 以上版本的 Windows 或 Linux 伺服器,用於執行 SIEM 代理程式 (可與 Bindplane 位於同一主機)
- 在 Microsoft 365 啟用統合稽核記錄
啟用統合稽核記錄
Microsoft Defender for Cloud Apps 必須先為 Microsoft 365 租戶啟用統一稽核記錄,才能擷取 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 & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
- 按一下「建立服務帳戶」。
- 提供下列設定詳細資料:
- 服務帳戶名稱:輸入帳戶名稱 (例如
bindplane-ingest)。 - 「服務帳戶說明」:輸入說明 (例如
Bindplane agent log ingestion)。
- 服務帳戶名稱:輸入帳戶名稱 (例如
- 點按「Create and continue」(建立並繼續)。
- 在「將專案存取權授予這個服務帳戶」部分,按一下「選取角色」,然後選取「Chronicle 編輯者」。
- 依序點選「繼續」和「完成」。
- 按一下您建立的服務帳戶,然後前往「金鑰」分頁。
- 依序點選「新增金鑰」>「建立新的金鑰」。
- 選取「JSON」,然後點選「建立」。金鑰檔案會下載到電腦。
- 將金鑰檔案儲存為 Bindplane 收集器目錄中的
ingestion-auth.json(Linux 上的/opt/observiq-otel-collector/ingestion-auth.json或 Windows 上的C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或更新config.yaml中的creds_file_path,使其與儲存路徑相符。 - 依序前往「IAM & Admin」(IAM 與管理) >「Settings」(設定),然後複製「Project number」(專案編號)。匯出工具設定時會用到。
方法 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服務應顯示為「RUNNING」。
Linux 安裝
- 開啟具有根層級或 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 代理程式,擷取系統記錄並傳送至 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 Collector」。
- 按一下滑鼠右鍵,然後選取「重新啟動」。
- 按下
確認服務正在執行:
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 轉送 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 活動:
- 選取「App equals」(應用程式等於),然後選擇「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 入口網站中,依序前往「Settings」>「雲端應用程式」>「SIEM agents」。
- 確認 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 且 (has_target_resource 或 has_target),則設為「USER_RESOURCE_ACCESS」;如果 has_principal,則設為「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 | 直接複製值 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。