Rubrik Security Cloud のログを収集する
このドキュメントでは、ウェブフックを使用して Rubrik Security Cloud ログを Google Security Operations に取り込む方法について説明します。Rubrik Security Cloud(RSC)は、クラウド環境とオンプレミス環境全体でバックアップ、復元、異常検出、データ ガバナンス機能を提供する SaaS ベースのデータ セキュリティ プラットフォームです。RSC は、PagerDuty Common Event Format(PD-CEF)JSON でセキュリティ イベント、監査ログ、運用アクティビティ ログを生成します。これらのログは、一元化されたモニタリングと分析のために Google SecOps に push できます。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Webhook を管理する権限を持つ Rubrik Security Cloud コンソールへの特権アクセス
- Rubrik Security Cloud から Google SecOps Webhook エンドポイントへのネットワーク接続
- API キーの作成のための Google Cloud コンソールへのアクセス
Google SecOps で Webhook フィードを作成する
フィードを作成する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Rubrik Security Cloud Events)。 - [Source type] として [Webhook] を選択します。
- [ログタイプ] として [Rubrik Security Cloud] を選択します。
- [次へ] をクリックします。
- 次の入力パラメータの値を指定します。
- 分割区切り文字(省略可): 各 Webhook リクエストには単一のイベントが含まれているため、空白のままにします。
- アセットの名前空間: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- [次へ] をクリックします。
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
秘密鍵を生成して保存する
フィードを作成したら、認証用のシークレット キーを生成する必要があります。
- フィードの詳細ページで、[シークレット キーを生成] をクリックします。
- ダイアログに秘密鍵が表示されます。
- 秘密鍵をコピーして安全に保存します。
フィード エンドポイントの URL を取得する
- フィードの [詳細] タブに移動します。
- [エンドポイント情報] セクションで、[フィード エンドポイント URL] をコピーします。
- この URL は次の手順で使用します。
- [完了] をクリックします。
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 Webhook を構成する
Webhook URL を作成する
Google SecOps エンドポイント URL、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] を選択します。
- [Webhook を追加] をクリックします。
- [Webhook の追加] ウィザードが表示されます。
[プロバイダ] で [汎用] を選択します。
[Webhook 名] に、わかりやすい名前(
Google SecOps Integrationなど)を入力します。[Endpoint] に、上記の完全な Webhook URL を貼り付けます。
keyとsecretの両方のクエリ パラメータを含めます。認証は URL によって行われるため、[認証] 切り替えはオフのままにできます。[次へ] をクリックします。
[Webhook をテスト] をクリックして、指定した Webhook 構成が機能することを確認し、[次へ] をクリックします。
[Select event and severity] ウィンドウが表示されます。
構成された Webhook エンドポイントに RSC が送信するイベントを選択します。
[イベント] で、転送するイベントタイプを選択します。
- バックアップ
- 復旧
- 異常
- 脅威ハンティング
- 脅威のモニタリング
- 構成
- 診断
- 同期
- メンテナンス
- システム
[監査] で、転送する監査タイプを選択します。認証監査タイプは、パーサーのログイン マッピングにフィードされます。
[重大度] で、アラートをトリガーする重大度レベルを選択します。
- Critical(致命的)
- 警告
- 情報
[次へ] をクリックします。
[確認] ウィンドウで構成の詳細を確認し、[保存] をクリックします。
Webhook が機能していることを確認する
Rubrik Security Cloud Webhook のステータスを確認する
- Rubrik Security Cloud にログインします。
- [設定] > [通知] > [Webhook] に移動します。
- Webhook の [ステータス] 列を確認します([有効] と表示されているはずです)。
- Webhook の詳細でエラー メッセージをモニタリングします。
Google SecOps フィードのステータスを確認する
- Google SecOps で、[SIEM 設定] > [フィード] に移動します。
- Webhook フィードの [ステータス] 列を確認します([有効] になっているはずです)。
[Events received] カウントを確認します(増加しているはずです)。
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 の上限とベスト プラクティス
リクエストに関する上限
| 上限 | 値 |
|---|---|
| Max single log line | 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 のプロフェッショナルから回答を得ることができます。