Raccogli i log di Oracle Cloud Infrastructure - Oracle Cloud Guard
Questo documento spiega come configurare Oracle Cloud Infrastructure Cloud Guard per eseguire il push dei log in Google Security Operations utilizzando i webhook.
Oracle Cloud Guard è un servizio di sicurezza nativo del cloud che monitora, identifica e contribuisce a mantenere una solida postura di sicurezza su Oracle Cloud Infrastructure (OCI). Cloud Guard esamina le risorse OCI per individuare i punti deboli della sicurezza relativi alla configurazione e rileva attività anomale. Quando Cloud Guard rileva una deviazione da una regola del rilevatore, crea un evento Problema che fornisce un monitoraggio completo della sicurezza nel tuo tenant OCI. Questa integrazione utilizza OCI Events Service e OCI Functions per inoltrare gli eventi dei problemi di Cloud Guard a Google SecOps quasi in tempo reale.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Un tenant Oracle Cloud Infrastructure attivo con Cloud Guard abilitato
- Accesso amministrativo a Oracle Cloud Infrastructure Console
- Autorizzazioni per creare e gestire applicazioni OCI Functions
- Autorizzazioni per creare regole OCI Events e argomenti di Notifiche
- Accesso a OCI Cloud Shell o a un ambiente locale con Fn Project CLI installato
- Docker installato (per la creazione locale di OCI Functions)
- Accesso a Google Cloud Console (per la creazione della chiave 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,
OCI Cloud Guard Problems). - Seleziona Webhook come Tipo di origine.
- Seleziona Oracle Cloud Infrastructure - Oracle Cloud Guard come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- Delimitatore di divisione (facoltativo): lascia vuoto (ogni chiamata di funzione invia 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.
Importante: la chiave segreta viene visualizzata una sola volta e non può essere recuperata in un secondo momento. Se la perdi, devi generare una nuova chiave segreta.
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.
Il formato dell'URL è:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateo
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSalva questo URL per i passaggi successivi.
Fai clic su Fine.
Creare una chiave API Google Cloud
Chronicle richiede una chiave API per l'autenticazione. Crea una chiave API con limitazioni nella Google Cloud Console.
Crea la chiave API
- Vai alla pagina Credenziali della console Google Cloud.
- Seleziona il tuo progetto (quello associato alla tua istanza di Chronicle).
- 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,
Chronicle 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.
Abilita il risponditore di eventi Cloud di Cloud Guard
Cloud Guard utilizza il risponditore di Cloud Event per emettere i dettagli del problema nel servizio OCI Events. Il risponditore di eventi Cloud fa parte della ricetta del risponditore e deve essere attivato e impostato per l'esecuzione automatica.
Attiva la regola Cloud Event nella ricetta Responder
- Accedi a Oracle Cloud Infrastructure Console.
- Apri il menu di navigazione e seleziona Identità e sicurezza > Cloud Guard > Ricette.
- Seleziona Responder Recipes.
- Fai clic sulla formula di chi risponde allegata al tuo target.
- Nella sezione Regole di risposta, individua la regola Eventi cloud.
- Se lo stato è Disabilitata:
- Apri il menu Azioni (tre puntini) e seleziona Modifica.
- Cambia lo Stato in Attivato.
- Fai clic su Salva.
Configura l'esecuzione automatica sulla destinazione
- Nella console Oracle Cloud Infrastructure, apri il menu di navigazione e seleziona Identità e sicurezza > Cloud Guard > Configurazione > Target.
- Seleziona il comparto target.
- In Risorse, seleziona Ricette per chi risponde.
- Fai clic sul link della ricetta di chi risponde.
- Individua la regola di risposta Evento Cloud.
- Apri il menu Azioni (tre puntini) e seleziona Modifica.
- Imposta Trigger regola su Esegui automaticamente.
- Seleziona la casella di controllo CONFERMA ESECUZIONE AUTOMATICA.
Fai clic su Salva.
Crea l'applicazione OCI Functions
Crea un'applicazione OCI Functions che ospiterà la funzione responsabile dell'inoltro degli eventi Cloud Guard a Google SecOps.
Crea l'applicazione
- Nella console Oracle Cloud Infrastructure, apri il menu di navigazione e seleziona Developer Services > Functions > Applications.
- Seleziona il comparto in cui vuoi creare l'applicazione.
- Fai clic su Crea applicazione.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci
cloudguard-chronicle-forwarder - VCN: seleziona un VCN con accesso a internet (necessario per consentire alla funzione di raggiungere l'endpoint webhook di Chronicle)
- Subnet: seleziona una subnet pubblica o una subnet privata con un gateway NAT configurato
- Nome: inserisci
- Fai clic su Crea.
Crea ed esegui il deployment della funzione
Utilizza OCI Cloud Shell o un ambiente locale con Fn Project CLI per creare ed eseguire il deployment della funzione.
- Apri OCI Cloud Shell dalla console Oracle Cloud Infrastructure (fai clic sull'icona Cloud Shell nella barra di navigazione in alto).
Configura il contesto Fn per l'applicazione OCI Functions:
fn list context fn use context <your-region-context> fn update context oracle.compartment-id <compartment_OCID> fn update context registry <region-key>.ocir.io/<tenancy-namespace>/cloudguard-chronicleInizializza una nuova funzione Python:
fn init --runtime python cloudguard-to-chronicle cd cloudguard-to-chronicleSostituisci i contenuti del file
func.pycon il seguente codice:import io import json import logging import requests from fdk import response def handler(ctx, data: io.BytesIO = None): """ OCI Function that receives Cloud Guard events from OCI Events Service and forwards them to Google SecOps (Chronicle) webhook endpoint. """ logger = logging.getLogger() try: cfg = ctx.Config() chronicle_endpoint = cfg.get("CHRONICLE_ENDPOINT") chronicle_api_key = cfg.get("CHRONICLE_API_KEY") chronicle_secret = cfg.get("CHRONICLE_SECRET") if not all([chronicle_endpoint, chronicle_api_key, chronicle_secret]): logger.error("Missing required configuration: CHRONICLE_ENDPOINT, CHRONICLE_API_KEY, or CHRONICLE_SECRET") return response.Response( ctx, response_data=json.dumps({"error": "Missing configuration"}), headers={"Content-Type": "application/json"}, status_code=500 ) event_data = json.loads(data.getvalue()) logger.info(f"Received Cloud Guard event: {event_data.get('eventType', 'unknown')}") webhook_url = f"{chronicle_endpoint}?key={chronicle_api_key}&secret={chronicle_secret}" headers = { "Content-Type": "application/json" } resp = requests.post( webhook_url, json=event_data, headers=headers, timeout=30 ) if resp.status_code >= 200 and resp.status_code < 300: logger.info(f"Successfully forwarded event to Chronicle (HTTP {resp.status_code})") else: logger.error(f"Failed to forward event to Chronicle (HTTP {resp.status_code}): {resp.text}") return response.Response( ctx, response_data=json.dumps({"status": resp.status_code}), headers={"Content-Type": "application/json"}, status_code=200 ) except Exception as e: logger.error(f"Error processing Cloud Guard event: {str(e)}") return response.Response( ctx, response_data=json.dumps({"error": str(e)}), headers={"Content-Type": "application/json"}, status_code=500 )Sostituisci i contenuti del file
requirements.txt:fdk>=0.1.0 requests>=2.25.0Esegui il deployment della funzione nell'applicazione:
fn -v deploy --app cloudguard-chronicle-forwarderAttendi il completamento del deployment.
Configura le variabili di ambiente della funzione
- Nella console Oracle Cloud Infrastructure, apri il menu di navigazione e seleziona Developer Services > Functions > Applications.
- Fai clic sull'applicazione cloudguard-chronicle-forwarder.
- In Risorse, seleziona Funzioni.
- Fai clic sulla funzione cloudguard-to-chronicle.
- In Risorse, seleziona Configurazione.
Fai clic su Modifica e aggiungi le seguenti coppie chiave-valore:
Chiave Valore CHRONICLE_ENDPOINTL'URL dell'endpoint webhook di Chronicle (ad esempio, https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate)CHRONICLE_API_KEYLa chiave API di Google Cloud creata per il webhook di Chronicle CHRONICLE_SECRETLa chiave segreta del webhook di Chronicle Fai clic su Salva.
Crea criteri IAM per OCI Functions
Il servizio OCI Functions e il servizio Events richiedono criteri IAM per richiamare la funzione.
Crea un gruppo dinamico per la funzione
- Nella console Oracle Cloud Infrastructure, apri il menu di navigazione e seleziona Identità e sicurezza > Domini.
- Seleziona il dominio Predefinito.
- In Risorse del dominio identità, seleziona Gruppi dinamici.
- Fai clic su Crea gruppo dinamico.
Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci
cloudguard-chronicle-functions - Descrizione: inserisci
Dynamic group for Cloud Guard to Chronicle forwarder function - Regole di corrispondenza: inserisci la seguente regola:
ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_OCID>'}- Nome: inserisci
Fai clic su Crea.
Crea criteri IAM
- Nella console Oracle Cloud Infrastructure, apri il menu di navigazione e seleziona Identity & Security > Policies.
- Assicurati di trovarti nel compartimento radice.
- Fai clic su Crea criterio.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci
cloudguard-chronicle-policy - Descrizione: inserisci
Allows Events Service to invoke Cloud Guard Chronicle forwarder function - Compartment (Compartimento): assicurati che sia selezionato il compartimento principale.
- Nome: inserisci
- Nella sezione Policy Builder, attiva/disattiva Mostra editor manuale.
Nel campo Dichiarazione, inserisci le seguenti dichiarazioni delle norme:
Allow dynamic-group cloudguard-chronicle-functions to use fn-function in compartment <compartment_name> Allow dynamic-group cloudguard-chronicle-functions to use fn-invocation in compartment <compartment_name> Allow service cloudguardevents to use fn-function in compartment <compartment_name> Allow service cloudguardevents to use fn-invocation in compartment <compartment_name>Fai clic su Crea.
Crea una regola OCI Events per Cloud Guard
Crea una regola Eventi che attiva la funzione OCI quando Cloud Guard rileva, ignora o risolve un problema.
Crea la regola Eventi
Nella console Oracle Cloud Infrastructure, apri il menu di navigazione e seleziona Observability & Management > Events Service > Rules.
Fai clic su Crea regola.
Fornisci i seguenti dettagli di configurazione:
- Nome visualizzato: inserisci
cloudguard-to-chronicle - Descrizione: inserisci
Forwards Cloud Guard problem events to Google SecOps via OCI Functions
- Nome visualizzato: inserisci
Nella sezione Condizioni della regola:
- Imposta Condizione su Tipo di evento.
- Imposta Nome servizio su Cloud Guard.
- Imposta Tipo di evento su quanto segue (seleziona più opzioni):
- Rilevato - Problema
- Ignorato - Problema
- Corretto - Problema
Nella sezione Azioni:
- Imposta Tipo di azione su Funzioni.
- Imposta Compartimento funzione sul compartimento contenente l'applicazione di funzione.
- Imposta Function Application su cloudguard-chronicle-forwarder.
- Imposta Funzione su cloudguard-to-chronicle.
Fai clic su Crea regola.
(Facoltativo) Filtra per livello di rischio
Per inoltrare solo i problemi di gravità elevata, aggiungi un filtro degli attributi alla regola Eventi:
- Nella sezione Condizioni della regola, fai clic su + Un'altra condizione.
- Imposta Condizione su Attributo.
- Imposta Nome attributo su
riskLevel. Imposta Valori attributo sui livelli di rischio desiderati:
CRITICALHIGH
Verificare l'integrazione
Testare manualmente la funzione
- Nella console Oracle Cloud Infrastructure, apri il menu di navigazione e seleziona Developer Services > Functions > Applications.
- Fai clic sull'applicazione cloudguard-chronicle-forwarder.
- In Risorse, seleziona Funzioni.
- Fai clic sulla funzione cloudguard-to-chronicle.
Fai clic su Richiama per testare la funzione con dati di esempio oppure utilizza OCI Cloud Shell:
echo '{"eventType":"com.oraclecloud.cloudguard.problemdetected","cloudEventsVersion":"0.1","eventID":"test-event-001","data":{"compartmentId":"ocid1.compartment.oc1..example","resourceName":"test-problem","additionalDetails":{"riskLevel":"HIGH","problemDescription":"Test problem for integration verification","status":"OPEN","region":"us-ashburn-1"}}}' | fn invoke cloudguard-chronicle-forwarder cloudguard-to-chronicleVerifica i log della funzione andando a Servizi per sviluppatori > Funzioni > Applicazioni > cloudguard-chronicle-forwarder e selezionando la sezione Log.
Cerca le voci di log che confermano l'inoltro riuscito:
Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected Successfully forwarded event to Chronicle (HTTP 200)
Verifica in Google SecOps
- Accedi a Google SecOps.
- Vai a Ricerca ed esegui una query per gli eventi con il tipo di log
OCI_CLOUDGUARD. - Verifica che gli eventi di problema di Cloud Guard vengano visualizzati nei risultati di ricerca.
Se gli eventi non vengono visualizzati:
- Verifica l'URL dell'endpoint webhook, la chiave API e la chiave segreta di Chronicle nella configurazione della funzione
- Verifica che la regola Events si trovi nella regione OCI corretta (regione di reporting di Cloud Guard)
- Verifica che il risponditore di eventi Cloud sia abilitato e impostato per l'esecuzione automatica
- Esamina i log delle funzioni per individuare i messaggi di errore
Riferimento ai tipi di eventi Cloud Guard
Cloud Guard emette i seguenti tipi di eventi tramite il servizio OCI Events:
| Tipo di evento | Trigger |
|---|---|
com.oraclecloud.cloudguard.problemdetected |
È stato rilevato un nuovo problema |
com.oraclecloud.cloudguard.problemdismissed |
Un problema viene ignorato |
com.oraclecloud.cloudguard.problemremediated |
Un problema viene risolto |
com.oraclecloud.cloudguard.sightingdetected |
È stato rilevato un nuovo avvistamento |
Riferimento ai metodi di autenticazione
I feed webhook di Chronicle supportano più metodi di autenticazione. Scegli il metodo supportato dal tuo fornitore.
Metodo 1: intestazioni personalizzate (consigliato)
Se il tuo fornitore supporta le intestazioni HTTP personalizzate, utilizza questo metodo per una maggiore sicurezza.
Formato della richiesta:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Vantaggi:
- Chiave API e secret non visibili nell'URL
- Più sicuro (le intestazioni non vengono registrate nei log di accesso del server web)
- Metodo preferito se supportato dal fornitore
Metodo 2: parametri di query
Se il fornitore non supporta le intestazioni personalizzate, aggiungi le credenziali all'URL.
Formato dell'URL:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Esempio:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...Formato della richiesta:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Svantaggi:
- Credenziali visibili nell'URL
- Potrebbe essere registrato nei log di accesso del server web
- Meno sicuri delle intestazioni
Metodo 3: ibrido (URL + intestazione)
Alcune configurazioni utilizzano la chiave API nell'URL e la chiave segreta nell'intestazione.
Formato della richiesta:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Nomi delle intestazioni di autenticazione
Chronicle accetta i seguenti nomi di intestazione per l'autenticazione:
Per la chiave API:
x-goog-chronicle-auth(consigliata)X-Goog-Chronicle-Auth(senza distinzione tra maiuscole e minuscole)
Per la chiave segreta:
x-chronicle-auth(consigliata)X-Chronicle-Auth(senza distinzione tra maiuscole e minuscole)
Limiti e best practice per i webhook
Limiti per le richieste
| Limite | Valore |
|---|---|
| Dimensioni massime della richiesta | 4 MB |
| QPS max (query al secondo) | 15.000 |
| Timeout richieste | 30 secondi |
| Comportamento di ripetizione | Automatico con backoff esponenziale |
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
| contentType | additional.fields | Uniti da vari campi aggiuntivi |
| cloudEventsVersion | additional.fields | |
| data.additionalDetails.reason | additional.fields | |
| data.additionalDetails.tenantId | additional.fields | |
| data.additionalDetails.problemType | additional.fields | |
| data.resourceName | additional.fields | |
| data.resourceId | additional.fields | |
| stato | additional.fields | |
| problem_recommendation | additional.fields | |
| compartment_id | additional.fields | |
| compartment_name | additional.fields | |
| product_event | extensions.auth.type | Imposta "AUTHTYPE_UNSPECIFIED" se product_event corrisponde all'accesso |
| data.additionalDetails.problemDescription | metadata.description | Valore di data.additionalDetails.problemDescription se non è vuoto, altrimenti data.additionalDetails.description |
| data.additionalDetails.description | metadata.description | |
| has_user | metadata.event_type | Impostato su USER_RESOURCE_ACCESS se has_user e has_target_resource, USER_UNCATEGORIZED se has_user, USER_LOGIN se product_event corrisponde a login, STATUS_UPDATE se has_principal, altrimenti GENERIC_EVENT |
| has_target_resource | metadata.event_type | |
| product_event | metadata.event_type | |
| has_principal | metadata.event_type | |
| eventType | metadata.product_event_type | Valore di eventType se non è vuoto, altrimenti product_event |
| product_event | metadata.product_event_type | |
| eventID | metadata.product_log_id | Valore copiato direttamente |
| versione | metadata.product_version | Valore copiato direttamente |
| osservatore | observer.domain.name | Dominio estratto dall'osservatore utilizzando grok |
| osservatore | observer.hostname | Valore dell'osservatore se non è un IP |
| osservatore | observer.ip | Valore dell'osservatore se IP |
| entità | principal.administrative_domain | Dominio estratto da principal o principal_host utilizzando grok |
| principal_host | principal.administrative_domain | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.asset.ip | Valore di data.additionalDetails.problemAdditionalDetails.public_ips se non è vuoto, altrimenti vnicDetails.0.vnicPublicIp se non è vuoto, altrimenti da principal se IP, altrimenti principal_host se IP |
| vnicDetails.0.vnicPublicIp | principal.asset.ip | |
| entità | principal.asset.ip | |
| principal_host | principal.asset.ip | |
| entità | principal.hostname | Valore del principale se non è un IP, altrimenti principal_host se non è un IP |
| principal_host | principal.hostname | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.ip | Valore di data.additionalDetails.problemAdditionalDetails.public_ips se non è vuoto, altrimenti vnicDetails.0.vnicPublicIp se non è vuoto, altrimenti da principal se IP, altrimenti principal_host se IP |
| vnicDetails.0.vnicPublicIp | principal.ip | |
| entità | principal.ip | |
| principal_host | principal.ip | |
| data.additionalDetails.region | principal.location.name | Valore copiato direttamente |
| principal_port | principal.port | Convertito in numero intero da principal_port |
| data.additionalDetails.resourceName | principal.resource.name | Valore di data.additionalDetails.resourceName se non è vuoto, altrimenti data.additionalDetails.principalResourceName |
| data.additionalDetails.principalResourceName | principal.resource.name | |
| data.additionalDetails.resourceId | principal.resource.product_object_id | Valore di data.additionalDetails.resourceId se non è vuoto, altrimenti data.additionalDetails.principalResourceId |
| data.additionalDetails.principalResourceId | principal.resource.product_object_id | |
| data.additionalDetails.resourceType | principal.resource.resource_subtype | Valore di data.additionalDetails.resourceType se non è vuoto, altrimenti data.additionalDetails.principalResourceType |
| data.additionalDetails.principalResourceType | principal.resource.resource_subtype | |
| data.additionalDetails.resourceName | principal.user.userid | Valore di data.additionalDetails.resourceName se data.additionalDetails.resourceType == "User", altrimenti di data.additionalDetails.principalResourceName se data.additionalDetails.principalResourceType == "User" |
| data.additionalDetails.principalResourceName | principal.user.userid | |
| azione | security_result.action | Impostato su BLOCK se l'azione corrisponde al blocco, ALLOW se l'operazione è riuscita, FAIL se non è riuscita, altrimenti UNKNOWN |
| azione | security_result.action_details | Valore copiato direttamente |
| data.additionalDetails.tacticName | security_result.attack_details.tactics | Valore copiato direttamente in tactic_data.name, poi unito |
| data.additionalDetails.techniqueName | security_result.attack_details.techniques | Valore copiato direttamente in technique_data.name, quindi unito |
| data.additionalDetails.confidence | security_result.confidence_score | Valore copiato direttamente |
| sightingType | security_result.detection_fields | Unito dalle etichette sightingType, sightingScore e riskScore |
| sightingScore | security_result.detection_fields | |
| riskScore | security_result.detection_fields | |
| data.additionalDetails.detectorRuleId | security_result.rule_id | Valore copiato direttamente |
| data.additionalDetails.detectorRuleType | security_result.rule_name | Valore copiato direttamente |
| gravità | security_result.severity | Impostato su INFORMATIONAL se la gravità è INFO, LOW se è bassa, MEDIUM se è WARN, HIGH se è alta, CRITICAL se è critica |
| gravità | security_result.severity_details | Valore copiato direttamente |
| target | target.administrative_domain | Dominio estratto da target o target_host utilizzando grok |
| target_host | target.administrative_domain | |
| target | target.hostname | Valore della destinazione se non è un IP, altrimenti target_host se non è un IP |
| target_host | target.hostname | |
| target | target.ip | Valore della destinazione se IP, altrimenti target_host se IP |
| target_host | target.ip | |
| target_port | target.port | Convertito in numero intero da target_port |
| targetId | target.resource.attribute.labels | Uniti da vari campi dell'etichetta |
| etichette | target.resource.attribute.labels | |
| vnicAttachmentId | target.resource.attribute.labels | |
| vnicAttachmentDisplayName | target.resource.attribute.labels | |
| subnets | target.resource.attribute.labels | |
| instance_ocid | target.resource.attribute.labels | |
| route_table_ocids | target.resource.attribute.labels | |
| security_list_ocids | target.resource.attribute.labels | |
| data.additionalDetails.impactedResourceName | target.resource.name | Valore di data.additionalDetails.impactedResourceName se non è vuoto, altrimenti vnicDetails.0.vnicDisplayName |
| vnicDetails.0.vnicDisplayName | target.resource.name | |
| data.additionalDetails.impactedResourceId | target.resource.product_object_id | Valore di data.additionalDetails.impactedResourceId se non è vuoto, altrimenti vnicDetails.0.vnicId |
| vnicDetails.0.vnicId | target.resource.product_object_id | |
| data.additionalDetails.impactedResourceType | target.resource.resource_subtype | Valore copiato direttamente |
| target_url | target.url | Valore copiato direttamente |
| target_user | target.user.userid | Valore copiato direttamente |
| prodotto | metadata.product_name | Valore copiato direttamente |
| vendor | metadata.vendor_name | Valore copiato direttamente |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.