Oracle Cloud Infrastructure-Logs erfassen
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
- Gehen Sie zur Google Cloud Console.
- 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 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 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
- Melden Sie sich in der Oracle Cloud Console an.
- Öffnen Sie das Navigationsmenü und wählen Sie Developer Services > Functions > Applications aus.
- 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.
- Klicken Sie nach dem Erstellen der Anwendung 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): """ 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 )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 OCI bereit:
fn -v deploy --app audit-logs-to-gcs-appNotieren 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
- Rufen Sie in der Oracle Cloud Console Developer Services > Functions > Applications auf.
- Klicken Sie auf die Anwendung
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 Logdateien (z. B. oci-audit-logs)GCS_CREDENTIALS_JSONJSON-String des GCP-Dienstkontoschlüssels 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.
- Wechseln Sie in der GCP Console zu IAM und 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 Object Admin 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 ihren 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 den 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 Object Admin aus.
- Hauptkonten hinzufügen: Geben Sie die E‑Mail-Adresse des Dienstkontos (
- Klicken Sie auf Speichern.
OCI Service Connector Hub-Connector erstellen
- Melden Sie sich in der Oracle Cloud Console an.
- Öffnen Sie das Navigationsmenü und wählen Sie Analytics & AI aus. Wählen Sie unter Messaging die Option Connector Hub aus.
- Wählen Sie das Compartment aus, in dem Sie den Serviceconnector erstellen möchten.
- Klicken Sie auf Connector erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Anschlussstecker-Informationen:
Einstellung Wert Anschlussstecker-Name audit-logs-to-gcs-connectoreingebenBeschreibung Forward OCI Audit logs to Google Cloud StorageeingebenRessourcenbereich 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). Klicke auf + Weiteres Log.
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-appauswählenFunktion oci-audit-to-gcsauswählenBehalten Sie im Abschnitt Aufgabe konfigurieren (optional) die Standardeinstellungen bei.
Wenn Sie aufgefordert werden, eine Richtlinie zu erstellen (erforderlich für den Zugriff zum Erstellen oder Aktualisieren eines Dienstconnectors), wählen Sie Erstellen aus.
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-Connector 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 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'}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 zwei bis fünf Minuten, bis die Logs 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 Audit Logs als Log type (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 Object Viewer 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 Object Viewer 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 Audit Logs als Log type (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 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.
Klicken Sie auf Weiter.
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