收集 Rubrik Security Cloud 記錄
本文說明如何使用 Webhook,將 Rubrik Security Cloud 記錄檔擷取至 Google Security Operations。Rubrik Security Cloud (RSC) 是以 SaaS 為基礎的資料安全平台,可在雲端和地端環境中提供備份、復原、異常偵測和資料治理功能。RSC 會以 PagerDuty Common Event Format (PD-CEF) JSON 格式產生安全事件、稽核記錄和作業活動記錄,並推送至 Google SecOps,以進行集中監控和分析。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 具備管理 Webhook 權限的 Rubrik Security Cloud 控制台特殊權限
- 從 Rubrik Security Cloud 到 Google SecOps Webhook 端點的網路連線
- 可存取 Google Cloud 控制台,建立 API 金鑰
在 Google SecOps 中建立 Webhook 動態饋給
建立動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Rubrik Security Cloud Events)。 - 選取「Webhook」做為「來源類型」。
- 選取「Rubrik Security Cloud」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符號 (選用):留空,因為每個 Webhook 請求都包含單一事件。
- 資產命名空間:資產命名空間。
- 擷取標籤:要套用至這個動態饋給事件的標籤。
- 點選「下一步」。
- 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
產生並儲存密鑰
建立動態饋給後,您必須產生驗證用的密鑰:
- 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
- 對話方塊會顯示密鑰。
- 複製並妥善儲存密鑰。
取得動態消息端點網址
- 前往動態消息的「詳細資料」分頁。
- 在「端點資訊」部分,複製「動態消息端點網址」。
- 請儲存這個網址,以供後續步驟使用。
- 按一下「完成」。
建立 Google Cloud API 金鑰
Google SecOps 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限制的 API 金鑰。
建立 API 金鑰
- 前往Google Cloud 控制台的「憑證」頁面。
- 選取專案 (與 Google SecOps 執行個體相關聯的專案)。
- 依序按一下「建立憑證」>「API 金鑰」。
- 系統會建立 API 金鑰,並顯示在對話方塊中。
- 按一下「編輯 API 金鑰」即可限制金鑰。
限制 API 金鑰
- 在「API 金鑰」設定頁面中:
- 名稱:輸入描述性名稱 (例如
Google SecOps Webhook API Key)。
- 名稱:輸入描述性名稱 (例如
- 在「API 限制」下方:
- 選取「Restrict key」(限制金鑰)。
- 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
- 按一下 [儲存]。
- 從頁面頂端的「API key」(API 金鑰) 欄位複製 API 金鑰值。
安全地儲存 API 金鑰。
設定 Rubrik Security Cloud Webhook
建構 Webhook 網址
將 Google SecOps 端點網址、API 金鑰和動態饋給密鑰合併。這兩項憑證都會以查詢參數的形式傳遞:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET>範例:
https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=AIzaSyD...&secret=a1b2c3d4...
在 Rubrik Security Cloud 中建立 Webhook
- 前往
https://<account>.my.rubrik.com登入 Rubrik Security Cloud。 - 按一下右上角的齒輪圖示,然後選取「設定」。
- 按一下「通知」,然後選取「Webhook」。
- 按一下「Add Webhook」。
- 系統會顯示「新增 Webhook」精靈。
在「Provider」中選取「Generic」。
在「Webhook name」(Webhook 名稱) 中輸入描述性名稱 (例如
Google SecOps Integration)。在「端點」中,貼上上述完整的 Webhook 網址,包括
key和secret查詢參數。驗證作業會透過網址進行,因此「驗證」切換鈕可以保持關閉狀態。點選「下一步」。
按一下「測試 Webhook」,確認指定的 Webhook 設定正常運作,然後按一下「下一步」。
畫面上會顯示「選取事件和嚴重性」視窗。
選取 RSC 要傳送至已設定 Webhook 端點的事件:
在「事件」下方,選取要轉送的事件類型:
- 備份
- 復原
- 異常狀況
- 威脅搜索
- 威脅監控
- 設定
- 診斷
- 同步
- 維護作業
- 系統
在「稽核」下方,選取要轉送的稽核類型。驗證稽核類型會提供剖析器的登入對應。
在「嚴重程度」下方,選取觸發快訊的嚴重程度:
- 重大
- 警告
- 資訊式
點選「下一步」。
在「確認」視窗中檢查設定詳細資料,然後按一下「儲存」。
確認 Webhook 運作正常
檢查 Rubrik Security Cloud 網頁掛鉤狀態
- 登入 Rubrik Security Cloud。
- 依序前往「設定」>「通知」>「Webhook」。
- 檢查網路鉤子的「狀態」欄 (應顯示「已啟用」)。
- 監控 Webhook 詳細資料中的任何錯誤訊息。
查看 Google SecOps 動態消息狀態
- 前往 Google SecOps 中的「SIEM 設定」>「動態饋給」。
- 檢查 Webhook 動態消息的「狀態」欄 (應為「有效」)。
檢查「收到的事件」計數 (應會遞增)。
在 Google SecOps 中驗證記錄
- 依序前往「搜尋」>「UDM 搜尋」。
請使用下列查詢:
metadata.vendor_name = "RUBRIK" nocase AND metadata.product_name = "RUBRIK SECURITY CLOUD" nocase將時間範圍調整為「過去 1 小時」。
確認結果中顯示事件。
Webhook 酬載參考資料
Rubrik Security Cloud 預設會以 PagerDuty Common Event Format (PD-CEF) 傳送事件。以下是事件酬載範例:
{ "summary": "Failed backup of vSphere VM 'example-vm'.", "source": "Rubrik Security Cloud", "severity": "critical", "timestamp": "2024-07-18T06:39:40.46Z", "class": "Backup", "custom_details": { "seriesId": "ccd7a8a5-4c58-4c88-bff9-7bdffddb6099", "id": "c2b47274-6323-4025-b307-afed1cfb7574", "type": "Event", "objectId": "83c4a80a-4a57-5699-b399-651089135586", "objectName": "example-vm", "objectType": "VmwareVm", "status": "Failure", "clusterId": "6a271636-9392-4cba-90c5-bdbe227854ab", "clusterName": "production-cluster", "eventName": "Snapshot.BackupFailed", "errorId": "Snapshot.VmwareSnapshotError", "errorCode": "", "errorRemedy": "", "errorReason": "", "auditUserName": "", "auditUserId": "", "location": "vcenter.example.com", "url": "", "customerID": "rubrik-customer", "logicalSizeInBytes": "", "dataTransferredInBytes": "", "effectiveThroughput": "" } }
Webhook 限制和最佳做法
要求限制
| 限制 | 值 |
|---|---|
| 單行記錄的最大長度 | 1 MB |
| 每秒查詢次數 (QPS) 上限 | 15,000 |
| 要求逾時 | 90 秒 |
| 重試行為 | 由傳送者管理。如果超出連線數上限,Google SecOps 會傳回 HTTP 429,傳送系統必須緩衝處理並重試。 |
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
audit_info_label |
additional.fields |
已合併 |
effectiveThroughput_label |
additional.fields |
已合併 |
group_label |
additional.fields |
已合併 |
isPolarisAudit_label |
additional.fields |
已合併 |
label_name_label |
additional.fields |
已合併 |
node_label |
additional.fields |
已合併 |
orgID_label |
additional.fields |
已合併 |
snappable_name_label |
additional.fields |
已合併 |
snappable_type_label |
additional.fields |
已合併 |
snapshot_date_label |
additional.fields |
已合併 |
type_label |
additional.fields |
已合併 |
userNote_label |
additional.fields |
已合併 |
has_target |
extensions.auth.type |
已對應:true → AUTHTYPE_UNSPECIFIED |
hunt_date |
metadata.event_timestamp |
已剖析為 ISO8601 |
timestamp |
metadata.event_timestamp |
已剖析為 ISO8601 |
has_principal |
metadata.event_type |
已對應:true → SCAN_HOST、true → STATUS_UPDATE |
has_target |
metadata.event_type |
已對應:true → USER_LOGIN |
custom_details.eventName |
metadata.product_event_type |
直接對應 |
custom_details.id |
metadata.product_log_id |
直接對應 |
source |
metadata.product_name |
直接對應 |
custom_details.url |
metadata.url_back_to_product |
直接對應 |
custom_details.dataTransferredInBytes |
network.sent_bytes |
直接對應 |
custom_details.customerID |
principal.administrative_domain |
直接對應 |
domain |
principal.domain.name |
直接對應 |
custom_details.ipAddress |
principal.ip |
已合併 |
ip_address |
principal.ip |
已合併 |
is_ip_assigned |
principal.ip |
已對應:false → ip_address |
custom_details.clusterName |
principal.resource.name |
直接對應 |
custom_details.clusterId |
principal.resource.product_object_id |
直接對應 |
user_email |
principal.user.email_addresses |
已合併 |
custom_details.auditUserName |
principal.user.user_display_name |
直接對應 |
user_name |
principal.user.user_display_name |
直接對應 |
action_name |
security_result.action |
已合併 |
custom_details.status |
security_result.action_details |
直接對應 |
category_temp |
security_result.category |
已合併 |
class |
security_result.category_details |
已合併 |
confidence |
security_result.confidence_details |
直接對應 |
custom_details.errorMessage |
security_result.description |
直接對應 |
access_type_label |
security_result.detection_fields |
已合併 |
action_date_label |
security_result.detection_fields |
已合併 |
detection_time_label |
security_result.detection_fields |
已合併 |
directories_snoozed_label |
security_result.detection_fields |
已合併 |
directories_unsnoozed_label |
security_result.detection_fields |
已合併 |
document_count_label |
security_result.detection_fields |
已合併 |
encryption_level_label |
security_result.detection_fields |
已合併 |
errorCode_label |
security_result.detection_fields |
已合併 |
errorId_label |
security_result.detection_fields |
已合併 |
errorReason_label |
security_result.detection_fields |
已合併 |
errorRemedy_label |
security_result.detection_fields |
已合併 |
event_info_label |
security_result.detection_fields |
已合併 |
failed_document_count_label |
security_result.detection_fields |
已合併 |
file_matches_label |
security_result.detection_fields |
已合併 |
files_created_count_label |
security_result.detection_fields |
已合併 |
files_modified_count_label |
security_result.detection_fields |
已合併 |
files_removed_count_label |
security_result.detection_fields |
已合併 |
files_suspicious_count_label |
security_result.detection_fields |
已合併 |
hash_tf_version_label |
security_result.detection_fields |
已合併 |
identity_name_label |
security_result.detection_fields |
已合併 |
num_files_with_matches_label |
security_result.detection_fields |
已合併 |
num_hash_matches_label |
security_result.detection_fields |
已合併 |
num_of_violating_identities_label |
security_result.detection_fields |
已合併 |
num_yara_rule_matches_label |
security_result.detection_fields |
已合併 |
obj_failed_label |
security_result.detection_fields |
已合併 |
obj_partially_succeeded_label |
security_result.detection_fields |
已合併 |
obj_succeeded_label |
security_result.detection_fields |
已合併 |
object_matches_label |
security_result.detection_fields |
已合併 |
policy_name_label |
security_result.detection_fields |
已合併 |
reason_label |
security_result.detection_fields |
已合併 |
remediation_type_label |
security_result.detection_fields |
已合併 |
remedy_label |
security_result.detection_fields |
已合併 |
risk_name_label |
security_result.detection_fields |
已合併 |
seriesID_label |
security_result.detection_fields |
已合併 |
seriesId_label |
security_result.detection_fields |
已合併 |
skipped_document_count_label |
security_result.detection_fields |
已合併 |
strain_name_label |
security_result.detection_fields |
已合併 |
successful_document_count_label |
security_result.detection_fields |
已合併 |
total_accessible_files_at_risk_count_label |
security_result.detection_fields |
已合併 |
vm_count_label |
security_result.detection_fields |
已合併 |
yara_tf_version_label |
security_result.detection_fields |
已合併 |
hunt_name |
security_result.rule_name |
直接對應 |
hunt_type |
security_result.rule_type |
直接對應 |
is_severity_assigned |
security_result.severity |
已對應:false → INFORMATIONAL、false → MEDIUM |
severity |
security_result.severity |
已對應:INFO → INFORMATIONAL、WARNING → MEDIUM |
severity_name |
security_result.severity |
已對應:INFO → INFORMATIONAL、WARNING → MEDIUM |
severity |
security_result.severity_details |
直接對應 |
severity_name |
security_result.severity_details |
直接對應 |
summary |
security_result.summary |
直接對應 |
threat_feed_type |
security_result.threat_feed_name |
直接對應 |
custom_details.logicalSizeInBytes |
target.file.size |
直接對應 |
client_id_label |
target.labels |
已合併 |
client_name_label |
target.labels |
已合併 |
custom_details.location |
target.location.name |
直接對應 |
custom_details.objectName |
target.resource.name |
直接對應 |
object_name |
target.resource.name |
直接對應 |
resource_name |
target.resource.name |
直接對應 |
custom_details.objectId |
target.resource.product_object_id |
直接對應 |
component |
target.resource.resource_subtype |
直接對應 |
custom_details.objectType |
target.resource.resource_subtype |
直接對應 |
is_object_type_assigned |
target.resource.resource_type |
已對應:false → UNSPECIFIED |
class |
target.user.email_addresses |
已對應:Login → user_email |
user_email |
target.user.email_addresses |
已合併 |
each_group |
target.user.group_identifiers |
已合併 |
custom_details.auditUserName |
target.user.user_display_name |
直接對應 |
user_name |
target.user.user_display_name |
直接對應 |
custom_details.auditUserId |
target.user.userid |
直接對應 |
| 不適用 | extensions.auth.type |
常數:AUTHTYPE_UNSPECIFIED |
| 不適用 | metadata.event_type |
常數:USER_LOGIN |
| 不適用 | metadata.product_name |
常數:RUBRIK SECURITY CLOUD |
| 不適用 | metadata.vendor_name |
常數:RUBRIK |
| 不適用 | principal.resource.resource_type |
常數:CLUSTER |
| 不適用 | security_result.severity |
常數:INFORMATIONAL |
| 不適用 | target.resource.resource_type |
常數:UNSPECIFIED |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。