IBM Cloud Docs
Verwaltung von Logpush-Aufträgen

Verwaltung von Logpush-Aufträgen

IBM Cloud® Internet Services Pläne auf Unternehmensebene haben Zugang zu detaillierten Protokollen von HTTP, DNS- und Range-Anfragen sowie Firewall-Ereignissen für ihre Domains. Diese Protokolle sind hilfreich für Debugging und Analyse, insbesondere in Verbindung mit anderen Datenquellen (z. B. Ingress- oder Anwendungsserverprotokolle) am Ursprungsort.

Vorbereitende Schritte

Bevor Sie einen Logpush-Auftrag über die Benutzeroberfläche erstellen, sollten Sie die folgenden Informationen lesen und alle Voraussetzungen erfüllen:

  • Derzeit unterstützt die Benutzeroberfläche von CIS die folgenden Ziele:

    • IBM Cloud-Protokolle
    • Cloud Object Storage
    • Splunk
  • Stellen Sie sicher, dass die Protokollaufbewahrung aktiviert ist, bevor Sie Logpush verwenden.

  • Die Annahme der Logpush-Benutzereinladung (cislogp@us.ibm.com) ist ein manueller Prozess, der von einem autorisierten CIS Team durchgeführt wird. Der Status in der Konsole wird aktualisiert, nachdem die Einladung angenommen wurde. Bis dahin bleibt der Status Pending.

  • Wenn Ihr Ziel nicht explizit von CIS unterstützt wird, kann es dennoch von Logpush über ein benutzerdefiniertes HTTP Ziel zugänglich sein. Dazu gehören auch Ihre eigenen benutzerdefinierten HTTP Log-Server.

    Um Fehler zu vermeiden, stellen Sie sicher, dass der Zielort eine komprimierte Datei mit dem Namen test.txt.gz akzeptieren kann, die den komprimierten Inhalt {"content":"tests"} enthält.

  • Nur für Cloud Object Storage:

    • Sie müssen eine Instanz Cloud Object Storage mit einem Bucket haben, der Object Writer Zugriff auf das Konto IBM Cloud cislogp@us.ibm.com gewährt. Mit dieser Berechtigung kann CIS Anfrageprotokolle in den Object Storage Bucket schreiben.
    • Logpush verwendet öffentlich zugängliche HTTPS Endpunkte für Cloud Object Storage und gewährleistet die Verschlüsselung der Protokolldaten während der Übertragung.
    • DNS-, Range- und Firewall-Ereignisprotokolle sind nicht in den Protokollen von HTTP / HTTPS enthalten und erfordern separate Aufträge. Diese Aufträge können das gleiche Ziel verwenden, müssen aber mit Cloud Object Storage unterschiedliche Pfade angeben.
    • Nachdem Sie einen Logpush-Auftrag mit Cloud Object Storage erstellt haben, müssen Sie die Eigentumsverhältnisse überprüfen. Dieser Prozess wird in den nächsten Schritten beschrieben.
  • Nur für Splunk: Wenn Sie Protokolle an Splunk senden, prüft CIS die IP-Adresse und den Port auf Erreichbarkeit und validiert das Zertifikat des Empfängers HTTP. Wenn alle Parameter gültig sind, wird der Logpush-Auftrag erstellt und beginnt, Ereignisse an den HTTP Event Collector ( Splunk ) zu senden.

Erstellen eines Logpush-Auftrags in der Konsole

Um einen Logpush-Auftrag in der Konsole zu erstellen, gehen Sie wie folgt vor:

  1. Wählen Sie "Konto" > "Protokolle " und klicken Sie dann auf "Erstellen ".

  2. Wählen Sie einen Dienst aus:

    1. Wählen Sie aus den verfügbaren Optionen die gewünschte Art von Dienstleistung aus.
    2. Wählen Sie den Typ des Datensatzes.
    3. Optional: Geben Sie eine Beschreibung und einen Namen ein.
    4. Wählen Sie Weiter aus.
  3. Ziel konfigurieren:

    IBM Cloud-Protokolle

    Geben Sie die IBM Cloud Logs-Instanz-ID, die Instanz-Region und den API-Schlüssel (vom Benutzer verwaltet) ein.

    Ein API-Schlüssel für das Konto, in dem die IBM Cloud Logs-Instanz eingerichtet ist, ist erforderlich. Sie können entweder einen Benutzer-API-Schlüssel oder einen Dienst-ID-API-Schlüssel verwenden. Dieser Schlüssel wird verwendet, um einen Träger-Token für den Logpush-Job zu generieren. Der API-Schlüssel kann mit Hilfe der API für die Aktualisierung eines Logpush-Auftrags geändert werden.

    Für einen IBM Cloud-Protokolldienst muss dem Benutzer oder der Dienst-ID die IAM-Rolle "Absender" zugewiesen werden.

    Cloud Object Storage

    Geben Sie die Instanz Cloud Object Storage, die Bucket-Informationen (Name und Region) und den Bucket-Pfad (optional) ein. Dann organisieren Sie die Protokolle in Tagesordnern (optional).

    Die Zielwerte für Cloud Object Storage müssen eindeutig sein. Es wird empfohlen, einen Eimerweg zu verwenden, um Konflikte zu vermeiden.

    Splunk
    Geben Sie den Endpunkt Splunk, die Kanal-ID und das Authentifizierungstoken ein.

    Sie können sich für eine unsichere Verifizierung entscheiden; dies wird jedoch nicht empfohlen.

    Benutzerdefiniert HTTP Ziel

    Geben Sie Ihren HTTP Endpunkt ein.

    Stellen Sie sicher, dass der Endpunkt ordnungsgemäß URL-codiert ist und alle erforderlichen Anforderungsheader als URL-Parameter hinzugefügt werden, die als "header_*" formatiert sind (z. B. header_Authorization).

  4. Nur für Cloud Object Storage-Jobs: Überprüfen Sie die Inhaberschaft. Laden Sie dazu das Objekt herunter, das Sie in Ihrem Bucket erhalten haben, und fügen Sie das Token in den Textbereich für das Eigentumstoken ein. Klicken Sie anschließend auf Weiter.

    Sie können die Datei im Abschnitt Fehlerbehebung erneut senden oder zum vorherigen Schritt zurückkehren, wenn der Bucket-Pfad falsch ist.

  5. Protokollfelder auswählen:

    1. Überprüfen Sie, ob die Logpush-Details korrekt sind.

    2. Wählen Sie die Logpush-Einstellungen in den Menüs Zeitstempelformat und Frequenz aus.

    3. Wählen Sie aus, ob der Logpush-Job aktiviert werden soll, indem Sie den Aktivierungsschalter auf "Ein" stellen.

    4. Wählen Sie die Protokollfelder aus, die in den Logpush-Auftrag aufgenommen werden sollen.

      Sie können die Schalter verwenden, um alle Felder auszuwählen oder alle Felder zu erweitern. Sie können auch zu den Standardeinstellungen zurückkehren.

    5. Klicken Sie auf "Fertig ", um Ihren Logpush-Auftrag zu erstellen.

Erstellen eines Logpush-Jobs über die Befehlszeilenschnittstelle

Sie können die ibmcloud cis logpush-job-create CLI verwenden, um einen Logpush-Job zu erstellen.

Führen Sie den folgenden Befehl aus, um einen Logpush-Job für eine bestimmte Domäne zu erstellen und zu aktivieren:

ibmcloud cis logpush-job-create DNS_DOMAIN_ID --destination PATH --name JOB_NAME --fields all --enable true

Dabei gilt:

-destination: Gibt den Pfad zum Ziel an. Die Pfade für unterstützte Ziele sind wie folgt:

IBM Cloud Holzfällerpfad
IBM Cloud-Protokolle
ibmcl://<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=<IBM_API_KEY>

Ein Beispiel:
ibmcl://604a309c-585c-4a42-955d-76239ccc1905.ingress.us-south.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=zxzeNQI22dPwxxxxxxxx9jxdtn1EVK

Ein API-Schlüssel für das Konto, in dem die IBM Cloud Logs-Instanz eingerichtet ist, ist erforderlich. Sie können entweder einen Benutzer-API-Schlüssel oder einen Dienst-ID-API-Schlüssel verwenden. Dieser Schlüssel wird verwendet, um einen Träger-Token für den Logpush-Job zu generieren. Der API-Schlüssel kann mit Hilfe der API für die Aktualisierung eines Logpush-Auftrags geändert werden.

Wichtig: Der Benutzer oder die Dienst-ID muss die IAM-Rolle "Absender" für den Dienst IBM Cloud Logs erhalten.

Cloud Object Storage pfad
Cloud Object Storage
cos://<BUCKET_OBJECT_PATH>?region=<REGION>&instance-id=<IBM_ClOUD_OBJECT_STORAGE_INSTANCE_ID>

Zum Beispiel:
cos://cis-test-bucket/logs?region=us&instance-id=f75e6d90-4212-4026-851c-d572071146cd

Benutzerdefinierter HTTP-Pfad
Individuell HTTP
https://<HOSTNAME>?header_Authorization=Basic%20REDACTED&tags=host:<DOMAIN_NAME>,dataset:<LOGPUSH_DATASET>

Zum Beispiel:
https://logs.example.com?header_Authorization=a64Vxxxxx5Aq

--name: Gibt den Namen des Logpush-Auftrags an.

--fields: Gibt die Liste der Protokollfelder an, die in die Protokolldateien aufgenommen werden sollen. Trennen Sie mehrere Felder durch Kommas. Verwenden Sie den Befehl ibmcloud cis logpush-available-fields DNS_DOMAIN_ID --dataset DATASET, um eine umfassende Liste der verfügbaren Protokollfelder zu erhalten, oder verwenden Sie all, um alle verfügbaren Felder in die Protokolldateien aufzunehmen.

--enable: Ist das Flag zum Aktivieren oder Deaktivieren des Logpush-Jobs. Gültige Werte sind true oder false (Standardwert).

Cloud Object Storage: Überprüfung der Eigentümerschaft

Nachdem Sie einen Logpush-Job erstellt haben, um Protokolle an Cloud Object Storage zu senden, müssen Sie den Besitz bestätigen.

Wenn ein Challenge-Token in eine Datei im angegebenen Cloud Object Storage-Ordner geschrieben wird, gehen Sie wie folgt vor:

  • Laden Sie die Datei von Ihrem Cloud Object Storage Bucket herunter und öffnen Sie sie.
  • Kopieren Sie das Challenge-Token aus der Datei und fügen Sie es in die Eingabeaufforderung ein, um die Besitzherausforderung zu lösen.

Nachdem CIS die Besitzherausforderung bestätigt hat, wird der Logpush-Job erfolgreich erstellt. Der Job wird dann alle 30 Sekunden oder sobald 100.000 Datensätze erreicht sind, je nachdem, was zuerst eintritt, Anfrageprotokolle in Ihren Cloud Object Storage-Eimer verschieben. Beachten Sie, dass mehrere Dateien innerhalb eines Zeitraums von 30 Sekunden oder pro 100.000 Datensätze übertragen werden können.

Sie können auch das Token {DATE} im Bucket-Pfad verwenden, um Logpush-Protokolle in Tagesordnern zu organisieren. Beispiel:cos://mybucket/cislog/{DATE}?region=us-south&instance-id=c84e2a79-ce6d-3c79-a7e4-7e7ab3054cfe

Befehlsbeispiele

Beispiele für CLI für die unterstützten Ziele:

IBM Cloud-Protokolle

Beispiel

ibmcloud cis logpush-job-create 601b728b86e630c744c81740f72570c3 --destination "ibmcl://604a309c-585c-4a42-955d-76239ccc1905.ingress.us-south.logs.cloud.ibm.com/logs/v1/singles?ibm_api_key=xxxxxxxx" --name logpushJobGen --enable true --fields RayID --dataset http_requests --frequency high -i 1a9174b6-0106-417a-844b-c8eb43a72f63
Cloud Object Storage

Beispiel

ibmcloud cis logpush-job-create 31984fea73a15b45779fa0df4ef62f9b --destination cos://cis-test-bucket/logs?region=us&instance-id=f75e6d90-4212-4026-851c-d572071146cd --name logpushcreate --enable true --fields all --timestamps rfc3339 --dataset http_requests --frequency low -i cis-demo --output JSON
Individuell HTTP

Beispiel

ibmcloud cis logpush-job-create 601b728b86e630c744c81740f72570c3 --destination https://logs.example.com?header_Authorization=a64VuywesDu5Aq" --name logpushJobGen --enable true --fields RayID --dataset http_requests --frequency high -i 1a9174b6-0106-417a-844b-c8eb43a72f63

Erstellen eines Logpush-Auftrags mit der API

Sie können die API "Create a Logpush job" verwenden, um einen Logpush-Auftrag zu erstellen, wenn Sie IBM Cloud Logs, Cloud Object Storage oder Splunk verwenden.

Abrufen der verfügbaren Protokollfelder für einen Datensatz mit der API

Protokollfelder können in der logpull_options eines Logpush-Jobs angegeben werden, um anzupassen, was an den Zielort gesendet wird. Um die verfügbaren Log-Felder für einen Logpush-Datensatz zu erhalten, gehen Sie wie folgt vor:

  1. Richten Sie Ihre API-Umgebung mit den richtigen Variablen ein.

  2. Speichern Sie die folgenden Werte in Variablen, damit diese im API-Befehl verwendet werden können:

    CRN: Der vollständige URL-codierte CRN der Serviceinstanz.

    ZONE_ID: Die Domänen-ID.

    DATASET: Das Logpush-Dataset wird untersucht. Eine von http_requests, range_events, dns_logs, firewall_events.

  3. Wenn alle Variablen initialisiert sind, erstellen Sie den Job 'logpush':

    curl -X GET https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/datas/$DATASET/fields \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN"'
    

Erstellen eines Logpush-Jobs, um Protokolle an Ihr Ziel zu senden

Um einen Logpush-Auftrag an Ihr Ziel ( IBM Cloud Logs, Cloud Object Storage oder Splunk ) zu erstellen, gehen Sie wie folgt vor:

  1. Richten Sie Ihre API-Umgebung mit den richtigen Variablen ein.

  2. Speichern Sie die folgenden Werte in Variablen, damit diese im API-Befehl verwendet werden können:

    CRN: Der vollständige URL-codierte Cloud Resource Name (CRN) der Dienstinstanz.

    ZONE_ID: Die Domänen-ID.

    --request body: Informationen zum Erstellen des Logpush-Job-Textkörpers ( logpush_job_DESTINATION_req ), wobei DESTINATION einer der folgenden Werte ist:

    IBM Cloud Ziel der Protokolle
    IBM Cloud-Protokolle

    ibmcl: Informationen zur Identifizierung der IBM Cloud Logs-Instanz, in die die Daten übertragen werden. Felder innerhalb des Objekts ibmcl sind:

    • instance_id: ID der IBM Cloud Logs-Instanz.
    • region: Region der IBM Cloud Logs-Instanz (z. B. us-south ).
    • api_key: Ein API-Schlüssel für das Konto, in dem die IBM Cloud Logs-Instanz eingerichtet ist, ist erforderlich. Sie können entweder einen Benutzer-API-Schlüssel oder einen Dienst-ID-API-Schlüssel verwenden. Dieser Schlüssel wird verwendet, um einen Träger-Token für den Logpush-Job zu generieren. Der API-Schlüssel kann mithilfe der Update a Logpush job API geändert werden.

    Wichtig: Dem Benutzer oder der Dienst-ID muss die Rolle "Sender IAM" im IBM Cloud Logs-Dienst zugewiesen werden.

    ibmcl_names: Optionales Feld zum Anpassen der in IBM Cloud-Protokollen verwendeten Anwendungs- und Subsystemnamen. Felder innerhalb des Objekts ibmcl_names sind:

    • application_name: Name der benutzerdefinierten Anwendung für den Auftrag.
    • subsystem_name: Name des benutzerdefinierten Subsystems für den Auftrag.
    Cloud Object Storage ziel
    Cloud Object Storage

    cos: Informationen zur Identifizierung des Cloud Object Storage-Buckets, in den die Daten übertragen werden. Felder innerhalb des cos-Objekts sind:

    • bucket_name: Name Ihres COS-Buckets, an den Protokolle gesendet werden (Beispiel: cos-bucket001 ).
    • region: Region der Cloud Object Storage-Instanz (zum Beispiel us-south ).
    • id: ID der COS-Instanz.
    Splunk ziel
    Splunk

    splunk: Informationen zur Identifizierung des Splunk HTTP Event Collector (HEC), an den die Daten gesendet werden. Felder innerhalb des splunk-Objekts sind:

    • endpoint_url: URL der Splunk HEC.
    • channel_id: Eine zufällige GUID zur eindeutigen Identifizierung des Protokoll-Pushs.
    • skip_verify: Boolesches Flag zum Überspringen der Validierung des HTTP Event Collector-Zertifikats. Nur auf true einstellen, wenn die HEC ein selbstsigniertes Zertifikat verwendet.
    • source_type: Der Splunk-Quelltyp (zum Beispiel: cloudflare:json ).
    • auth_token: Das Splunk-Autorisierungstoken.
    Benutzerdefiniertes HTTP-Ziel
    Individuell HTTP
    destination_conf: Informationen zur Konfiguration des benutzerdefinierten HTTP-Ziels, an das die Daten gesendet werden. Header können so angegeben werden, dass sie von Logpush mit Abfrageparametern verwendet werden, denen header_ vorangestellt ist (zum Beispiel: header_Authorization=XXXX).

    name: Der Name des LogPush-Jobs.

    enabled: Gibt an, ob der Job aktiviert ist true oder false.

    logpull_options: Die Konfigurationszeichenfolge. Beispiel: fields=RayID,ZoneID&timestamps=rfc3339.

    dataset: Das Dataset, das extrahiert wird. Eine von http_requests, dns_logs, range_events, firewall_events.

    frequency: Die Häufigkeit, mit der CIS Protokollstapel an Ihr Ziel sendet. high oder low.

  3. Wenn alle Variablen initialisiert sind, erstellen Sie den Job 'logpush':

    IBM Cloud-Protokolle

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "ibmcl": {
          "instance_id": "f8k3309c-585c-4a42-955d-76239cccf8k3",
          "region": "us-south",
          "api_key": "f8k3NQI22dPwNVCcmS62YFL1tm9vaehY6C9jxdtnf8k3"
       },
       "ibmcl_names": {
          "application_name": "cis-edge-logs",
          "subsystem_name": "stage-firewall-logs"
       }
       "dataset": "http_requests",
       "enabled": true,
       "logpull_options": "fields=RayID,ZoneID&timestamps=rfc3339",
       "name": "CIS-Edge-Requests",
       "frequency": "low"
    }'
    

    Cloud Object Storage

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "cos": {
          "bucket_name": "example_bucket",
          "path": "temp/",
          "id": "cos_instance_id",
          "region": "us-east"
       },
       "dataset": "firewall_events",
       "enabled": false,
       "name": "CIS-Firewall-COS",
       "frequency": "low",
       "logpull_options": "fields=RayID,ZoneID&timestamps=rfc3339",
       "ownership_challenge": "xxxxxxx"
    }'
    

    Splunk

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "splunk": {
          "endpoint_url": "example.splunkcloud.com:8088/services/collector/raw",
          "channel_id": "def3c136-7a01-4655-b17f-8e25a780ef2c",
          "skip_verify": false,
          "source_type": "cloudflare:json",
          "auth_token": "Splunk fake3585-0f38-4d62-8b43-c4b78584fake"
       },
       "dataset": "http_requests",
       "enabled": true,
       "name": "CIS-Splunk-Logpush",
       "frequency": "high",
       "logpull_options": "fields=RayID,CacheResponseBytes,CacheResponseStatus,CacheCacheStatus&timestamps=rfc3339"
    }'
    

    Individuell HTTP

    curl -X POST https://api.cis.cloud.ibm.com/v2/$CRN/zones/$ZONE_ID/logpush/jobs \
    --header "Content-Type: application/json" \
    --header "X-Auth-User-Token: Bearer $IAM_TOKEN" \
    --data '{
       "destination_conf": "https://logs.example.com?header_Authorization=a64VuywesDu5Aq",
       "dataset": "http_requests",
       "enabled": true,
       "name": "CIS-Custom-Logpush",
       "frequency": "high",
       "logpull_options": "fields=RayID,CacheResponseBytes,CacheResponseStatus,CacheCacheStatus&timestamps=rfc3339"
    }'