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 chiamate API effettuate dalla console Oracle Cloud Infrastructure, dall'interfaccia a riga di comando (CLI), dai kit di sviluppo software (SDK), dai tuoi client personalizzati o da altri servizi Oracle Cloud Infrastructure.

Prima di iniziare

Assicurati di disporre dei seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto GCP con l'API Cloud Storage 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

Creazione di 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, doppia regione, più regioni)
    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 service account GCP (vedi sotto)
  6. Fai clic su Salva modifiche.

Crea un service account GCP per la funzione Oracle Cloud Infrastructure

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

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service Accounts.
  2. Fai clic su Crea service account.
  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 service account l'accesso al progetto, aggiungi il seguente ruolo:
    1. Fai clic su Seleziona un ruolo.
    2. Cerca e seleziona Amministratore oggetti di archiviazione.
  6. Fai clic su Continua.
  7. Fai clic su Fine.
  8. Fai clic sull'email del service account 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 suoi 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 service account 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 service account (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 compartimento 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 vano.
    • Configura origine:
    Impostazione Valore
    Origine Seleziona Logging.
    Compartimento 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
    Target 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 un criterio 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.
    • Compartment: seleziona il compartment.
  5. Nella sezione Policy Builder, attiva 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 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 service account Google SecOps

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

Recuperare l'email del service account

  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 come Tipo di log.
  7. Fai clic su Ottieni service account. Viene visualizzata un'email del service account univoca, 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 service account Google SecOps

Il service account 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 service account Google SecOps.
    • Assegna i 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 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 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.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.