Azure Application Gateway-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Azure Application Gateway-Logs erfassen, indem Sie einen Google Security Operations-Feed einrichten. Dieser Parser verarbeitet sowohl JSON-Strukturen mit einem als auch mit mehreren Einträgen, extrahiert Felder aus dem „records“-Array, führt Datentypkonvertierungen durch, ordnet Felder dem UDM zu und ergänzt die Daten um Metadaten und abgeleitete Felder wie den Netzwerkverbindungstyp. Außerdem wird eine spezielle Logik für verschiedene operationName-Werte verwendet, um relevante IP-Adressen, Subnetze und andere Konfigurationsdetails zu extrahieren.

Hinweise

Folgende Voraussetzungen müssen erfüllt sein:

  • Eine Google SecOps-Instanz.
  • Berechtigter Zugriff auf ein Azure-Abo.
  • Eine Azure API Gateway-Umgebung (Mandant) in Azure.

Azure Storage-Konto konfigurieren

  1. Suchen Sie in der Azure-Konsole nach Speicherkonten.
  2. Klicken Sie auf Erstellen.
  3. Geben Sie Werte für die folgenden Eingabeparameter an:
    • Abo: Wählen Sie das Abo aus.
    • Ressourcengruppe: Wählen Sie die Ressourcengruppe aus.
    • Region: Wählen Sie die Region aus.
    • Leistung: Wählen Sie die Leistung aus. Wir empfehlen „Standard“.
    • Redundanz: Wählen Sie die Redundanz aus (GRS oder LRS empfohlen).
    • Speicherkontoname: Geben Sie einen Namen für das neue Speicherkonto ein.
  4. Klicken Sie auf Überprüfen + Erstellen.
  5. Sehen Sie sich die Übersicht des Kontos an und klicken Sie auf Erstellen.
  6. Wählen Sie auf der Seite Speicherkontoübersicht unter Sicherheit & Netzwerk das Untermenü Zugriffsschlüssel aus.
  7. Klicken Sie neben Schlüssel 1 oder Schlüssel 2 auf Anzeigen.
  8. Klicke auf In die Zwischenablage kopieren, um den Schlüssel zu kopieren.
  9. Speichern Sie den Schlüssel an einem sicheren Ort, um ihn später zu verwenden.
  10. Wählen Sie auf der Seite Speicherkontoübersicht unter Einstellungen das Untermenü Endpunkte aus.
  11. Klicken Sie auf In Zwischenablage kopieren, um die Endpunkt-URL des Blob-Dienstes zu kopieren. (z. B. https://<storageaccountname>.blob.core.windows.net)
  12. Speichern Sie die Endpunkt-URL an einem sicheren Ort für die spätere Verwendung.

Azure Application Gateway konfigurieren

  1. Melden Sie sich im Azure-Portal an.
  2. Rufen Sie die gewünschte Ressourcengruppe auf.
  3. Wählen Sie Application Gateway aus. Das Fenster Application Gateway wird angezeigt.
  4. Wählen Sie im Bereich Monitoring die Option Diagnoseeinstellungen > Diagnose aktivieren aus.
  5. Wählen Sie Diagnoseeinstellung hinzufügen aus. Im Fenster Diagnoseeinstellungen werden die Einstellungen für die Diagnoseprotokolle angezeigt.
  6. Führen Sie im Bereich Protokoll folgende Schritte aus:
    1. Klicken Sie das Kästchen ApplicationGatewayAccessLog an.
    2. Klicken Sie das Kästchen ApplicationGatewayFirewallLog an.
  7. So speichern Sie Protokolle im Speicherkonto:
    1. Klicken Sie das Kästchen In einem Speicherkonto archivieren an.
    2. Wählen Sie in der Liste Abo ein vorhandenes Abo aus.
    3. Wählen Sie in der Liste Speicherkonto ein vorhandenes Speicherkonto aus.

Feed in Google SecOps für die Aufnahme der Azure Application Gateway-Protokolle konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Azure Application Gateway-Protokolle.
  4. Wählen Sie Microsoft Azure Blob Storage als Quelltyp aus.
  5. Wählen Sie als Logtyp „Azure Application Gateway“ aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Azure-URI: die Blob-Endpunkt-URL.
      • ENDPOINT_URL/BLOB_NAME
        • Dabei gilt:
          • ENDPOINT_URL: die Blob-Endpunkt-URL. (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME: der Name des Blobs. (z. B. insights-logs-<logname>)
    • URI ist: Wählen Sie den URI-TYP gemäß der Logstream-Konfiguration aus (Einzelne Datei | Verzeichnis | Verzeichnis mit Unterverzeichnissen).
    • Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
    • Freigegebener Schlüssel: Der Zugriffsschlüssel für Azure Blob Storage.
    • Asset-Namespace: der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
  8. Klicken Sie auf Weiter.

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

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
Category metadata.product_event_type Direkt aus dem Feld Category zugeordnet.
ClientOperationId additional.fields[].key:"ClientOperationId", value.string_value Direkt aus dem Feld ClientOperationId zugeordnet.
CorrelationRequestId additional.fields[].key:"CorrelationRequestId", value.string_value Direkt aus dem Feld CorrelationRequestId zugeordnet.
GatewayManagerVersion additional.fields[].key:"GatewayManagerVersion", value.string_value Direkt aus dem Feld GatewayManagerVersion zugeordnet.
category metadata.product_event_type Direkt aus dem Feld category zugeordnet.
level security_result.severity Wird direkt aus dem Feld level zugeordnet und in Großbuchstaben konvertiert. Wenn der Wert „WARNUNG“ lautet, wird die Schwere auf „HOCH“ und security_result.severity_details auf den ursprünglichen Wert gesetzt.
properties.clientIP principal.ip, principal.asset.ip Direkt aus dem Feld properties.clientIP zugeordnet.
properties.clientPort principal.port Wird direkt aus dem Feld properties.clientPort zugeordnet und in eine Ganzzahl umgewandelt.
properties.clientResponseTime additional.fields[].key:"clientResponseTime", value.string_value Direkt aus dem Feld properties.clientResponseTime zugeordnet.
properties.configuration.BgpConfiguration.GatewayConfig.Asn security_result.detection_fields[].key:"ASN", value Wird direkt aus dem Feld properties.configuration.BgpConfiguration.GatewayConfig.Asn zugeordnet, wenn operationName „SetGatewayConfiguration“ ist.
properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress target.ip, target.asset.ip Wird direkt aus dem Feld properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress zugeordnet, wenn operationName „SetGatewayConfiguration“ ist.
properties.configuration.BgpConfiguration.GatewayConfig.PeerType security_result.detection_fields[].key:"PeerType", value Wird direkt aus dem Feld properties.configuration.BgpConfiguration.GatewayConfig.PeerType zugeordnet, wenn operationName „SetGatewayConfiguration“ ist.
properties.configuration.IkeVersion principal.resource.attribute.labels[].key:"ike_version", value Wird direkt aus dem Feld properties.configuration.IkeVersion zugeordnet, wenn operationName „SetConnectionConfiguration“ ist.
properties.configuration.LocalSubnets principal.resource.attribute.labels[].key:"local subnets", value Konkatenierter String von IP-Adressen aus dem Array properties.configuration.LocalSubnets, wenn operationName „SetConnectionConfiguration“ ist.
properties.configuration.LocalTunnelEndpoint principal.ip, principal.asset.ip Wird direkt aus dem Feld properties.configuration.LocalTunnelEndpoint zugeordnet, wenn operationName „SetConnectionConfiguration“ ist.
properties.configuration.Name principal.hostname, principal.asset.hostname Direkt aus dem Feld properties.configuration.Name zugeordnet. Wenn das Feld leer ist, wird der Wert aus properties.instance übernommen.
properties.configuration.RemoteSite target.hostname, target.asset.hostname Direkt aus dem Feld properties.configuration.RemoteSite zugeordnet.
properties.configuration.RemoteSubnets principal.resource.attribute.labels[].key:"remote subnets", value Konkatenierter String von IP-Adressen aus dem Array properties.configuration.RemoteSubnets, wenn operationName „SetConnectionConfiguration“ ist.
properties.configuration.RemoteTunnelEndpoint target.ip, target.asset.ip Wird direkt aus dem Feld properties.configuration.RemoteTunnelEndpoint zugeordnet, wenn operationName „SetConnectionConfiguration“ ist.
properties.configuration.VIPAddress principal.ip, principal.asset.ip Wird direkt aus dem Feld properties.configuration.VIPAddress zugeordnet, wenn operationName „SetGatewayConfiguration“ ist.
properties.configuration.VirtualNetworkRanges principal.resource.attribute.labels[].key:"virutal network ranges", value Konkatenierter String von IP-Adressen aus dem Array properties.configuration.VirtualNetworkRanges, wenn operationName „SetGatewayConfiguration“ ist.
properties.configuration.VirtualNetworkSubnets principal.resource.attribute.labels[].key:"virtual network subnets", value Konkatenierter String von IP-Adressen aus dem Array properties.configuration.VirtualNetworkSubnets, wenn operationName „SetGatewayConfiguration“ ist.
properties.error_info additional.fields[].key:"error_info", value.string_value Direkt aus dem Feld properties.error_info zugeordnet.
properties.host principal.hostname, principal.asset.hostname Wird direkt aus dem Feld properties.host zugeordnet, wenn properties.originalHost leer ist.
properties.httpMethod network.http.method Direkt aus dem Feld properties.httpMethod zugeordnet.
properties.httpStatus network.http.response_code Wird direkt aus dem Feld properties.httpStatus zugeordnet und in eine Ganzzahl umgewandelt.
properties.httpVersion network.application_protocol Legen Sie „HTTP“ fest, wenn das Feld properties.httpVersion „HTTP“ enthält.
properties.instance principal.hostname, principal.asset.hostname Wird als Wert für principal.hostname verwendet, wenn properties.configuration.Name leer ist.
properties.message metadata.description Direkt aus dem Feld properties.message zugeordnet.
properties.operationName additional.fields[].key:"operationName", value.string_value Direkt aus dem Feld properties.operationName zugeordnet.
properties.operationStatus security_result.category_details Direkt aus dem Feld properties.operationStatus zugeordnet. Wenn der Wert „Success“ oder „InProgress“ ist, wird security_result.action auf „ALLOW“ gesetzt.
properties.originalHost principal.hostname, principal.asset.hostname Direkt aus dem Feld properties.originalHost zugeordnet.
properties.originalRequestUriWithArgs additional.fields[].key:"originalRequestUriWithArgs", value.string_value Direkt aus dem Feld properties.originalRequestUriWithArgs zugeordnet.
properties.receivedBytes network.received_bytes Wird direkt aus dem Feld properties.receivedBytes abgeleitet und in eine positive Ganzzahl umgewandelt.
properties.requestQuery additional.fields[].key:"requestQuery", value.string_value Direkt aus dem Feld properties.requestQuery zugeordnet.
properties.requestUri target.url Direkt aus dem Feld properties.requestUri zugeordnet.
properties.sentBytes network.sent_bytes Wird direkt aus dem Feld properties.sentBytes abgeleitet und in eine positive Ganzzahl umgewandelt.
properties.serverResponseLatency additional.fields[].key:"Server Response Latency", value.string_value Direkt aus dem Feld properties.serverResponseLatency zugeordnet.
properties.serverRouted target.ip, target.asset.ip, target.port IP und Port werden mit einem regulären Ausdruck aus dem Feld properties.serverRouted extrahiert.
properties.sslCipher network.tls.cipher Direkt aus dem Feld properties.sslCipher zugeordnet.
properties.sslClientCertificateIssuerName network.tls.server.certificate.issuer Direkt aus dem Feld properties.sslClientCertificateIssuerName zugeordnet.
properties.sslProtocol network.tls.version Direkt aus dem Feld properties.sslProtocol zugeordnet.
properties.timeTaken additional.fields[].key:"timeTaken", value.string_value Direkt aus dem Feld properties.timeTaken zugeordnet.
properties.transactionId network.session_id Direkt aus dem Feld properties.transactionId zugeordnet.
properties.userAgent network.http.user_agent, network.http.parsed_user_agent Direkt aus dem Feld properties.userAgent zugeordnet. Außerdem wird das Feld in einen geparsten User-Agent umgewandelt und network.http.parsed_user_agent zugeordnet.
properties.WAFEvaluationTime additional.fields[].key:"WAFEvaluationTime", value.string_value Direkt aus dem Feld properties.WAFEvaluationTime zugeordnet.
properties.WAFMode additional.fields[].key:"WAFMode", value.string_value Direkt aus dem Feld properties.WAFMode zugeordnet.
resourceId target.resource.id Direkt aus dem Feld resourceId zugeordnet.
resourceid target.resource.product_object_id Direkt aus dem Feld resourceid zugeordnet.
ruleName security_result.rule_name Direkt aus dem Feld ruleName zugeordnet.
time/timeStamp metadata.event_timestamp, timestamp Wird als Zeitstempel im Format RFC 3339 oder ISO 8601 geparst. timeStamp wird bevorzugt, aber time wird verwendet, wenn timeStamp nicht vorhanden ist.
(Parser Logic) metadata.event_type Legen Sie „NETWORK_CONNECTION“ fest, wenn sowohl Hauptkonto als auch Ziel vorhanden sind, „STATUS_UPDATE“, wenn nur das Hauptkonto vorhanden ist, und andernfalls „GENERIC_EVENT“.
(Parser Logic) metadata.product_name Legen Sie diesen Wert auf „Azure Gateway“ fest.
(Parser Logic) metadata.vendor_name Legen Sie diesen Wert auf „Microsoft“ fest.
(Parser Logic) has_principal Ein boolescher Wert, der auf „wahr“ gesetzt wird, wenn Hauptinformationen (Hostname, IP oder Port) extrahiert werden, andernfalls auf „falsch“.
(Parser Logic) has_target Ein boolescher Wert, der auf „wahr“ gesetzt wird, wenn Zielinformationen (Hostname, IP, Port, Ressourcen-ID oder URL) extrahiert werden, andernfalls auf „falsch“.
(Parser Logic) disambiguation_key Wird hinzugefügt, wenn mehrere Ereignisse aus einem einzelnen Logeintrag extrahiert werden.

Änderungen

2024-04-19

  • Unterstützung für mehrere JSON-Ereignisprotokolle hinzugefügt.

2023-12-22

  • „resourceid“ wurde „target.resource.id“ zugeordnet.
  • „properties.operationStatus“ wurde in „security_result.category_details“ umgewandelt.
  • „properties.configuration.Name“ wurde „principal.hostname“ zugeordnet.
  • „properties.message“ wurde in „metadata.description“ umgewandelt.
  • „properties.configuration.RemoteStie“ wurde „target.hostname“ zugeordnet.
  • „level“ wurde „security_result.severity_details“ zugeordnet.
  • „properties.configuration.Ikeversion“ wurde in „principal.resource.attribute.labels“ geändert.
  • „properties.configuration.LocalTunnelEndpoint“ wurde auf „principal.ip“ zugeordnet.
  • „properties.configuration.RemoteTunnelEndpoint“ wurde auf „target.ip“ zugeordnet.
  • „properties.configuration.LocalSubnets“, „properties.configuration.RemoteSubnets“, „properties.configuration.VirtualNetworkRanges“ und „properties.configuration.VirtualNetworkSubnets“ wurden in „principal.resource.attribute.labels“ zugeordnet.
  • „properties.configuration.VIPAddress“ wurde auf „principal.ip“ zugeordnet.
  • „properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress“ wurde in „targrt.ip“ umgewandelt.
  • „properties.configuration.BgpConfiguration.GatewayConfig.PeerType“ und „properties.configuration.BgpConfiguration.GatewayConfig.Asn“ wurden in „security_result.detection_fields“ zugeordnet.

2023-11-16

  • Neu erstellter Parser.