收集 Rubrik Security Cloud 日志
本文档介绍了如何使用 Webhook 将 Rubrik Security Cloud 日志注入到 Google Security Operations。Rubrik Security Cloud (RSC) 是一个基于 SaaS 的数据安全平台,可在云端和本地环境中提供备份、恢复、异常检测和数据治理功能。RSC 会以 PagerDuty 通用事件格式 (PD-CEF) JSON 生成安全事件、审核日志和运营活动日志,这些日志可以推送到 Google SecOps 以进行集中监控和分析。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 Rubrik Security Cloud 控制台的特权访问权限,并拥有管理 Webhook 的权限
- 从 Rubrik Security Cloud 到 Google SecOps Webhook 端点的网络连接
- 有权访问 Google Cloud 控制台以创建 API 密钥
在 Google SecOps 中创建 Webhook Feed
创建 Feed
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Rubrik Security Cloud Events)。 - 选择 Webhook 作为来源类型。
- 选择 Rubrik Security Cloud 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- 定界符(可选):留空,因为每个网络钩子请求都包含一个事件。
- 资产命名空间:资产命名空间。
- 注入标签:要应用于此 Feed 中事件的标签。
- 点击下一步。
- 在最终确定界面中查看新的 Feed 配置,然后点击提交。
生成并保存密钥
创建 Feed 后,您必须生成用于身份验证的密钥:
- 在 Feed 详情页面上,点击生成密钥。
- 系统会显示一个对话框,其中包含密钥。
- 复制并妥善保存密钥。
获取 Feed 端点网址
- 前往相应 Feed 的详细信息标签页。
- 在端点信息部分,复制 Feed 端点网址。
- 保存此网址以供后续步骤使用。
- 点击完成。
创建 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 限制下:
- 选择限制密钥。
- 在选择 API 下拉菜单中,搜索并选择 Google SecOps API(或 Chronicle API)。
- 点击保存。
- 从页面顶部的 API 密钥字段复制 API 密钥值。
安全地保存 API 密钥。
配置 Rubrik Security Cloud 网络钩子
构建网络钩子网址
将 Google SecOps 端点网址、API 密钥和 Feed Secret 密钥组合在一起。这两个凭据都以查询参数的形式传递:
<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。
- 点击添加 Webhook。
- 系统会显示“添加 Webhook”向导。
在提供方中,选择通用。
在 Webhook 名称中,输入一个描述性名称(例如
Google SecOps Integration)。在端点中,粘贴上述完整的网络钩子网址,包括
key和secret查询参数。身份验证由网址执行,因此身份验证切换开关可以保持关闭状态。点击下一步。
点击 Test Webhook 以验证指定的 Webhook 配置是否有效,然后点击 Next。
系统随即会显示选择事件和严重程度窗口。
选择 RSC 发送到已配置的网络钩子端点的事件:
在事件下,选择要转发的事件类型:
- 备份
- 恢复
- 异常值
- 威胁搜寻
- 威胁监控
- 配置
- 诊断
- 同步
- 维护
- 系统
在审核下,选择要转发的审核类型。身份验证审核类型会提供给解析器的登录映射。
在严重程度下,选择触发提醒的严重程度:
- 严重
- 警告
- 信息型
点击下一步。
查看确认窗口中的配置详细信息,然后点击保存。
验证 Webhook 是否正常运行
检查 Rubrik Security Cloud webhook 状态
- 登录 Rubrik Security Cloud。
- 依次前往设置 > 通知 > Webhook。
- 查看 Webhook 的状态列(应显示为已启用)。
- 监控 Webhook 详情中是否有任何错误消息。
检查 Google SecOps Feed 状态
- 在 Google SecOps 中,依次前往 SIEM 设置> Feed。
- 查看您的 Webhook Feed 的状态列(应为有效)。
检查收到的事件数(应会递增)。
在 Google SecOps 中验证日志
- 依次前往搜索 > UDM 搜索。
使用以下查询:
metadata.vendor_name = "RUBRIK" nocase AND metadata.product_name = "RUBRIK SECURITY CLOUD" nocase将时间范围调整为“过去 1 小时”。
验证活动是否显示在结果中。
网络钩子载荷参考
Rubrik Security Cloud 默认以 PagerDuty 通用事件格式 (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(每秒查询次数) | 15000 |
| 请求超时 | 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 |