Oracle Cloud Infrastructure-Audit-Logs erfassen
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
- Rufen Sie die Google Cloud Console auf.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
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 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
- Melden Sie sich in der Oracle Cloud Console an.
- Rufen Sie Developer Services > Functions > Applications auf.
- Wählen Sie das Compartment aus, in dem Sie die Funktionsanwendung erstellen möchten.
- Klicken Sie auf Anwendung erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name: Geben Sie
audit-logs-to-gcs-appein. - VCN: Wählen Sie ein Virtual Cloud Network aus.
- Subnetze: Wählen Sie ein Subnetz mit Internetzugang aus.
- Name: Geben Sie
- Klicken Sie auf Erstellen.
- Nachdem die Anwendung erstellt wurde, klicken Sie auf Erste Schritte und folgen Sie der Anleitung, um Ihre lokale Entwicklungsumgebung mit der Fn CLI einzurichten.
Erstellen Sie auf Ihrem lokalen Computer ein neues Funktionsverzeichnis:
mkdir oci-audit-to-gcs cd oci-audit-to-gcsPython-Funktion initialisieren:
fn init --runtime python oci-audit-to-gcs cd oci-audit-to-gcsErsetzen Sie den Inhalt von
func.pydurch 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 )Aktualisieren Sie
requirements.txtmit den folgenden Abhängigkeiten:fdk>=0.1.0 google-cloud-storage>=2.0.0 google-auth>=2.0.0Stellen Sie die Funktion in der Oracle Cloud-Infrastruktur bereit:
fn -v deploy --app audit-logs-to-gcs-appNotieren Sie sich nach Abschluss der Bereitstellung die OCID der Funktion. Sie verwenden es in der nächsten Aufgabe.
Funktionsumgebungsvariablen konfigurieren
- Rufen Sie in der Oracle Cloud Console Developer Services > Functions > Applications auf.
- Klicken Sie auf die App (
audit-logs-to-gcs-app). - Klicken Sie auf den Funktionsnamen (
oci-audit-to-gcs). - Klicken Sie auf Konfiguration.
Fügen Sie die folgenden Konfigurationsvariablen hinzu:
Schlüssel Wert GCS_BUCKETName Ihres GCS-Buckets (z. B. oci-audit-logs-gcs)GCS_PREFIXPräfix für Protokolldateien (z. B. oci-audit-logs)GCS_CREDENTIALS_JSONJSON-String des GCP-Dienstkontoschlüssels (siehe unten) 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.
- Wechseln Sie in der GCP Console zu IAM & Verwaltung > Dienstkonten.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie
oci-function-gcs-writerein. - Beschreibung des Dienstkontos: Geben Sie
Service account for OCI Function to write Audit logs to GCSein.
- Name des Dienstkontos: Geben Sie
- Klicken Sie auf Erstellen und fortfahren.
- Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgende Rolle hinzu:
- Klicken Sie auf Rolle auswählen.
- Suchen Sie nach Storage-Objekt-Administrator und wählen Sie die Rolle aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Fertig.
- Klicken Sie auf die E-Mail-Adresse des neu erstellten Dienstkontos.
- Rufen Sie den Tab Schlüssel auf.
- Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
- Wählen Sie JSON als Schlüsseltyp aus.
- Klicken Sie auf Erstellen.
- Die JSON-Schlüsseldatei wird auf Ihren Computer heruntergeladen.
- Öffnen Sie die JSON-Schlüsseldatei und kopieren Sie den gesamten Inhalt.
- Kehren Sie zur Funktionskonfiguration in der Oracle Cloud Console zurück.
Fügen Sie den JSON-Inhalt in die Konfigurationsvariable
GCS_CREDENTIALS_JSONein.
IAM-Berechtigungen für GCS-Bucket erteilen
Gewähren Sie dem Dienstkonto Schreibberechtigungen für den GCS-Bucket:
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (
oci-audit-logs-gcs). - Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- 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.
- Hauptkonten hinzufügen: Geben Sie die E‑Mail-Adresse des Dienstkontos (
- Klicken Sie auf Speichern.
Oracle Cloud Infrastructure Service Connector Hub erstellen
- Melden Sie sich in der Oracle Cloud Console an.
- Rufen Sie Observability & Management > Logging > Service Connector Hub auf.
- Wählen Sie das Compartment aus, in dem Sie den Serviceconnector erstellen möchten.
- Klicken Sie auf Service Connector erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
- Informationen zum Service Connector:
Einstellung Wert Connectorname audit-logs-to-gcs-connectoreingebenBeschreibung Forward OCI Audit logs to Google Cloud StorageeingebenRessourcen-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). Klicke auf + Weiteren Eintrag hinzufügen.
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-appauswählenFunktion oci-audit-to-gcsauswählenScrollen Sie zu Aufgabe konfigurieren (optional) und behalten Sie die Standardeinstellungen bei.
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.
- Rufen Sie in der Oracle Cloud Console Identity & Security > Policies auf.
- Wählen Sie das Compartment aus, in dem Sie den Service Connector Hub erstellt haben.
- Klicken Sie auf Richtlinie erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name: Geben Sie
service-connector-functions-policyein. - Beschreibung: Geben Sie
Allow Service Connector Hub to invoke Functionsein. - Spezifikation: Wählen Sie die Spezifikation aus.
- Name: Geben Sie
- Aktivieren Sie im Bereich Policy Builder die Option Show manual editor (Manuellen Editor anzeigen).
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.
- Ersetzen Sie
Klicken Sie auf Erstellen.
Integration testen
- Melden Sie sich in der Oracle Cloud Console an.
- Führen Sie einige Aktionen aus, die Audit-Logs generieren (z. B. eine Ressource erstellen oder ändern).
- Warten Sie 2 bis 5 Minuten, bis die Protokolle verarbeitet wurden.
- Rufen Sie in der GCP Console Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (
oci-audit-logs-gcs). - Rufen Sie den Präfixordner (
oci-audit-logs/) auf. 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
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Oracle Cloud Audit Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Oracle Cloud Infrastructure als Logtyp aus.
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.comKopieren 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.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (
oci-audit-logs-gcs). - Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- 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.
Klicken Sie auf Speichern.
Feed in Google SecOps konfigurieren, um Oracle Cloud Infrastructure-Audit-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Oracle Cloud Audit Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Oracle Cloud Infrastructure als Logtyp aus.
- Klicken Sie auf Weiter.
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/
- Root-Bucket:
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.
Klicken Sie auf Weiter.
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