Raccogli i log di controllo di Oracle Cloud Infrastructure

Supportato in:

Questo documento spiega come importare i log di controllo di Oracle Cloud Infrastructure in Google Security Operations utilizzando Google Cloud Storage.

Il servizio Oracle Cloud Infrastructure Audit registra automaticamente le chiamate a tutti gli endpoint dell'interfaccia di programmazione di un'applicazione (API) pubblica di Oracle Cloud Infrastructure come eventi di log. Al momento, tutti i servizi supportano la registrazione tramite Oracle Cloud Infrastructure Audit. Gli eventi di log registrati da Oracle Cloud Infrastructure Audit includono le chiamate API effettuate dalla console Oracle Cloud Infrastructure, dall'interfaccia a riga di comando (CLI), dai Software Development Kit (SDK), dai tuoi client personalizzati o da altri servizi Oracle Cloud Infrastructure.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto GCP con l'API Storage Cloud abilitata
  • Autorizzazioni per creare e gestire bucket GCS
  • Autorizzazioni per gestire le policy IAM nei bucket GCS
  • Autorizzazioni per creare servizi Cloud Run, argomenti Pub/Sub e job Cloud Scheduler
  • Account Oracle Cloud Infrastructure con autorizzazioni per creare e gestire:
    • Service Connector Hub
    • Funzioni
    • Bucket di archiviazione di oggetti
    • Criteri IAM
  • Accesso con privilegi alla console Oracle Cloud Infrastructure

Crea un bucket Google Cloud Storage

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio oci-audit-logs-gcs).
    Tipo di località Scegli in base alle tue esigenze (regione singola, a due regioni, multiregionale)
    Località Seleziona la posizione (ad esempio, us-central1).
    Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente)
    Controllo dell'accesso Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Attiva il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Configura Oracle Cloud Infrastructure per esportare i log di controllo in GCS

Oracle Cloud Infrastructure non supporta l'esportazione nativa in Google Cloud Storage. Utilizzerai Oracle Cloud Infrastructure Service Connector Hub con una funzione per inoltrare i log di controllo a GCS.

Crea una funzione Oracle Cloud Infrastructure per inoltrare i log a GCS

  1. Accedi alla console Oracle Cloud.
  2. Vai a Servizi per gli sviluppatori > Funzioni > Applicazioni.
  3. Seleziona il comparto in cui vuoi creare l'applicazione di funzione.
  4. Fai clic su Crea applicazione.
  5. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci audit-logs-to-gcs-app.
    • VCN: seleziona una Virtual Cloud Network.
    • Subnet: seleziona una subnet con accesso a internet.
  6. Fai clic su Crea.
  7. Dopo aver creato l'applicazione, fai clic su Guida introduttiva e segui le istruzioni per configurare l'ambiente di sviluppo locale con la CLI Fn.
  8. Crea una nuova directory di funzioni sulla tua macchina locale:

    mkdir oci-audit-to-gcs
    cd oci-audit-to-gcs
    
  9. Inizializza una funzione Python:

    fn init --runtime python oci-audit-to-gcs
    cd oci-audit-to-gcs
    
  10. Sostituisci i contenuti di func.py con il seguente codice:

    import io
    import json
    import logging
    import os
    from fdk import response
    from google.cloud import storage
    from google.oauth2 import service_account
    from datetime import datetime
    
    # Configure logging
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger()
    
    # Environment variables
    GCS_BUCKET = os.environ.get('GCS_BUCKET')
    GCS_PREFIX = os.environ.get('GCS_PREFIX', 'oci-audit-logs')
    GCS_CREDENTIALS_JSON = os.environ.get('GCS_CREDENTIALS_JSON')
    
    def handler(ctx, data: io.BytesIO = None):
        """
        Oracle Cloud Infrastructure Function to forward Audit logs to GCS.
    
        Args:
            ctx: Function context
            data: Input data containing Audit log events
        """
    
        if not all([GCS_BUCKET, GCS_CREDENTIALS_JSON]):
            logger.error('Missing required environment variables: GCS_BUCKET or GCS_CREDENTIALS_JSON')
            return response.Response(
                ctx, response_data=json.dumps({"error": "Missing configuration"}),
                headers={"Content-Type": "application/json"}
            )
    
        try:
            # Parse input data
            body = json.loads(data.getvalue())
            logger.info(f"Received event: {json.dumps(body)}")
    
            # Extract log entries
            log_entries = []
            if isinstance(body, list):
                log_entries = body
            elif isinstance(body, dict):
                # Service Connector Hub sends data in specific format
                if 'data' in body:
                    log_entries = [body['data']] if isinstance(body['data'], dict) else body['data']
                else:
                    log_entries = [body]
    
            if not log_entries:
                logger.info("No log entries to process")
                return response.Response(
                    ctx, response_data=json.dumps({"status": "no_logs"}),
                    headers={"Content-Type": "application/json"}
                )
    
            # Initialize GCS client with service account credentials
            credentials_dict = json.loads(GCS_CREDENTIALS_JSON)
            credentials = service_account.Credentials.from_service_account_info(credentials_dict)
            storage_client = storage.Client(credentials=credentials, project=credentials_dict.get('project_id'))
            bucket = storage_client.bucket(GCS_BUCKET)
    
            # Write logs to GCS as NDJSON
            timestamp = datetime.utcnow().strftime('%Y%m%d_%H%M%S_%f')
            object_key = f"{GCS_PREFIX}/logs_{timestamp}.ndjson"
            blob = bucket.blob(object_key)
    
            ndjson = '\n'.join([json.dumps(entry, ensure_ascii=False) for entry in log_entries]) + '\n'
            blob.upload_from_string(ndjson, content_type='application/x-ndjson')
    
            logger.info(f"Wrote {len(log_entries)} records to gs://{GCS_BUCKET}/{object_key}")
    
            return response.Response(
                ctx, response_data=json.dumps({"status": "success", "records": len(log_entries)}),
                headers={"Content-Type": "application/json"}
            )
    
        except Exception as e:
            logger.error(f'Error processing logs: {str(e)}')
            return response.Response(
                ctx, response_data=json.dumps({"error": str(e)}),
                headers={"Content-Type": "application/json"},
                status_code=500
            )
    
  11. Aggiorna requirements.txt con le seguenti dipendenze:

    fdk>=0.1.0
    google-cloud-storage>=2.0.0
    google-auth>=2.0.0
    
  12. Esegui il deployment della funzione in Oracle Cloud Infrastructure:

    fn -v deploy --app audit-logs-to-gcs-app
    
  13. Al termine del deployment, prendi nota dell'OCID della funzione. Lo utilizzerai nel prossimo passaggio.

Configura le variabili di ambiente della funzione

  1. Nella console Oracle Cloud, vai a Developer Services > Functions > Applications.
  2. Fai clic sull'applicazione (audit-logs-to-gcs-app).
  3. Fai clic sul nome della funzione (oci-audit-to-gcs).
  4. Fai clic su Configurazione.
  5. Aggiungi le seguenti variabili di configurazione:

    Chiave Valore
    GCS_BUCKET Il nome del bucket GCS (ad esempio, oci-audit-logs-gcs)
    GCS_PREFIX Prefisso per i file di log (ad esempio, oci-audit-logs)
    GCS_CREDENTIALS_JSON Stringa JSON della chiave del account di servizio GCP (vedi sotto)
  6. Fai clic su Salva modifiche.

Crea un account di servizio GCP per la funzione Oracle Cloud Infrastructure

La funzione Oracle Cloud Infrastructure richiede un account di servizio GCP per scrivere nel bucket GCS.

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service account.
  2. Fai clic su Crea account di servizio.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome del service account: inserisci oci-function-gcs-writer.
    • Descrizione service account: inserisci Service account for OCI Function to write Audit logs to GCS.
  4. Fai clic su Crea e continua.
  5. Nella sezione Concedi a questo account di servizio l'accesso al progetto, aggiungi il seguente ruolo:
    1. Fai clic su Seleziona un ruolo.
    2. Cerca e seleziona Storage Object Admin.
  6. Fai clic su Continua.
  7. Fai clic su Fine.
  8. Fai clic sull'email del account di servizio appena creato.
  9. Vai alla scheda Chiavi.
  10. Fai clic su Aggiungi chiave > Crea nuova chiave.
  11. Seleziona JSON come tipo di chiave.
  12. Fai clic su Crea.
  13. Il file della chiave JSON verrà scaricato sul computer.
  14. Apri il file della chiave JSON e copia tutti i contenuti.
  15. Torna alla configurazione della funzione Oracle Cloud Console.
  16. Incolla i contenuti JSON nella variabile di configurazione GCS_CREDENTIALS_JSON.

Concedi autorizzazioni IAM sul bucket GCS

Concedi al account di servizio le autorizzazioni di scrittura sul bucket GCS:

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (oci-audit-logs-gcs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: inserisci l'indirizzo email del account di servizio (oci-function-gcs-writer@PROJECT_ID.iam.gserviceaccount.com).
    • Assegna i ruoli: seleziona Storage Object Admin.
  6. Fai clic su Salva.

Crea l'hub del connettore di servizio Oracle Cloud Infrastructure

  1. Accedi alla console Oracle Cloud.
  2. Vai a Osservabilità e gestione > Logging > Service Connector Hub.
  3. Seleziona il comparto in cui vuoi creare il connettore di servizio.
  4. Fai clic su Crea connettore di servizio.
  5. Fornisci i seguenti dettagli di configurazione:

    • Informazioni sul connettore di servizio:
    Impostazione Valore
    Nome connettore Inserisci audit-logs-to-gcs-connector
    Descrizione Inserisci Forward OCI Audit logs to Google Cloud Storage
    Compartimento delle risorse Seleziona il comparto.
    • Configura origine:
    Impostazione Valore
    Origine Seleziona Logging.
    Compartment Seleziona il compartimento contenente i log di controllo
    Gruppo di log Seleziona _Audit (gruppo di log predefinito per i log di controllo)
  6. Fai clic su + Another Log (+ Altro log).

  7. Seleziona il log di controllo per il tuo compartimento (ad esempio, _Audit_Include_Subcompartment).

    • Configura target:
    Impostazione Valore
    Destinazione Seleziona Funzioni.
    Compartimento della funzione Seleziona il comparto contenente la funzione
    Applicazione della funzione Seleziona audit-logs-to-gcs-app
    Funzione Seleziona oci-audit-to-gcs
  8. Scorri fino a Configura attività (facoltativo) e lascia le impostazioni predefinite.

  9. Fai clic su Crea.

Crea criteri IAM per Service Connector Hub

Service Connector Hub richiede le autorizzazioni per richiamare la funzione.

  1. Nella console Oracle Cloud, vai a Identity & Security > Policies.
  2. Seleziona il compartimento in cui hai creato Service Connector Hub.
  3. Fai clic su Crea criterio.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci service-connector-functions-policy.
    • Descrizione: inserisci Allow Service Connector Hub to invoke Functions.
    • Compartimento: seleziona il compartimento.
  5. Nella sezione Policy Builder, attiva/disattiva Mostra editor manuale.
  6. Inserisci le seguenti dichiarazioni delle norme:

    Allow any-user to use fn-function in compartment <compartment-name> where all {request.principal.type='serviceconnector'}
    Allow any-user to use fn-invocation in compartment <compartment-name> where all {request.principal.type='serviceconnector'}
    
    • Sostituisci <compartment-name> con il nome del tuo compartimento.
  7. Fai clic su Crea.

Testare l'integrazione

  1. Accedi alla console Oracle Cloud.
  2. Esegui alcune azioni che generano audit log (ad esempio, crea o modifica una risorsa).
  3. Attendi 2-5 minuti affinché i log vengano elaborati.
  4. Vai a Cloud Storage > Bucket nella console di GCP.
  5. Fai clic sul nome del bucket (oci-audit-logs-gcs).
  6. Vai alla cartella del prefisso (oci-audit-logs/).
  7. Verifica che nel bucket vengano visualizzati i nuovi file .ndjson.

Recuperare il account di servizio Google SecOps

Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo account di servizio l'accesso al tuo bucket.

Recupera l'email del account di servizio

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Oracle Cloud Audit Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Oracle Cloud Infrastructure Audit Logs come Tipo di log.
  7. Fai clic su Ottieni service account. Viene visualizzato un indirizzo email del account di servizio univoco, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia questo indirizzo email per utilizzarlo nel passaggio successivo.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

Il account di servizio Google SecOps deve avere il ruolo Visualizzatore oggetti Storage nel bucket GCS.

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (oci-audit-logs-gcs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'email del account di servizio Google SecOps.
    • Assegna ruoli: seleziona Visualizzatore oggetti Storage.
  6. Fai clic su Salva.

Configura un feed in Google SecOps per importare i log di controllo di Oracle Cloud Infrastructure

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Oracle Cloud Audit Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Oracle Cloud Infrastructure Audit Logs come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • URL del bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://oci-audit-logs-gcs/oci-audit-logs/
      
      • Sostituisci:

        • oci-audit-logs-gcs: il nome del bucket GCS.
        • oci-audit-logs: (Facoltativo) prefisso/percorso della cartella in cui vengono archiviati i log (lascia vuoto per la radice).
      • Esempi:

        • Bucket radice: gs://company-logs/
        • Con prefisso: gs://company-logs/oci-audit-logs/
        • Con sottocartella: gs://company-logs/oracle/audit/
    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina i file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
    • Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  9. Fai clic su Avanti.

  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log mapping UDM Logica
accept_encoding_field additional.fields Unita
accept_field additional.fields Unita
additional_app additional.fields Unita
additional_content_type additional.fields Unita
additional_sort_by additional.fields Unita
additionaldetails_data additional.fields Unita
allow_methods_field additional.fields Unita
auth_type_label additional.fields Unita
authorization_field additional.fields Unita
backend_connect_time_field additional.fields Unita
backend_processing_time_field additional.fields Unita
caller_id_label additional.fields Unita
caller_name_label additional.fields Unita
cloud_event_versiom_field additional.fields Unita
compartment_id_field additional.fields Unita
compartment_name_field additional.fields Unita
connection_field additional.fields Unita
content_length_field additional.fields Unita
content_type_field additional.fields Unita
event_grouping_id_field additional.fields Unita
event_name_label additional.fields Unita
event_resource_label additional.fields Unita
event_source_label additional.fields Unita
event_type_label additional.fields Unita
event_type_versiom_field additional.fields Unita
has_compariment_id additional.fields Mappato: true → additional_app
has_sort_by additional.fields Mappato: true → additional_sort_by
listener_name_field additional.fields Unita
log_group_id_field additional.fields Unita
log_id_field additional.fields Unita
message additional.fields Valori mappati (41 totali, ad es. \/ → tenant_id_label, \/ → auth_type_label, \/ → `ca... )
opc_request_id_field additional.fields Unita
origin_field additional.fields Unita
param0_field additional.fields Unita
param1_field additional.fields Unita
referer_field additional.fields Unita
request_processing_time_field additional.fields Unita
resource_id_field additional.fields Unita
routing_rules_engine_errors_field additional.fields Unita
routing_rules_matched_rule_field additional.fields Unita
routing_rules_rule_hits_field additional.fields Unita
routing_rules_rule_misses_field additional.fields Unita
source_field additional.fields Unita
tenant_id_label additional.fields Unita
column3 extensions.auth.type Mappato: login successful → AUTHTYPE_UNSPECIFIED
message extensions.auth.type Mappato: \/ → AUTHTYPE_UNSPECIFIED
column3 metadata.description Mappato direttamente
data.message metadata.description Mappato direttamente
column1 metadata.event_timestamp Analizzato come yyyy-MM-dd HH:mm:ss
data_event_time metadata.event_timestamp Analizzato come yyyy-MM-ddTHH:mm:ss.SSSSSSZ
time metadata.event_timestamp Analizzato come ISO8601
metadata_event_type metadata.event_type Mappato direttamente
type metadata.product_event_type Mappato direttamente
data_event_id metadata.product_log_id Mappato direttamente
id metadata.product_log_id Mappato direttamente
message metadata.product_name Mappato: \/ → OCI_AUDIT
specversion metadata.product_version Mappato direttamente
message metadata.vendor_name Mappato: \/ → Oracle
message network.application_protocol Mappato: \/ → HTTPS, \/ → HTTP
protocol network.application_protocol Mappato: (?i)HTTPS → HTTPS, (?i)HTTP → HTTP
version network.application_protocol_version Mappato direttamente
data_request_action network.http.method Mappato direttamente
method network.http.method Mappato direttamente
data_identity_userAgent network.http.parsed_user_agent Rinominate/mappate
data_request_agent network.http.parsed_user_agent Rinominate/mappate
url network.http.referral_url Mappato direttamente
data.backendStatusCode network.http.response_code Mappato direttamente
data_response_status network.http.response_code Rinominate/mappate
data.userAgent network.http.user_agent Mappato direttamente
data_identity_userAgent network.http.user_agent Mappato direttamente
data_request_agent network.http.user_agent Mappato direttamente
data.receivedBytes network.received_bytes Mappato direttamente
message network.received_bytes Mappato: \/ → uinteger
data.sentBytes network.sent_bytes Mappato direttamente
message network.sent_bytes Mappato: \/ → uinteger
data_identity_consoleSessionId network.session_id Rinominate/mappate
data.sslCipher network.tls.cipher Mappato direttamente
data.sslProtocol network.tls.version Mappato direttamente
data.host principal.asset.hostname Mappato direttamente
hostname principal.asset.hostname Mappato direttamente
column6 principal.asset.ip Unita
data.forwardedForAddr principal.asset.ip Unita
data_identity_ipAddress principal.asset.ip Mappato: ^(?:[0-9]{1,3}[.]){3}[0-9]{1,3}$ → data_identity_ipAddress
data_request_origin principal.asset.ip Unita
ip1 principal.asset.ip Unita
ip2 principal.asset.ip Unita
message principal.asset.ip Valori mappati (7 in totale, ad es. \/ → column6, \/ → data_request_origin, \/ → ip2)
src_ip principal.asset.ip Unita
data.host principal.hostname Mappato direttamente
hostname principal.hostname Mappato direttamente
column6 principal.ip Unita
data.forwardedForAddr principal.ip Unita
data_identity_ipAddress principal.ip Mappato: ^(?:[0-9]{1,3}[.]){3}[0-9]{1,3}$ → data_identity_ipAddress
data_request_origin principal.ip Unita
ip1 principal.ip Unita
ip2 principal.ip Unita
message principal.ip Valori mappati (7 in totale, ad es. \/ → column6, \/ → data_request_origin, \/ → ip2)
src_ip principal.ip Unita
data_request_headers_sec-ch-ua-platform_0 principal.platform Mappato: (?i)Linux → LINUX, (?i)windows → WINDOWS, (?i)mac/ios → MAC
message principal.platform Mappato: \/ → LINUX, \/ → WINDOWS, \/ → MAC
originalConnection.sourcePort principal.port Mappato direttamente
src_port principal.port Mappato direttamente
data_request_headers_oci-original-url_0 principal.url Mappato direttamente
credentials_label principal.user.attribute.labels Unita
message principal.user.attribute.labels Mappato: \/ → credentials_label
data.identity.principalName principal.user.user_display_name Mappato direttamente
data.username principal.user.user_display_name Mappato direttamente
data.identity.principalId principal.user.userid Mappato direttamente
data.principalId principal.user.userid Mappato direttamente
column3 security_result Mappato: login successful → security_result
message security_result Mappato: \/ → security_result
allow_action security_result.action Unita
column3 security_result.action Mappato: login successful → allow_action
message security_result.action Mappato: \/ → allow_action
credential_type_field security_result.detection_fields Unita
message security_result.detection_fields Mappato: \/ → credential_type_field
data.response.message security_result.summary Mappato direttamente
message target.asset.ip Mappato: \/ → originalConnection.destinationIp, \/ → tar_ip
originalConnection.destinationIp target.asset.ip Unita
tar_ip target.asset.ip Unita
message target.ip Mappato: \/ → originalConnection.destinationIp, \/ → tar_ip
originalConnection.destinationIp target.ip Unita
tar_ip target.ip Unita
originalConnection.destinationPort target.port Mappato direttamente
tar_port target.port Mappato direttamente
message target.resource.attribute.labels Mappato: \/ → namespace_label
namespace_label target.resource.attribute.labels Unita
type target.resource.attribute.labels Mappato: listretentionrules → namespace_label
data.resourceId target.resource.name Mappato direttamente
data.resourceName target.resource.name Mappato direttamente
bucketId target.resource.product_object_id Mappato direttamente
data.resourceId target.resource.product_object_id Mappato direttamente
data_request_id target.resource.product_object_id Mappato direttamente
message target.resource.resource_type Mappato: \/ → STORAGE_BUCKET
type target.resource.resource_type Mappato: listretentionrules → STORAGE_BUCKET
data_request_path target.url Mappato direttamente
column2 target.user.email_addresses Unita
message target.user.email_addresses Mappato: \/ → column2
N/D extensions.auth.type Costante: AUTHTYPE_UNSPECIFIED
N/D metadata.product_name Costante: OCI_AUDIT
N/D metadata.vendor_name Costante: Oracle
N/D network.application_protocol Costante: HTTPS
N/D principal.platform Costante: LINUX
N/D target.resource.resource_type Costante: STORAGE_BUCKET

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.