Azure Application Gateway-Protokolle erfassen
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 Datensätzen, 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 spezifische Logik für verschiedene operationName
-Werte verarbeitet, um relevante IP-Adressen, Subnetze und andere Konfigurationsdetails zu extrahieren.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- 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 Storage accounts (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.
- Bewahren Sie den Schlüssel an einem sicheren Ort auf, um ihn später zu verwenden.
- Wählen Sie auf der Seite Storage Account Overview (Speicherkontoübersicht) im Untermenü Settings (Einstellungen) die Option Endpoints (Endpunkte) aus.
- Klicken Sie auf In die 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 für die spätere Verwendung.
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.
- Klicken Sie das Kästchen ApplicationGatewayFirewallLog an.
- 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
- Content Hub> Content-Pakete
Feeds über die SIEM-Einstellungen > „Feeds“ einrichten
Informationen zum Konfigurieren mehrerer Feeds für verschiedene Logtypen in dieser Produktfamilie finden Sie unter Feeds nach Produkt konfigurieren.
So konfigurieren Sie einen einzelnen Feed:
- Rufen Sie die SIEM-Einstellungen> Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Azure Application Gateway Logs (Azure Application Gateway-Protokolle).
- Wählen Sie Microsoft Azure Blob Storage als Quelltyp aus.
- Wählen Sie Azure Application Gateway als Logtyp aus.
- Klicken Sie auf Weiter.
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>
)
- Dabei gilt:
- URI is a (URI ist ein): Wählen Sie den URI-TYP entsprechend der Logstream-Konfiguration aus (Single file | Directory | Directory which includes subdirectories (Einzelne Datei | Verzeichnis | Verzeichnis mit Unterverzeichnissen)).
- Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen 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.
- Azure-URI: Die Blob-Endpunkt-URL.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder 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>
)
- Dabei gilt:
- URI is a (URI ist ein): Wählen Sie den URI-TYP entsprechend der Logstream-Konfiguration aus (Single file (Einzelne Datei) | Directory (Verzeichnis) | Directory which includes subdirectories (Verzeichnis mit Unterverzeichnissen)).
- Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen aus.
- Freigegebener Schlüssel: Der Zugriffsschlüssel für Azure Blob Storage.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace: Namespace, der dem Feed zugeordnet ist.
- Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
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 |
Direkt aus dem Feld level zugeordnet und in Großbuchstaben konvertiert. Wenn der Wert „WARNING“ ist, wird die Schwere auf „HIGH“ gesetzt und security_result.severity_details auf den ursprünglichen Wert. |
properties.clientIP |
principal.ip , principal.asset.ip |
Direkt aus dem Feld properties.clientIP zugeordnet. |
properties.clientPort |
principal.port |
Direkt aus dem Feld properties.clientPort zugeordnet und in eine Ganzzahl konvertiert. |
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 |
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 properties.configuration.LocalSubnets -Array, 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 |
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 |
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 |
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 |
Direkt aus dem Feld properties.httpStatus zugeordnet und in eine Ganzzahl konvertiert. |
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 |
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 abgeleitet 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 |
Direkt aus dem Feld properties.sentBytes abgeleitet und in eine vorzeichenlose Ganzzahl konvertiert. |
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 |
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 |
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 RFC 3339- oder ISO8601-Format geparst. timeStamp wird bevorzugt, aber time wird verwendet, wenn timeStamp nicht vorhanden ist. |
(Parserlogik) | metadata.event_type |
Auf „NETWORK_CONNECTION“ festgelegt, wenn sowohl das Hauptkonto als auch das Ziel vorhanden sind, auf „STATUS_UPDATE“, wenn nur das Hauptkonto vorhanden ist, und andernfalls auf „GENERIC_EVENT“. |
(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 boolescher Parameter, der auf „true“ gesetzt wird, wenn Hauptinformationen (Hostname, IP oder Port) extrahiert werden, andernfalls auf „false“. |
(Parserlogik) | has_target |
Ein boolescher Parameter, der auf „true“ gesetzt wird, wenn Zielinformationen (Hostname, IP, Port, Ressourcen-ID oder URL) extrahiert werden, andernfalls auf „false“. |
(Parserlogik) | disambiguation_key |
Wird hinzugefügt, wenn mehrere Ereignisse aus einem einzelnen Logeintrag extrahiert werden. |