Azure Storage-Audit-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Azure Storage Audit-Logs mithilfe eines Azure Storage-Kontos in Google Security Operations exportieren. Der Parser verarbeitet Protokolle im JSON-Format und wandelt sie in das Unified Data Model (UDM) um. Dabei werden Felder aus dem Rohprotokoll extrahiert, Datentypkonvertierungen durchgeführt, die Daten mit zusätzlichem Kontext angereichert (z. B. User-Agent-Parsing und IP-Adressaufschlüsselung) und die extrahierten Felder den entsprechenden UDM-Feldern zugeordnet.
Vorbereitung
- 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 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 Storage-Audit-Logs konfigurieren
- Melden Sie sich mit Ihrem Konto mit Berechtigungen im Azure-Portal an.
- Gehen Sie zu Speicherkonten > Diagnoseeinstellungen.
- Klicken Sie auf + Diagnoseeinstellung hinzufügen.
- Wählen Sie die Diagnoseeinstellungen für
blob
,queue
,table
undfile
aus.- Wählen Sie für jede Diagnoseeinstellung die Option allLogs unter Kategoriegruppen aus.
- Geben Sie für jede Diagnoseeinstellung einen aussagekräftigen Namen ein.
- Wählen Sie das Kästchen In einem Speicherkonto archivieren als Ziel aus.
- Geben Sie das Abo und das Speicherkonto an.
- Klicken Sie auf Speichern.
Feed in Google SecOps für die Aufnahme der Azure Storage-Audit-Logs 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 Storage Audit Logs.
- Wählen Sie Microsoft Azure Blob Storage als Quelltyp aus.
- Wählen Sie Azure Storage Audit 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.<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 |
---|---|---|
callerIpAddress |
principal.asset.ip |
Die IP-Adresse wird mit einem Grok-Muster aus dem Feld callerIpAddress extrahiert und principal.asset.ip zugewiesen. |
callerIpAddress |
principal.ip |
Die IP-Adresse wird mit einem Grok-Muster aus dem Feld callerIpAddress extrahiert und principal.ip zugewiesen. |
callerIpAddress |
principal.port |
Die Portnummer wird mithilfe eines Grok-Musters aus dem Feld callerIpAddress extrahiert und principal.port zugewiesen. |
category |
security_result.category_details |
Der Wert des Felds category wird security_result.category_details zugewiesen. |
correlationId |
security_result.detection_fields[0].key |
Dem Schlüsselfeld wird der Literalstring correlationId zugewiesen. |
correlationId |
security_result.detection_fields[0].value |
Der Wert des Felds correlationId wird security_result.detection_fields[0].value zugewiesen. Der Wert des Felds time wird als Zeitstempel geparst und event.idm.read_only_udm.metadata.event_timestamp zugewiesen. Wenn category den Wert StorageWrite hat und principal.user.userid vorhanden ist (aus properties.accountName abgeleitet), wird der Wert auf USER_RESOURCE_UPDATE_CONTENT gesetzt. Wenn category den Wert StorageDelete hat und principal.user.userid vorhanden ist, wird der Wert auf USER_RESOURCE_DELETION gesetzt. Andernfalls wird der Wert auf USER_RESOURCE_ACCESS gesetzt. event.idm.read_only_udm.metadata.log_type wird das Literalstring AZURE_STORAGE_AUDIT zugewiesen. event.idm.read_only_udm.metadata.product_name wird das Literalstring AZURE_STORAGE_AUDIT zugewiesen. Der Wert des Felds schemaVersion wird event.idm.read_only_udm.metadata.product_version zugewiesen. event.idm.read_only_udm.metadata.vendor_name wird das Literalstring AZURE_STORAGE_AUDIT zugewiesen. |
location |
target.location.name |
Der Wert des Felds location wird target.location.name zugewiesen. |
operationName |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring operationName zugewiesen. |
operationName |
additional.fields[x].value.string_value |
Der Wert des Felds operationName wird additional.fields[x].value.string_value zugewiesen. |
operationVersion |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring operationVersion zugewiesen. |
operationVersion |
additional.fields[x].value.string_value |
Der Wert des Felds operationVersion wird additional.fields[x].value.string_value zugewiesen. |
properties.accountName |
principal.user.userid |
Der Wert des Felds properties.accountName wird principal.user.userid zugewiesen. |
properties.clientRequestId |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring clientRequestId zugewiesen. |
properties.clientRequestId |
additional.fields[x].value.string_value |
Der Wert des Felds properties.clientRequestId wird additional.fields[x].value.string_value zugewiesen. |
properties.etag |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring etag zugewiesen. |
properties.etag |
additional.fields[x].value.string_value |
Der Wert des Felds properties.etag wird additional.fields[x].value.string_value zugewiesen. |
properties.objectKey |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring objectKey zugewiesen. |
properties.objectKey |
additional.fields[x].value.string_value |
Der Wert des Felds properties.objectKey wird additional.fields[x].value.string_value zugewiesen. |
properties.requestMd5 |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring requestMd5 zugewiesen. |
properties.requestMd5 |
additional.fields[x].value.string_value |
Der Wert des Felds properties.requestMd5 wird additional.fields[x].value.string_value zugewiesen. |
properties.responseMd5 |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring responseMd5 zugewiesen. |
properties.responseMd5 |
additional.fields[x].value.string_value |
Der Wert des Felds properties.responseMd5 wird additional.fields[x].value.string_value zugewiesen. |
properties.serviceType |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring serviceType zugewiesen. |
properties.serviceType |
additional.fields[x].value.string_value |
Der Wert des Felds properties.serviceType wird additional.fields[x].value.string_value zugewiesen. |
properties.tlsVersion |
network.tls.version |
Der Wert des Felds properties.tlsVersion wird network.tls.version zugewiesen. |
properties.userAgentHeader |
network.http.parsed_user_agent |
Der Wert des Felds properties.userAgentHeader wird als User-Agent-String geparst und network.http.parsed_user_agent zugewiesen. |
properties.userAgentHeader |
network.http.user_agent |
Der Wert des Felds properties.userAgentHeader wird network.http.user_agent zugewiesen. |
protocol |
network.application_protocol |
Der Wert des Felds protocol wird network.application_protocol zugewiesen. |
resourceId |
target.resource.id |
Der Wert des Felds resourceId wird target.resource.id zugewiesen. |
resourceId |
target.resource.product_object_id |
Der Wert des Felds resourceId wird target.resource.product_object_id zugewiesen. target.resource.resource_type wird das Literalstring DATABASE zugewiesen. |
resourceType |
additional.fields[x].key |
Dem Schlüsselfeld wird der Literalstring resourceType zugewiesen. |
resourceType |
additional.fields[x].value.string_value |
Der Wert des Felds resourceType wird additional.fields[x].value.string_value zugewiesen. Wenn statusText den Wert Success hat, wird der Wert auf ALLOW gesetzt. |
statusCode |
network.http.response_code |
Der Wert des Felds statusCode wird in eine Ganzzahl konvertiert und network.http.response_code zugewiesen. target.cloud.environment wird das Literalstring MICROSOFT_AZURE zugewiesen. |
time |
timestamp |
Der Wert des Felds time wird als Zeitstempel geparst und timestamp zugewiesen. |
uri |
network.http.referral_url |
Der Wert des Felds uri wird network.http.referral_url zugewiesen. |
Änderungen
2024-12-12
identity.tokenHash
,identity.type
,identity.requester.appId
,identity.requester.tenantId
,identity.requester.tokenIssuer
,properties.sourceAccessTier
,principal.type
,auth.action
,auth.roleAssignmentId
undauth.roleDefinitionId
aufadditional.fields
identity.requester.upn
wurdesrc.user.userid
zugeordnet.identity.requester.objectId
wurdesrc.user.product_object_id
zugeordnet.
2024-12-06
smbCommandMinor
wurdesecurity_result.action_details
zugeordnet.
2024-07-31
statusText
undcorrelationId
wurden auf null initialisiert.
2024-04-08
- Neu erstellter Parser.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten