Raccogli i log di Rubrik Security Cloud
Questo documento spiega come importare i log di Rubrik Security Cloud in Google Security Operations utilizzando i webhook. Rubrik Security Cloud (RSC) è una piattaforma di sicurezza dei dati basata su SaaS che fornisce funzionalità di backup, ripristino, rilevamento delle anomalie e governance dei dati in ambienti cloud e on-premise. RSC genera eventi di sicurezza, log di controllo e log delle attività operative in formato JSON PagerDuty Common Event Format (DP-CEF) che possono essere inviati a Google SecOps per il monitoraggio e l'analisi centralizzati.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso con privilegi alla console Rubrik Security Cloud con autorizzazioni per gestire i webhook
- Connettività di rete da Rubrik Security Cloud all'endpoint webhook di Google SecOps
- Accesso alla console Google Cloud per la creazione di chiavi API
Crea un feed webhook in Google SecOps
Creare il feed
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Rubrik Security Cloud Events). - Seleziona Webhook come Tipo di origine.
- Seleziona Rubrik Security Cloud come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- (Facoltativo) Delimitatore di divisione: lascia vuoto, poiché ogni richiesta webhook contiene un singolo evento.
- Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- Fai clic su Avanti.
- Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Genera e salva la chiave segreta
Dopo aver creato il feed, devi generare una chiave segreta per l'autenticazione:
- Nella pagina dei dettagli del feed, fai clic su Genera chiave segreta.
- Una finestra di dialogo mostra la chiave segreta.
- Copia e salva la chiave segreta in modo sicuro.
Recuperare l'URL dell'endpoint del feed
- Vai alla scheda Dettagli del feed.
- Nella sezione Endpoint Information (Informazioni sull'endpoint), copia l'URL dell'endpoint del feed.
- Salva questo URL per i passaggi successivi.
- Fai clic su Fine.
Crea una chiave API Google Cloud
Google SecOps richiede una chiave API per l'autenticazione. Crea una chiave API con limitazioni nella console Google Cloud .
Creare la chiave API
- Vai alla pagina Credenziali della consoleGoogle Cloud .
- Seleziona il tuo progetto (quello associato alla tua istanza Google SecOps).
- Fai clic su Crea credenziali > Chiave API.
- Viene creata una chiave API e visualizzata in una finestra di dialogo.
- Fai clic su Modifica chiave API per limitare la chiave.
Limitare la chiave API
- Nella pagina delle impostazioni Chiave API:
- Nome: inserisci un nome descrittivo (ad esempio,
Google SecOps Webhook API Key).
- Nome: inserisci un nome descrittivo (ad esempio,
- In Limitazioni API:
- Seleziona Limita chiave.
- Nel menu a discesa Seleziona API, cerca e seleziona API Google SecOps (o API Chronicle).
- Fai clic su Salva.
- Copia il valore della chiave API dal campo Chiave API nella parte superiore della pagina.
Salva la chiave API in modo sicuro.
Configurare un webhook di Rubrik Security Cloud
Crea l'URL webhook
Combina l'URL dell'endpoint Google SecOps, la chiave API e la chiave segreta del feed. Entrambe le credenziali vengono passate come parametri di ricerca:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET>Esempio:
https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs?key=AIzaSyD...&secret=a1b2c3d4...
Crea un webhook in Rubrik Security Cloud
- Accedi a Rubrik Security Cloud all'indirizzo
https://<account>.my.rubrik.com. - Fai clic sull'icona dell'ingranaggio nell'angolo in alto a destra e seleziona Impostazioni.
- Fai clic su Notifiche e seleziona Webhook.
- Fai clic su Aggiungi webhook.
- Viene visualizzata la procedura guidata Aggiungi webhook.
In Provider, seleziona Generico.
In Nome webhook, inserisci un nome descrittivo (ad esempio,
Google SecOps Integration).In Endpoint, incolla l'URL webhook completo riportato sopra, inclusi i parametri di ricerca
keyesecret. L'autenticazione viene eseguita tramite l'URL, quindi il pulsante di attivazione/disattivazione Autenticazione può rimanere disattivato.Fai clic su Avanti.
Fai clic su Testa webhook per verificare che la configurazione del webhook specificata funzioni e fai clic su Avanti.
Viene visualizzata la finestra Seleziona evento e gravità.
Seleziona gli eventi che RSC invia all'endpoint webhook configurato:
Nella sezione Eventi, seleziona i tipi di eventi da inoltrare:
- Backup
- Recupero
- Anomalia
- Ricerca di minacce
- Monitoraggio delle minacce
- Configurazione
- Diagnostica
- Sincronizzazione
- Manutenzione
- Sistema
In Audit, seleziona i tipi di audit da inoltrare. I tipi di controllo dell'autenticazione alimentano le mappature di accesso del parser.
In Gravità, seleziona i livelli di gravità per l'attivazione degli avvisi:
- Critico
- Avviso
- Informativa
Fai clic su Avanti.
Rivedi i dettagli della configurazione nella finestra Conferma e fai clic su Salva.
Verifica che il webhook funzioni
Controlla lo stato del webhook di Rubrik Security Cloud
- Accedi a Rubrik Security Cloud.
- Vai a Impostazioni > Notifiche > Webhook.
- Controlla la colonna Stato del webhook (dovrebbe essere visualizzato Attivato).
- Controlla la presenza di eventuali messaggi di errore nei dettagli del webhook.
Controllare lo stato del feed Google SecOps
- Vai a Impostazioni SIEM > Feed in Google SecOps.
- Controlla la colonna Stato del feed webhook (deve essere Attivo).
Controlla il conteggio Eventi ricevuti (deve aumentare).
Verifica i log in Google SecOps
- Vai a Ricerca > Ricerca UDM.
Utilizza la query seguente:
metadata.vendor_name = "RUBRIK" nocase AND metadata.product_name = "RUBRIK SECURITY CLOUD" nocaseRegola l'intervallo di tempo sull'ultima ora.
Verifica che gli eventi vengano visualizzati nei risultati.
Riferimento al payload webhook
Per impostazione predefinita, Rubrik Security Cloud invia gli eventi nel formato PagerDuty Common Event Format (DP-CEF). Di seguito è riportato un esempio di payload evento:
{ "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": "" } }
Limiti e best practice per i webhook
Limiti per le richieste
| Limite | Valore |
|---|---|
| Max single log line | 1 MB |
| QPS max (query al secondo) | 15.000 |
| Timeout richieste | 90 secondi |
| Comportamento di ripetizione | Gestita dal mittente. Google SecOps restituisce HTTP 429 quando viene superato il limite di burst; il sistema di invio deve memorizzare nel buffer e riprovare. |
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
audit_info_label |
additional.fields |
Unita |
effectiveThroughput_label |
additional.fields |
Unita |
group_label |
additional.fields |
Unita |
isPolarisAudit_label |
additional.fields |
Unita |
label_name_label |
additional.fields |
Unita |
node_label |
additional.fields |
Unita |
orgID_label |
additional.fields |
Unita |
snappable_name_label |
additional.fields |
Unita |
snappable_type_label |
additional.fields |
Unita |
snapshot_date_label |
additional.fields |
Unita |
type_label |
additional.fields |
Unita |
userNote_label |
additional.fields |
Unita |
has_target |
extensions.auth.type |
Mappato: true → AUTHTYPE_UNSPECIFIED |
hunt_date |
metadata.event_timestamp |
Analizzato come ISO8601 |
timestamp |
metadata.event_timestamp |
Analizzato come ISO8601 |
has_principal |
metadata.event_type |
Mappato: true → SCAN_HOST, true → STATUS_UPDATE |
has_target |
metadata.event_type |
Mappato: true → USER_LOGIN |
custom_details.eventName |
metadata.product_event_type |
Mappato direttamente |
custom_details.id |
metadata.product_log_id |
Mappato direttamente |
source |
metadata.product_name |
Mappato direttamente |
custom_details.url |
metadata.url_back_to_product |
Mappato direttamente |
custom_details.dataTransferredInBytes |
network.sent_bytes |
Mappato direttamente |
custom_details.customerID |
principal.administrative_domain |
Mappato direttamente |
domain |
principal.domain.name |
Mappato direttamente |
custom_details.ipAddress |
principal.ip |
Unita |
ip_address |
principal.ip |
Unita |
is_ip_assigned |
principal.ip |
Mappato: false → ip_address |
custom_details.clusterName |
principal.resource.name |
Mappato direttamente |
custom_details.clusterId |
principal.resource.product_object_id |
Mappato direttamente |
user_email |
principal.user.email_addresses |
Unita |
custom_details.auditUserName |
principal.user.user_display_name |
Mappato direttamente |
user_name |
principal.user.user_display_name |
Mappato direttamente |
action_name |
security_result.action |
Unita |
custom_details.status |
security_result.action_details |
Mappato direttamente |
category_temp |
security_result.category |
Unita |
class |
security_result.category_details |
Unita |
confidence |
security_result.confidence_details |
Mappato direttamente |
custom_details.errorMessage |
security_result.description |
Mappato direttamente |
access_type_label |
security_result.detection_fields |
Unita |
action_date_label |
security_result.detection_fields |
Unita |
detection_time_label |
security_result.detection_fields |
Unita |
directories_snoozed_label |
security_result.detection_fields |
Unita |
directories_unsnoozed_label |
security_result.detection_fields |
Unita |
document_count_label |
security_result.detection_fields |
Unita |
encryption_level_label |
security_result.detection_fields |
Unita |
errorCode_label |
security_result.detection_fields |
Unita |
errorId_label |
security_result.detection_fields |
Unita |
errorReason_label |
security_result.detection_fields |
Unita |
errorRemedy_label |
security_result.detection_fields |
Unita |
event_info_label |
security_result.detection_fields |
Unita |
failed_document_count_label |
security_result.detection_fields |
Unita |
file_matches_label |
security_result.detection_fields |
Unita |
files_created_count_label |
security_result.detection_fields |
Unita |
files_modified_count_label |
security_result.detection_fields |
Unita |
files_removed_count_label |
security_result.detection_fields |
Unita |
files_suspicious_count_label |
security_result.detection_fields |
Unita |
hash_tf_version_label |
security_result.detection_fields |
Unita |
identity_name_label |
security_result.detection_fields |
Unita |
num_files_with_matches_label |
security_result.detection_fields |
Unita |
num_hash_matches_label |
security_result.detection_fields |
Unita |
num_of_violating_identities_label |
security_result.detection_fields |
Unita |
num_yara_rule_matches_label |
security_result.detection_fields |
Unita |
obj_failed_label |
security_result.detection_fields |
Unita |
obj_partially_succeeded_label |
security_result.detection_fields |
Unita |
obj_succeeded_label |
security_result.detection_fields |
Unita |
object_matches_label |
security_result.detection_fields |
Unita |
policy_name_label |
security_result.detection_fields |
Unita |
reason_label |
security_result.detection_fields |
Unita |
remediation_type_label |
security_result.detection_fields |
Unita |
remedy_label |
security_result.detection_fields |
Unita |
risk_name_label |
security_result.detection_fields |
Unita |
seriesID_label |
security_result.detection_fields |
Unita |
seriesId_label |
security_result.detection_fields |
Unita |
skipped_document_count_label |
security_result.detection_fields |
Unita |
strain_name_label |
security_result.detection_fields |
Unita |
successful_document_count_label |
security_result.detection_fields |
Unita |
total_accessible_files_at_risk_count_label |
security_result.detection_fields |
Unita |
vm_count_label |
security_result.detection_fields |
Unita |
yara_tf_version_label |
security_result.detection_fields |
Unita |
hunt_name |
security_result.rule_name |
Mappato direttamente |
hunt_type |
security_result.rule_type |
Mappato direttamente |
is_severity_assigned |
security_result.severity |
Mappato: false → INFORMATIONAL, false → MEDIUM |
severity |
security_result.severity |
Mappato: INFO → INFORMATIONAL, WARNING → MEDIUM |
severity_name |
security_result.severity |
Mappato: INFO → INFORMATIONAL, WARNING → MEDIUM |
severity |
security_result.severity_details |
Mappato direttamente |
severity_name |
security_result.severity_details |
Mappato direttamente |
summary |
security_result.summary |
Mappato direttamente |
threat_feed_type |
security_result.threat_feed_name |
Mappato direttamente |
custom_details.logicalSizeInBytes |
target.file.size |
Mappato direttamente |
client_id_label |
target.labels |
Unita |
client_name_label |
target.labels |
Unita |
custom_details.location |
target.location.name |
Mappato direttamente |
custom_details.objectName |
target.resource.name |
Mappato direttamente |
object_name |
target.resource.name |
Mappato direttamente |
resource_name |
target.resource.name |
Mappato direttamente |
custom_details.objectId |
target.resource.product_object_id |
Mappato direttamente |
component |
target.resource.resource_subtype |
Mappato direttamente |
custom_details.objectType |
target.resource.resource_subtype |
Mappato direttamente |
is_object_type_assigned |
target.resource.resource_type |
Mappato: false → UNSPECIFIED |
class |
target.user.email_addresses |
Mappato: Login → user_email |
user_email |
target.user.email_addresses |
Unita |
each_group |
target.user.group_identifiers |
Unita |
custom_details.auditUserName |
target.user.user_display_name |
Mappato direttamente |
user_name |
target.user.user_display_name |
Mappato direttamente |
custom_details.auditUserId |
target.user.userid |
Mappato direttamente |
| N/D | extensions.auth.type |
Costante: AUTHTYPE_UNSPECIFIED |
| N/D | metadata.event_type |
Costante: USER_LOGIN |
| N/D | metadata.product_name |
Costante: RUBRIK SECURITY CLOUD |
| N/D | metadata.vendor_name |
Costante: RUBRIK |
| N/D | principal.resource.resource_type |
Costante: CLUSTER |
| N/D | security_result.severity |
Costante: INFORMATIONAL |
| N/D | target.resource.resource_type |
Costante: UNSPECIFIED |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.