Oracle Cloud Infrastructure-Logs erfassen

Unterstützt in:

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

Der OCI-Auditservice (Oracle Cloud Infrastructure) zeichnet automatisch Aufrufe aller unterstützten öffentlichen OCI-API-Endpunkte (Application Programming Interface) als Log-Ereignisse auf. Von Audit aufgezeichnete Logereignisse umfassen API-Aufrufe, die von der OCI-Konsole, der Befehlszeilenschnittstelle (Command Line Interface, CLI), Software Development Kits (SDKs), Ihren eigenen benutzerdefinierten Clients oder anderen OCI-Diensten ausgeführt werden. Die Informationen in den Logs umfassen den Zeitpunkt der API-Aktivität, die Quelle und das Ziel der Aktivität, die Art der Aktion und die Art der Antwort.

Hinweis

Prüfen Sie, ob folgende 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
  • Ein Oracle Cloud Infrastructure-Konto mit Berechtigungen zum Erstellen und Verwalten von:
    • Service Connector Hub-Connectors
    • Funktionsanwendungen und Funktionen
    • Objektspeicher-Buckets
    • IAM-Richtlinien
  • Berechtigter Zugriff auf die Oracle Cloud Console

Google Cloud Storage-Bucket erstellen

  1. Gehen Sie zur Google Cloud Console.
  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 die Option aus, die am besten zu Ihren Anforderungen passt (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)
    Zugriffskontrolle Einheitlich (empfohlen)
    Schutztools Optional: Objektversionierung 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 integrierten Export nach Google Cloud Storage. Sie verwenden OCI Service Connector Hub mit einer OCI-Funktion, um Audit-Logs an GCS weiterzuleiten.

OCI-Funktion zum Weiterleiten von Logs an GCS erstellen

  1. Melden Sie sich in der Oracle Cloud Console an.
  2. Öffnen Sie das Navigationsmenü und wählen Sie Developer Services > Functions > Applications aus.
  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. Klicken Sie nach dem Erstellen der Anwendung 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):
        """
        OCI 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 OCI bereit:

    fn -v deploy --app audit-logs-to-gcs-app
    
  13. Notieren Sie sich nach Abschluss der Bereitstellung die OCID der Funktion. Sie benötigen sie bei der Konfiguration des Service Connector Hub.

Umgebungsvariablen für Funktionen konfigurieren

  1. Rufen Sie in der Oracle Cloud Console Developer Services > Functions > Applications auf.
  2. Klicken Sie auf die Anwendung 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 Logdateien (z. B. oci-audit-logs)
    GCS_CREDENTIALS_JSON JSON-String des GCP-Dienstkontoschlüssels
  6. Klicken Sie auf Änderungen speichern.

GCP-Dienstkonto für die OCI-Funktion erstellen

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

  1. Wechseln Sie in der GCP Console zu IAM und 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 Object Admin 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 ihren 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 den 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 Object Admin aus.
  6. Klicken Sie auf Speichern.

OCI Service Connector Hub-Connector erstellen

  1. Melden Sie sich in der Oracle Cloud Console an.
  2. Öffnen Sie das Navigationsmenü und wählen Sie Analytics & AI aus. Wählen Sie unter Messaging die Option Connector Hub aus.
  3. Wählen Sie das Compartment aus, in dem Sie den Serviceconnector erstellen möchten.
  4. Klicken Sie auf Connector erstellen.
  5. Geben Sie die folgenden Konfigurationsdetails an:

    Anschlussstecker-Informationen:

    Einstellung Wert
    Anschlussstecker-Name audit-logs-to-gcs-connector eingeben
    Beschreibung Forward OCI Audit logs to Google Cloud Storage eingeben
    Ressourcenbereich Bereich auswählen

    Quelle konfigurieren:

    Einstellung Wert
    Quelle Wählen Sie Logging aus.
    Fach Compartment mit Audit-Logs auswählen
    Log-Gruppe Wählen Sie _Audit aus (Standard-Loggruppe für Audit-Logs).
  6. Klicke auf + Weiteres Log.

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

    Ziel konfigurieren:

    Einstellung Wert
    Ziel- Wählen Sie Funktionen aus.
    Funktionsbereich Wählen Sie das Compartment mit der Funktion aus.
    Funktionsanwendung audit-logs-to-gcs-app auswählen
    Funktion oci-audit-to-gcs auswählen
  8. Behalten Sie im Abschnitt Aufgabe konfigurieren (optional) die Standardeinstellungen bei.

  9. Wenn Sie aufgefordert werden, eine Richtlinie zu erstellen (erforderlich für den Zugriff zum Erstellen oder Aktualisieren eines Dienstconnectors), wählen Sie Erstellen aus.

  10. 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-Connector 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 Richtlinien an:

    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'}
    
  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 zwei bis fünf Minuten, bis die Logs 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 Audit Logs als Log type (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 Object Viewer 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 Object Viewer 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 Audit Logs als Log type (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 Option zum Löschen aus:
      • Dateien nie löschen: Löscht nach Übertragungen nie Dateien (empfohlen für Tests).
      • Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.
    • Maximales Dateialter (Tage): 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.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
authorization_field additional.fields Zusammengeführt
compartment_id_field additional.fields Zusammengeführt
compartment_name_field additional.fields Zusammengeführt
content_length_field additional.fields Zusammengeführt
content_type_field additional.fields Zusammengeführt
event_grouping_id_field additional.fields Zusammengeführt
tenant_id_label additional.fields Zusammengeführt
data.message metadata.description Direkt zugeordnet
time metadata.event_timestamp Als ISO8601 geparst
has_principal_hostname metadata.event_type Zugeordnet: true → STATUS_UPDATE
oracle.tenantid metadata.product_deployment_id Direkt zugeordnet
type metadata.product_event_type Direkt zugeordnet
oracle.logid metadata.product_log_id Direkt zugeordnet
specversion metadata.product_version Direkt zugeordnet
data.request.action network.http.method Direkt zugeordnet
data.identity.userAgent network.http.parsed_user_agent Umbenannt/zugeordnet
data.response.status network.http.response_code Umbenannt/zugeordnet
ip_protocol_out network.ip_protocol Direkt zugeordnet
data.bytesOut network.sent_bytes Umbenannt/zugeordnet
data.packets network.sent_packets Umbenannt/zugeordnet
data.identity.consoleSessionId network.session_id Umbenannt/zugeordnet
id principal.asset.product_object_id Direkt zugeordnet
source principal.hostname Direkt zugeordnet
data.identity.ipAddress principal.ip Zusammengeführt
data.sourceAddress principal.ip Zusammengeführt
data.sourcePort principal.port Umbenannt/zugeordnet
compartmentid_label principal.resource.attribute.labels Zusammengeführt
forward_label principal.resource.attribute.labels Zusammengeführt
loggroupid_label principal.resource.attribute.labels Zusammengeführt
vniccompartmentocid_label principal.resource.attribute.labels Zusammengeführt
vnicocid_label principal.resource.attribute.labels Zusammengeführt
vnicsubnetocid_label principal.resource.attribute.labels Zusammengeführt
data.flowid principal.resource.product_object_id Direkt zugeordnet
credentials_label principal.user.attribute.labels Zusammengeführt
data.identity.principalName principal.user.user_display_name Direkt zugeordnet
data.identity.principalId principal.user.userid Direkt zugeordnet
action security_result.action Zusammengeführt
endTime_label security_result.detection_fields Zusammengeführt
startTime_label security_result.detection_fields Zusammengeführt
status_label security_result.detection_fields Zusammengeführt
version_label security_result.detection_fields Zusammengeführt
data.destinationAddress target.ip Zusammengeführt
data.destinationPort target.port Umbenannt/zugeordnet
data.request.path target.url Direkt zugeordnet
– metadata.event_type Konstante: GENERIC_EVENT
– metadata.product_name Konstante: ORACLE CLOUD AUDIT
– metadata.vendor_name Konstante: ORACLE

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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