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 (Unified Data Model, 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 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. 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 Kontoübersicht 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 key1 oder key2 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 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.
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 als Quelltyp Microsoft Azure Blob Storage 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
- Dabei gilt:
ENDPOINT_URL
: die Blob-Endpunkt-URL (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: der Name des Blobs (z. B.<logname>-logs
)
- Dabei gilt:
- URI ist: Wählen Sie den URI-TYP gemäß der Logstream-Konfiguration 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-Logs 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