收集 Azure Cosmos DB 記錄
剖析器版本:1.0
本文說明如何使用 Microsoft Azure Blob 儲存體設定 Google Security Operations 資訊提供,藉此收集 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 儲存體帳戶
建立儲存空間帳戶
- 在 Azure 入口網站中,搜尋「儲存體帳戶」。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取現有資料庫或建立新資料庫 儲存體帳戶名稱 輸入不重複的名稱 (例如 cosmosdbsecops)區域 選取區域 (例如 East US)效能 標準 (建議) 備援功能 GRS (異地備援儲存空間) 或 LRS (本機備援儲存空間) 按一下「Review + create」。
查看帳戶總覽,然後按一下「建立」。
等待部署作業完成。
取得儲存空間帳戶憑證
- 前往您剛建立的「儲存空間帳戶」。
- 在左側導覽中,選取「Security + networking」(安全性 + 網路) 下方的「Access keys」(存取金鑰)。
- 按一下「顯示金鑰」。
- 複製並儲存下列項目,以供日後使用:
- 儲存空間帳戶名稱:您的儲存空間帳戶名稱 (例如
cosmosdbsecops) - 「金鑰 1」或「金鑰 2」:共用存取金鑰 (採用 Base64 編碼的 512 位元隨機字串)
- 儲存空間帳戶名稱:您的儲存空間帳戶名稱 (例如
取得 Blob 服務端點
- 在同一個儲存空間帳戶中,選取左側導覽列的「Endpoints」(端點)。
- 複製並儲存「Blob service」端點網址。
- 範例:
https://cosmosdbsecops.blob.core.windows.net/
- 範例:
設定 Azure Cosmos DB 診斷設定
- 在 Azure 入口網站中,搜尋 Azure Cosmos DB。
- 選取 Azure Cosmos DB 帳戶。
- 在左側導覽面板中,選取「監控」下方的「診斷設定」。
- 按一下「+ 新增診斷設定」。
- 請提供下列設定詳細資料:
- 診斷設定名稱:輸入描述性名稱 (例如
cosmosdb-to-secops)。 - 在「記錄」部分中,選取下列類別:
- DataPlaneRequests:資料平面作業記錄,包括讀取、寫入和刪除要求
- QueryRuntimeStatistics:已執行查詢的查詢文字和執行階段統計資料
- PartitionKeyStatistics:邏輯分區索引鍵的儲存空間用量統計資料
- PartitionKeyRUConsumption:每個邏輯分區索引鍵的請求單位消耗量
- ControlPlaneRequests:控制層作業,包括帳戶修改、容錯移轉政策變更、索引政策更新、VNet 和防火牆規則變更,以及 IAM 角色指派
- TableApiRequests:Table API 帳戶的資料平面要求 (如適用)
- MongoRequests:MongoDB API 帳戶的資料平面要求 (如適用)
- CassandraRequests:Cassandra API 帳戶的資料層要求 (如適用)
- GremlinRequests:Gremlin API 帳戶的資料平面要求 (如適用)
- 在「目的地詳細資料」部分,選取「封存至儲存空間帳戶」核取方塊。
- 訂閱項目:選取包含儲存空間帳戶的訂閱項目。
- 儲存空間帳戶:選取您建立的儲存空間帳戶 (例如
cosmosdbsecops)。
- 診斷設定名稱:輸入描述性名稱 (例如
按一下 [儲存]。
瞭解 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-dataplanerequestsinsights-logs-queryruntimestatisticsinsights-logs-partitionkeystatisticsinsights-logs-partitionkeyruconsumptioninsights-logs-controlplanerequests
在 Google SecOps 中設定資訊提供,擷取 Azure Cosmos DB 記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Azure Cosmos DB Logs)。 - 選取「Microsoft Azure Blob Storage V2」做為「來源類型」。
- 選取「Azure Cosmos DB」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
Azure URI:輸入 Blob 服務端點網址和容器路徑:
https://cosmosdbsecops.blob.core.windows.net/insights-logs-dataplanerequests/
更改下列內容:
cosmosdbsecops:您的 Azure 儲存空間帳戶名稱。insights-logs-dataplanerequests:儲存記錄的 Blob 容器名稱。
- 來源刪除選項:根據偏好選取刪除選項:
- 永不:轉移後一律不刪除任何檔案。
- 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
- 刪除已轉移的檔案和空白目錄:成功轉移後刪除檔案和空白目錄。
- 檔案存在時間上限:納入在過去天數內修改的檔案。預設值為 180 天。
- 共用金鑰:輸入從儲存空間帳戶擷取的共用金鑰值 (存取金鑰)。
- 資產命名空間:資產命名空間。
- 擷取標籤:要套用至這個動態饋給事件的標籤。
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
從多個容器擷取資料
如果您在診斷設定中選取多個記錄類別,每個類別都會建立個別的 Blob 容器。為要擷取的每個容器分別建立動態饋給:
- 為主要資料平面記錄檔建立動態饋給 (如上所示)。
- 按一下「新增動態饋給」即可建立其他動態饋給。
- 在 Azure URI 中使用相同的儲存空間帳戶憑證,但使用不同的容器路徑。
範例:
- 動態饋給 1 (資料層要求):
https://cosmosdbsecops.blob.core.windows.net/insights-logs-dataplanerequests/ - 動態饋給 2 (查詢執行階段統計資料):
https://cosmosdbsecops.blob.core.windows.net/insights-logs-queryruntimestatistics/ - 動態饋給 3 (控制層要求):
https://cosmosdbsecops.blob.core.windows.net/insights-logs-controlplanerequests/ - 動態消息 4 (分割區鍵 RU 消耗量):
https://cosmosdbsecops.blob.core.windows.net/insights-logs-partitionkeyruconsumption/ 動態饋給 5 (分割區鍵統計資料):
https://cosmosdbsecops.blob.core.windows.net/insights-logs-partitionkeystatistics/
設定 Azure 儲存體防火牆 (如已啟用)
如果 Azure 儲存體帳戶使用防火牆,您必須新增 Google SecOps IP 範圍。
- 在 Azure 入口網站中,前往「儲存體帳戶」。
- 選取「Security + networking」(安全性 + 網路) 下方的「Networking」(網路)。
- 在「防火牆和虛擬網路」下方,選取「從所選虛擬網路和 IP 位址啟用」。
- 在「防火牆」部分的「位址範圍」下方,按一下「+ 新增 IP 範圍」。
以 CIDR 標記法新增每個 Google SecOps IP 範圍。
如要取得目前的 IP 範圍,請按照下列步驟操作:
- 請參閱 IP 許可清單說明文件
- 或使用 Feed Management API 以程式輔助方式擷取
按一下 [儲存]。
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 |
已對應:true → parameter_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)Windows → WINDOWS、(?i)mac → MAC、(?i)Linux → LINUX |
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 專業人員尋求答案。