Azure Application Gateway-Protokolle erfassen
Parserversion:8.0
In diesem Dokument wird beschrieben, wie Sie Azure Application Gateway-Logs erfassen, indem Sie einen Google Security Operations-Feed einrichten. Dieser Parser verarbeitet sowohl einzelne als auch mehrere Datensätze in JSON-Strukturen, extrahiert Felder aus dem Array „records“, führt Datentypkonvertierungen durch, ordnet Felder dem UDM zu und reichert die Daten mit Metadaten und abgeleiteten Feldern wie dem Typ der Netzwerkverbindung an. Außerdem wird darin die spezifische Logik für verschiedene operationName-Werte verarbeitet und es werden relevante IP-Adressen, Subnetze und andere Konfigurationsdetails extrahiert.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Google SecOps-Instanz
- Privilegierter Zugriff auf ein Azure-Abo
- Eine Azure Application Gateway-Umgebung (Mandant) in Azure
Azure Storage-Konto konfigurieren
- Suchen Sie in der Azure-Konsole nach Speicherkonten.
- Klicken Sie auf Erstellen.
- 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 (Standard wird empfohlen).
- Redundanz: Wählen Sie die Redundanz aus (GRS oder LRS empfohlen).
- Storage-Kontoname: Geben Sie einen Namen für das neue Speicherkonto ein.
- Klicken Sie auf Überprüfen + Erstellen.
- Sehen Sie sich die Übersicht des Kontos an und klicken Sie auf Erstellen.
- Wählen Sie auf der Seite Storage Account Overview (Speicherkonto – Übersicht) im Untermenü Security + networking (Sicherheit + Netzwerk) die Option Access keys (Zugriffsschlüssel) aus.
- Klicken Sie neben key1 oder key2 auf Anzeigen.
- Klicken Sie auf In die Zwischenablage kopieren, um den Schlüssel zu kopieren.
- Speichern Sie den Schlüssel an einem sicheren Ort, um ihn später zu verwenden.
- Wählen Sie auf der Seite Storage Account Overview (Speicherkontoübersicht) unter Settings (Einstellungen) das Untermenü Endpoints (Endpunkte) aus.
- Klicken Sie auf In Zwischenablage kopieren, um die Endpunkt-URL des Blob-Dienstes zu kopieren. (z. B.
https://<storageaccountname>.blob.core.windows.net) - Speichern Sie die Endpunkt-URL an einem sicheren Ort, um sie später zu verwenden.
Azure Application Gateway konfigurieren
- Melden Sie sich im Azure-Portal an.
- Rufen Sie die gewünschte Ressourcengruppe auf.
- Wählen Sie Application Gateway aus. Das Fenster Application Gateway wird angezeigt.
- Wählen Sie im Bereich Monitoring die Option Diagnoseeinstellungen > Diagnose aktivieren aus.
- Wählen Sie Diagnoseeinstellung hinzufügen aus. Im Fenster Diagnoseeinstellungen werden die Einstellungen für die Diagnoselogs angezeigt.
- Führen Sie im Abschnitt Log folgende Schritte aus:
- Klicken Sie das Kästchen ApplicationGatewayAccessLog an.
- Aktivieren Sie das Kästchen ApplicationGatewayFirewallLog.
- So speichern Sie Logs im Speicherkonto:
- Aktivieren Sie das Kästchen In einem Speicherkonto archivieren.
- Wählen Sie in der Liste Abo ein vorhandenes Abo aus.
- Wählen Sie in der Liste Speicherkonto ein vorhandenes Speicherkonto aus.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds > Neuen Feed hinzufügen
- Content Hub > Content-Pakete > Jetzt starten
Azure-Anwendungsgateway-Feed einrichten
- Klicken Sie auf das Paket Azure-Plattform.
- Suchen Sie den Protokolltyp Azure Application Gateway und klicken Sie auf Neuen Feed hinzufügen.
Geben Sie Werte für die folgenden Felder an:
- Quelltyp: Microsoft Azure Blob Storage V2.
- 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>)
- Dabei gilt:
- Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen aus.
- Maximales Dateialter: Enthält Dateien, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
- Freigegebener Schlüssel: Der freigegebene Schlüssel (ein 512-Bit-Zufallsstring in Base64-Codierung), der für den Zugriff auf Azure-Ressourcen verwendet wird.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Asset-Namespace: Namespace, der mit dem Feed verknüpft ist.
- Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
Klicken Sie auf Feed erstellen.
Weitere Informationen zum Konfigurieren mehrerer Feeds für verschiedene Logtypen in dieser Produktfamilie finden Sie unter Feeds nach Produkt konfigurieren.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
Category |
metadata.product_event_type |
Wird 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 |
Direkt aus dem Feld level übernommen und in Großbuchstaben umgewandelt. Wenn der Wert „WARNING“ lautet, wird die Schwere auf „HIGH“ gesetzt und security_result.severity_details auf den ursprünglichen Wert. |
properties.clientIP |
principal.ip, principal.asset.ip |
Wird direkt aus dem Feld properties.clientIP zugeordnet. |
properties.clientPort |
principal.port |
Direkt aus dem Feld properties.clientPort zugeordnet und in eine Ganzzahl umgewandelt. |
properties.clientResponseTime |
additional.fields[].key:"clientResponseTime", value.string_value |
Wird direkt aus dem Feld properties.clientResponseTime zugeordnet. |
properties.configuration.BgpConfiguration.GatewayConfig.Asn |
security_result.detection_fields[].key:"ASN", value |
Direkt aus dem Feld properties.configuration.BgpConfiguration.GatewayConfig.Asn zugeordnet, wenn operationName „SetGatewayConfiguration“ ist. |
properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress |
target.ip, target.asset.ip |
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 |
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 |
Direkt aus dem Feld properties.configuration.IkeVersion zugeordnet, wenn operationName „SetConnectionConfiguration“ ist. |
properties.configuration.LocalSubnets |
principal.resource.attribute.labels[].key:"local subnets", value |
Verketteter String von IP-Adressen aus dem Array properties.configuration.LocalSubnets, wenn operationName „SetConnectionConfiguration“ ist. |
properties.configuration.LocalTunnelEndpoint |
principal.ip, principal.asset.ip |
Direkt aus dem Feld properties.configuration.LocalTunnelEndpoint zugeordnet, wenn operationName „SetConnectionConfiguration“ ist. |
properties.configuration.Name |
principal.hostname, principal.asset.hostname |
Wird direkt aus dem Feld properties.configuration.Name zugeordnet. Wenn leer, wird der Wert aus properties.instance übernommen. |
properties.configuration.RemoteSite |
target.hostname, target.asset.hostname |
Wird direkt aus dem Feld properties.configuration.RemoteSite zugeordnet. |
properties.configuration.RemoteSubnets |
principal.resource.attribute.labels[].key:"remote subnets", value |
Verketteter String von IP-Adressen aus dem properties.configuration.RemoteSubnets-Array, wenn operationName „SetConnectionConfiguration“ ist. |
properties.configuration.RemoteTunnelEndpoint |
target.ip, target.asset.ip |
Direkt aus dem Feld properties.configuration.RemoteTunnelEndpoint zugeordnet, wenn operationName „SetConnectionConfiguration“ ist. |
properties.configuration.VIPAddress |
principal.ip, principal.asset.ip |
Direkt aus dem Feld properties.configuration.VIPAddress zugeordnet, wenn operationName „SetGatewayConfiguration“ ist. |
properties.configuration.VirtualNetworkRanges |
principal.resource.attribute.labels[].key:"virutal network ranges", value |
Verketteter String von IP-Adressen aus dem properties.configuration.VirtualNetworkRanges-Array, wenn operationName „SetGatewayConfiguration“ ist. |
properties.configuration.VirtualNetworkSubnets |
principal.resource.attribute.labels[].key:"virtual network subnets", value |
Verketteter String von IP-Adressen aus dem properties.configuration.VirtualNetworkSubnets-Array, 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 |
Wird auf „HTTP“ festgelegt, 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 |
Wird 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 |
Direkt aus dem Feld properties.receivedBytes zugeordnet und in eine vorzeichenlose Ganzzahl konvertiert. |
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 zugeordnet und in eine vorzeichenlose Ganzzahl umgewandelt. |
properties.serverResponseLatency |
additional.fields[].key:"Server Response Latency", value.string_value |
Wird direkt aus dem Feld properties.serverResponseLatency zugeordnet. |
properties.serverRouted |
target.ip, target.asset.ip, target.port |
Die IP-Adresse und der Port werden mithilfe eines regulären Ausdrucks 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 |
Wird 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 |
Wird direkt aus dem Feld properties.WAFEvaluationTime zugeordnet. |
properties.WAFMode |
additional.fields[].key:"WAFMode", value.string_value |
Wird direkt aus dem Feld properties.WAFMode zugeordnet. |
resourceId |
target.resource.id |
Direkt aus dem Feld resourceId zugeordnet. |
resourceid |
target.resource.product_object_id |
Wird 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 RFC 3339- oder ISO8601-Format geparst. timeStamp wird bevorzugt, aber time wird verwendet, wenn timeStamp nicht vorhanden ist. |
| (Parser-Logik) | metadata.event_type |
Wird auf „NETWORK_CONNECTION“ festgelegt, wenn sowohl das Hauptkonto als auch das Ziel vorhanden sind, auf „STATUS_UPDATE“, wenn nur das Hauptkonto vorhanden ist, und auf „GENERIC_EVENT“, wenn keines der beiden vorhanden ist. |
| (Parserlogik) | metadata.product_name |
Legen Sie diesen Wert auf „Azure Gateway“ fest. |
| (Parserlogik) | metadata.vendor_name |
Legen Sie diesen Wert auf „Microsoft“ fest. |
| (Parserlogik) | has_principal |
Ein boolesches Flag, das auf „true“ gesetzt wird, wenn Hauptinformationen (Hostname, IP oder Port) extrahiert werden, andernfalls auf „false“. |
| (Parserlogik) | has_target |
Ein boolesches Flag, das auf „true“ gesetzt ist, wenn Zielinformationen (Hostname, IP, Port, Ressourcen-ID oder URL) extrahiert werden, andernfalls auf „false“. |
| (Parser-Logik) | disambiguation_key |
Wird hinzugefügt, wenn mehrere Ereignisse aus einem einzelnen Logeintrag extrahiert werden. |