Oracle Cloud Infrastructure-Audit-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Oracle Cloud Infrastructure-Audit-Logs mit Google Cloud Storage in Google Security Operations aufnehmen.

Der Oracle Cloud Infrastructure Audit-Dienst zeichnet automatisch Aufrufe aller unterstützten öffentlichen API-Endpunkte (Application Programming Interface) von Oracle Cloud Infrastructure als Log-Ereignisse auf. Derzeit unterstützen alle Dienste die Protokollierung durch Oracle Cloud Infrastructure Audit. Von Oracle Cloud Infrastructure Audit aufgezeichnete Log-Ereignisse umfassen API-Aufrufe, die von der Oracle Cloud Infrastructure Console, der Befehlszeilenschnittstelle (Command Line Interface, CLI), Software Development Kits (SDKs), Ihren eigenen benutzerdefinierten Clients oder anderen Oracle Cloud Infrastructure-Diensten ausgeführt werden.

Hinweis

Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Ein GCP-Projekt mit aktivierter Cloud Storage API
  • Berechtigungen zum Erstellen und Verwalten von GCS-Buckets
  • Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets
  • Berechtigungen zum Erstellen von Cloud Run-Diensten, Pub/Sub-Themen und Cloud Scheduler-Jobs
  • Oracle Cloud Infrastructure-Konto mit Berechtigungen zum Erstellen und Verwalten von:
    • Service Connector Hub
    • Funktionen
    • Objektspeicher-Buckets
    • IAM-Richtlinien
  • Privilegierter Zugriff auf die Oracle Cloud Infrastructure Console

Google Cloud Storage-Bucket erstellen

  1. Rufen Sie die Google Cloud Console auf.
  2. Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
  3. Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
  4. Klicken Sie auf Bucket erstellen.
  5. Geben Sie die folgenden Konfigurationsdetails an:

    Einstellung Wert
    Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. oci-audit-logs-gcs.
    Standorttyp Wählen Sie je nach Bedarf aus (Region, Dual-Region, Multi-Region).
    Standort Wählen Sie den Speicherort aus, z. B. us-central1.
    Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird)
    Zugriffssteuerung Einheitlich (empfohlen)
    Schutzmaßnahmen Optional: Objektversionsverwaltung oder Aufbewahrungsrichtlinie aktivieren
  6. Klicken Sie auf Erstellen.

Oracle Cloud Infrastructure für den Export von Audit-Logs nach GCS konfigurieren

Oracle Cloud Infrastructure unterstützt keinen nativen Export nach Google Cloud Storage. Sie verwenden den Oracle Cloud Infrastructure Service Connector Hub mit einer Funktion, um Audit-Logs an GCS weiterzuleiten.

Oracle Cloud Infrastructure-Funktion zum Weiterleiten von Logs an GCS erstellen

  1. Melden Sie sich in der Oracle Cloud Console an.
  2. Rufen Sie Developer Services > Functions > Applications auf.
  3. Wählen Sie das Compartment aus, in dem Sie die Funktionsanwendung erstellen möchten.
  4. Klicken Sie auf Anwendung erstellen.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie audit-logs-to-gcs-app ein.
    • VCN: Wählen Sie ein Virtual Cloud Network aus.
    • Subnetze: Wählen Sie ein Subnetz mit Internetzugang aus.
  6. Klicken Sie auf Erstellen.
  7. Nachdem die Anwendung erstellt wurde, klicken Sie auf Erste Schritte und folgen Sie der Anleitung, um Ihre lokale Entwicklungsumgebung mit der Fn CLI einzurichten.
  8. Erstellen Sie auf Ihrem lokalen Computer ein neues Funktionsverzeichnis:

    mkdir oci-audit-to-gcs
    cd oci-audit-to-gcs
    
  9. Python-Funktion initialisieren:

    fn init --runtime python oci-audit-to-gcs
    cd oci-audit-to-gcs
    
  10. Ersetzen Sie den Inhalt von func.py durch den folgenden Code:

    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. Aktualisieren Sie requirements.txt mit den folgenden Abhängigkeiten:

    fdk>=0.1.0
    google-cloud-storage>=2.0.0
    google-auth>=2.0.0
    
  12. Stellen Sie die Funktion in der Oracle Cloud-Infrastruktur bereit:

    fn -v deploy --app audit-logs-to-gcs-app
    
  13. Notieren Sie sich nach Abschluss der Bereitstellung die OCID der Funktion. Sie verwenden es in der nächsten Aufgabe.

Funktionsumgebungsvariablen konfigurieren

  1. Rufen Sie in der Oracle Cloud Console Developer Services > Functions > Applications auf.
  2. Klicken Sie auf die App (audit-logs-to-gcs-app).
  3. Klicken Sie auf den Funktionsnamen (oci-audit-to-gcs).
  4. Klicken Sie auf Konfiguration.
  5. Fügen Sie die folgenden Konfigurationsvariablen hinzu:

    Schlüssel Wert
    GCS_BUCKET Name Ihres GCS-Buckets (z. B. oci-audit-logs-gcs)
    GCS_PREFIX Präfix für Protokolldateien (z. B. oci-audit-logs)
    GCS_CREDENTIALS_JSON JSON-String des GCP-Dienstkontoschlüssels (siehe unten)
  6. Klicken Sie auf Änderungen speichern.

GCP-Dienstkonto für Oracle Cloud Infrastructure-Funktion erstellen

Die Oracle Cloud Infrastructure-Funktion benötigt ein GCP-Dienstkonto, um in den GCS-Bucket zu schreiben.

  1. Wechseln Sie in der GCP Console zu IAM & Verwaltung > Dienstkonten.
  2. Klicken Sie auf Dienstkonto erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie oci-function-gcs-writer ein.
    • Beschreibung des Dienstkontos: Geben Sie Service account for OCI Function to write Audit logs to GCS ein.
  4. Klicken Sie auf Erstellen und fortfahren.
  5. Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgende Rolle hinzu:
    1. Klicken Sie auf Rolle auswählen.
    2. Suchen Sie nach Storage-Objekt-Administrator und wählen Sie die Rolle aus.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf Fertig.
  8. Klicken Sie auf die E-Mail-Adresse des neu erstellten Dienstkontos.
  9. Rufen Sie den Tab Schlüssel auf.
  10. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  11. Wählen Sie JSON als Schlüsseltyp aus.
  12. Klicken Sie auf Erstellen.
  13. Die JSON-Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  14. Öffnen Sie die JSON-Schlüsseldatei und kopieren Sie den gesamten Inhalt.
  15. Kehren Sie zur Funktionskonfiguration in der Oracle Cloud Console zurück.
  16. Fügen Sie den JSON-Inhalt in die Konfigurationsvariable GCS_CREDENTIALS_JSON ein.

IAM-Berechtigungen für GCS-Bucket erteilen

Gewähren Sie dem Dienstkonto Schreibberechtigungen für den GCS-Bucket:

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets (oci-audit-logs-gcs).
  3. Wechseln Sie zum Tab Berechtigungen.
  4. Klicken Sie auf Zugriff erlauben.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Hauptkonten hinzufügen: Geben Sie die E‑Mail-Adresse des Dienstkontos (oci-function-gcs-writer@PROJECT_ID.iam.gserviceaccount.com) ein.
    • Rollen zuweisen: Wählen Sie Storage-Objekt-Administrator aus.
  6. Klicken Sie auf Speichern.

Oracle Cloud Infrastructure Service Connector Hub erstellen

  1. Melden Sie sich in der Oracle Cloud Console an.
  2. Rufen Sie Observability & Management > Logging > Service Connector Hub auf.
  3. Wählen Sie das Compartment aus, in dem Sie den Serviceconnector erstellen möchten.
  4. Klicken Sie auf Service Connector erstellen.
  5. Geben Sie die folgenden Konfigurationsdetails an:

    • Informationen zum Service Connector:
    Einstellung Wert
    Connectorname audit-logs-to-gcs-connector eingeben
    Beschreibung Forward OCI Audit logs to Google Cloud Storage eingeben
    Ressourcen-Compartment Wählen Sie den Bereich aus.
    • Quelle konfigurieren:
    Einstellung Wert
    Quelle Wählen Sie Logging aus.
    Fach Compartment mit Audit-Logs auswählen
    Log Group (Gruppe protokollieren) Wählen Sie _Audit aus (Standard-Loggruppe für Audit-Logs).
  6. Klicke auf + Weiteren Eintrag hinzufügen.

  7. Wählen Sie das Audit-Log für Ihr Compartment aus (z. B. _Audit_Include_Subcompartment).

    • Ziel konfigurieren:
    Einstellung Wert
    Target Wählen Sie Funktionen aus.
    Funktionsfach Wählen Sie das Fach mit der Funktion aus.
    Funktionsanwendung audit-logs-to-gcs-app auswählen
    Funktion oci-audit-to-gcs auswählen
  8. Scrollen Sie zu Aufgabe konfigurieren (optional) und behalten Sie die Standardeinstellungen bei.

  9. Klicken Sie auf Erstellen.

IAM-Richtlinie für Service Connector Hub erstellen

Für den Service Connector Hub sind Berechtigungen zum Aufrufen der Funktion erforderlich.

  1. Rufen Sie in der Oracle Cloud Console Identity & Security > Policies auf.
  2. Wählen Sie das Compartment aus, in dem Sie den Service Connector Hub erstellt haben.
  3. Klicken Sie auf Richtlinie erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie service-connector-functions-policy ein.
    • Beschreibung: Geben Sie Allow Service Connector Hub to invoke Functions ein.
    • Spezifikation: Wählen Sie die Spezifikation aus.
  5. Aktivieren Sie im Bereich Policy Builder die Option Show manual editor (Manuellen Editor anzeigen).
  6. Geben Sie die folgenden Richtlinienanweisungen ein:

    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'}
    
    • Ersetzen Sie <compartment-name> durch den Namen Ihres Compartments.
  7. Klicken Sie auf Erstellen.

Integration testen

  1. Melden Sie sich in der Oracle Cloud Console an.
  2. Führen Sie einige Aktionen aus, die Audit-Logs generieren (z. B. eine Ressource erstellen oder ändern).
  3. Warten Sie 2 bis 5 Minuten, bis die Protokolle verarbeitet wurden.
  4. Rufen Sie in der GCP Console Cloud Storage > Buckets auf.
  5. Klicken Sie auf den Namen Ihres Buckets (oci-audit-logs-gcs).
  6. Rufen Sie den Präfixordner (oci-audit-logs/) auf.
  7. Prüfen Sie, ob neue .ndjson-Dateien im Bucket angezeigt werden.

Google SecOps-Dienstkonto abrufen

Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.

E-Mail-Adresse des Dienstkontos abrufen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Oracle Cloud Audit Logs.
  5. Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
  6. Wählen Sie Oracle Cloud Infrastructure als Logtyp aus.
  7. Klicken Sie auf Dienstkonto abrufen. Es wird eine eindeutige E-Mail-Adresse für das Dienstkonto angezeigt, z. B.:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Kopieren Sie diese E‑Mail-Adresse für den nächsten Schritt.

Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren

Das Google SecOps-Dienstkonto benötigt die Rolle Storage-Objekt-Betrachter für Ihren GCS-Bucket.

  1. Rufen Sie Cloud Storage > Buckets auf.
  2. Klicken Sie auf den Namen Ihres Buckets (oci-audit-logs-gcs).
  3. Wechseln Sie zum Tab Berechtigungen.
  4. Klicken Sie auf Zugriff erlauben.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
    • Rollen zuweisen: Wählen Sie Storage-Objekt-Betrachter aus.
  6. Klicken Sie auf Speichern.

Feed in Google SecOps konfigurieren, um Oracle Cloud Infrastructure-Audit-Logs aufzunehmen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Oracle Cloud Audit Logs.
  5. Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
  6. Wählen Sie Oracle Cloud Infrastructure als Logtyp aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:

       gs://oci-audit-logs-gcs/oci-audit-logs/
      
      • Ersetzen Sie:

        • oci-audit-logs-gcs: Der Name Ihres GCS-Buckets.
        • oci-audit-logs: Optionales Präfix/Ordnerpfad, in dem Logs gespeichert werden (für den Stamm leer lassen).
      • Beispiele:

        • Root-Bucket: gs://company-logs/
        • Mit Präfix: gs://company-logs/oci-audit-logs/
        • Mit Unterordner: gs://company-logs/oracle/audit/
    • Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:

      • Nie: Es werden nach Übertragungen nie Dateien gelöscht (empfohlen für Tests).
      • Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
      • Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.

    • Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.

    • Asset-Namespace: Der Asset-Namespace.

    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.

  9. Klicken Sie auf Weiter.

  10. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten