Azure App Service-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Azure APP Service-Protokolle mithilfe eines Azure-Speicherkontos in Google Security Operations exportieren. Der Parser wandelt Roh-JSON-formatierte Azure App Service-Protokolle in ein strukturiertes einheitliches Datenmodell (UDM) um. Es werden relevante Felder aus den Rohlogs extrahiert, Daten werden bereinigt und normalisiert und die extrahierten Informationen werden den entsprechenden UDM-Feldern zugeordnet. Schließlich wird für jeden Logeintrag ein UDM-konformes JSON-Objekt ausgegeben.
Hinweise
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen einen aktiven Azure-Mandanten.
- Sie benötigen Berechtigungen für den Zugriff auf Azure.
Azure-Speicherkonto 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. 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.
- 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 Speicherkontoübersicht unter Sicherheit & Netzwerk das Untermenü Zugriffsschlüssel aus.
- Klicken Sie neben Schlüssel 1 oder Schlüssel 2 auf Anzeigen.
- Klicke 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 Speicherkontoübersicht unter Einstellungen das Untermenü Endpunkte aus.
- Klicken Sie auf In die Zwischenablage kopieren, um die Endpunkt-URL des Blob-Dienstes (z. B.
https://<storageaccountname>.blob.core.windows.net
) zu kopieren. - Speichern Sie die Endpunkt-URL an einem sicheren Ort für die spätere Verwendung.
Logexport für Azure AD-Anmeldeprotokolle konfigurieren
- Melden Sie sich mit Ihrem Konto mit Berechtigungen im Azure-Portal an.
- Gehen Sie zu App-Dienste und wählen Sie den erforderlichen App-Dienst aus.
- Wählen Sie Monitoring > App-Dienst-Logs aus.
- Aktivieren Sie Anwendungs-Logging (Blob).
- Wählen Sie unter Webdienstprotokollierung die Option Speicher aus.
- Wählen Sie das Abo und das Speicherkonto aus.
- Legen Sie den Aufbewahrungszeitraum und das Kontingent entsprechend Ihren Anforderungen fest.
- Aktivieren Sie Detaillierte Fehlermeldungen.
- Aktivieren Sie ON für Failed request tracing.
- Klicken Sie auf Speichern.
Feed in Google SecOps für die Aufnahme der Azure App Service-Protokolle konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Azure APP Service Logs.
- Wählen Sie Microsoft Azure Blob Storage als Quelltyp aus.
- Wählen Sie Azure App Service als Protokolltyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Azure-URI: die Blob-Endpunkt-URL.
ENDPOINT_URL/BLOB_NAME
- Ersetzen Sie Folgendes:
ENDPOINT_URL
: die Blob-Endpunkt-URL (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: der Name des Blobs (z. B.<logname>-logs
)
- URI ist: Wählen Sie den URI-TYP gemäß der Konfiguration des Protokollstreams aus (Einzeldatei | 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.
- 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.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
AppRoleInstance | read_only_udm.principal.resource.product_object_id | Direkte Zuordnung |
AppRoleName | read_only_udm.principal.resource.name | Direkte Zuordnung |
AppVersion | read_only_udm.principal.resource.attribute.labels.value | Direkte Zuordnung |
Kategorie | read_only_udm.metadata.product_event_type | Direkte Zuordnung |
CIp | read_only_udm.target.asset.ip | Direkte Zuordnung |
CIp | read_only_udm.target.ip | Direkte Zuordnung |
ClientCity | read_only_udm.principal.location.city | Direkte Zuordnung |
ClientCountryOrRegion | read_only_udm.principal.location.country_or_region | Direkte Zuordnung |
ClientIP | read_only_udm.principal.asset.ip | Direkte Zuordnung |
ClientIP | read_only_udm.principal.ip | Direkte Zuordnung |
ClientStateOrProvince | read_only_udm.principal.location.state | Direkte Zuordnung |
ClientType | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
ComputerName | read_only_udm.principal.asset.hostname | Direkte Zuordnung |
ComputerName | read_only_udm.principal.hostname | Direkte Zuordnung |
Cookie | read_only_udm.principal.resource.attribute.labels.value | Direkte Zuordnung |
CsBytes | read_only_udm.network.sent_bytes | Umbenannt von CsBytes |
CsHost | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
CsMethod | read_only_udm.network.http.method | Direkte Zuordnung |
CsUriQuery | read_only_udm.principal.resource.attribute.labels.value | Direkte Zuordnung |
CsUriStem | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
CsUriStem | read_only_udm.target.url | Direkte Zuordnung |
CsUsername | read_only_udm.principal.user.user_display_name | Direkte Zuordnung |
EventIpAddress | read_only_udm.principal.asset.ip | Direkte Zuordnung |
EventIpAddress | read_only_udm.principal.ip | Direkte Zuordnung |
EventPrimaryStampName | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
EventStampName | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
EventStampType | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
Host | read_only_udm.principal.asset.hostname | Direkte Zuordnung |
Host | read_only_udm.principal.hostname | Direkte Zuordnung |
IKey | read_only_udm.target.resource.attribute.labels.value | Direkte Zuordnung |
Instanz | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
Name | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
Protokoll | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
Protokoll | read_only_udm.network.application_protocol | Wird HTTP zugeordnet, wenn das Protokoll HTTP/1.1 ist |
Verwiesen von: | read_only_udm.network.http.referral_url | Direkte Zuordnung |
ResourceGUID | read_only_udm.target.resource.product_object_id | Umbenannt von ResourceGUID |
SDKVersion | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
SDKVersion | read_only_udm.principal.resource.attribute.labels.value | Direkte Zuordnung |
Sport | read_only_udm.principal.port | Umbenannt von „SPort“ |
ScBytes | read_only_udm.network.received_bytes | Früher „ScBytes“ |
ScStatus | read_only_udm.network.http.response_code | Umbenannt von „ScStatus“ |
TimeTaken | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
Typ | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
Nutzer | read_only_udm.principal.user.userid | Direkte Zuordnung |
UserAddress | read_only_udm.principal.asset.ip | Wird aus „UserAddress“ extrahiert, wenn es sich um eine gültige IP-Adresse handelt. |
UserAddress | read_only_udm.principal.ip | Wird aus „UserAddress“ extrahiert, wenn es sich um eine gültige IP-Adresse handelt. |
User-Agent | read_only_udm.network.http.user_agent | Direkte Zuordnung |
UserDisplayName | read_only_udm.principal.user.user_display_name | Direkte Zuordnung |
Kategorie | read_only_udm.metadata.product_event_type | Direkte Zuordnung |
level | read_only_udm.security_result.severity | In Großbuchstaben und von „Ebene“ in „Ebene“ umbenannt |
Standort | read_only_udm.principal.location.name | Direkte Zuordnung |
operationName | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
record.properties.Protocol | read_only_udm.additional.fields.value.string_value | Direkte Zuordnung |
record.properties.Result | read_only_udm.security_result.summary | Direkte Zuordnung |
record.time | read_only_udm.metadata.event_timestamp | Als RFC 3339-Zeitstempel geparst |
resourceId | read_only_udm.target.resource.attribute.labels.value | Direkte Zuordnung |
resourceId | read_only_udm.target.resource.product_object_id | Wurde von „resourceId“ umbenannt |
read_only_udm.metadata.event_type | Wird anhand der Anwesenheit von Hauptkonto, Ziel und Protokoll ermittelt. Wird auf NETWORK_HTTP gesetzt, wenn „principal“, „target“ und „Protocol=HTTP “ vorhanden sind. Wird auf NETWORK_CONNECTION gesetzt, wenn Hauptkonto und Ziel vorhanden sind. Legen Sie STATUS_UPDATE fest, wenn nur das Hauptkonto vorhanden ist. Andernfalls setzen Sie GENERIC_EVENT . |
Änderungen
2024-10-18
Optimierung:
properties.XForwardedHost
wurdeprincipal.hostname
undprincipal.asset.hostname
zugeordnet.properties_category
wurdeadditional.fields
zugeordnet.properties.roleInstance
wurdeprincipal.resource.product_object_id
zugeordnet.properties.message
wurdesecurity_result.summary
zugeordnet.
2024-09-30
Optimierung:
- Unterstützung für das neue Format von nicht geparsten JSON-Protokollen hinzugefügt.
2024-06-24
Optimierung:
metadata.product_name
undmetadata.vendor_name
wurdenAZURE_APP_SERVICE
zugeordnet.
2024-06-07
Optimierung:
- Unterstützung für JSON-Protokolle hinzugefügt, die nicht im Arrayformat vorliegen.
properties.ScSubStatus
wurdeadditional.fields
zugeordnet.properties.ScWin32Status
wurdeadditional.fields
zugeordnet.
2024-04-25
Optimierung:
properties.User
wurdeprincipal.user.userid
zugeordnet.properties.UserDisplayName
wurdeprincipal.user.user_display_name
zugeordnet.properties.UserAddress
wurdeprincipal.ip
zugeordnet.properties.Protocol
,ClientBrowser
,ClientModel
,ClientOS
,OperationId
,ParentId
undItemCount
wurdenadditional.fields
zugeordnet.CsUriQuery
,SDKVersion
undCookie
wurdenprincipal.resource.attribute.labels
zugeordnet.SessionId
wurdenetwork.session_id
zugeordnet.Message
wurdesecurity_result.summary
zugeordnet.SeverityLevel
wurdesecurity_result.severity_details
zugeordnet.
2024-02-20
Optimierung:
record.AppRoleInstance
wurdeprincipal.resource.product_object_id
zugeordnet.record.AppRoleName
wurdeprincipal.resource.name
zugeordnet.record.ClientCity
wurdeprincipal.location.city
zugeordnet.record.ClientCountryOrRegion
wurdeprincipal.location.country_or_region
zugeordnet.record.ClientStateOrProvince
wurdeprincipal.location.state
zugeordnet.record.ClientIP
wurdeprincipal.ip
zugeordnet.Result
wurdesecurity_result.summary
zugeordnet.UserAgent
wurdenetwork.http.user_agent
zugeordnet.Referer
wurdenetwork.http.referral_url
zugeordnet.record.ResourceGUID
wurdetarget.resource.product_object_id
zugeordnet.- Wenn
record.ResourceGUID
nicht vorhanden ist, wirdrecord.resourceId
auftarget.resource.product_object_id
zugeordnet. - Wenn
record.ResourceGUID
vorhanden ist, wirdrecord.resourceId
additional.fields
zugeordnet. record.Type
wurdeadditional.fields
zugeordnet.record.ClientType
wurdeadditional.fields
zugeordnet.record.SDKVersion
wurdeadditional.fields
zugeordnet.record.Name
wurdeadditional.fields
zugeordnet.record.Instance
wurdeadditional.fields
zugeordnet.record.TimeTaken
wurdeadditional.fields
zugeordnet.record.Cookie
wurdeadditional.fields
zugeordnet.record.AppVersion
wurdeprincipal.resource.attribute.labels
zugeordnet.record.IKey
wurdetarget.resource.attribute.labels
zugeordnet.record.Category
wurdemetadata.product_event_type
zugeordnet.CsUriStem
wurdetarget.url
zugeordnet.- Die Zuordnung von
CsBytes
wurde vonnetwork.received_bytes
zunetwork.sent_bytes
geändert. - Die Zuordnung von
ScBytes
wurde vonnetwork.sent_bytes
zunetwork.received_bytes
geändert.
2023-12-07
- Neu erstellter Parser.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten