Collect Azure Firewall logs
This document explains how to export Azure Firewall logs to Google Security Operations using Azure Storage Account. The parser first attempts to process the input as JSON, extracting data from the Records field. If the Record field is empty, the parser then uses a series of Grok patterns and conditional statements to extract relevant fields from the message, handling different formats and variations in the Azure Firewall logs.
Before you begin
Ensure you have the following prerequisites:
- Google SecOps instance
- An active Azure tenant
- Privileged access to Azure
Configure Azure Storage Account
- In the Azure console, search for Storage accounts.
- Click + Create.
- Specify values for the following input parameters:
- Subscription: Select the subscription.
- Resource Group: Select the resource group.
- Region: Select the region.
- Performance: Select the performance (Standard recommended).
- Redundancy: Select the redundancy (GRS or LRS recommended).
- Storage account name: Enter a name for the new storage account.
 
- Click Review + create.
- Review the overview of the account and click Create.
- From the Storage Account Overview page, select the Access keys submenu in Security + networking.
- Click Show next to key1 or key2.
- Click Copy to clipboard to copy the key.
- Save the key in a secure location for later use.
- From the Storage Account Overview page, select the Endpoints submenu in Settings.
- Click Copy to clipboard to copy the Blob service endpoint URL; for example, https://<storageaccountname>.blob.core.windows.net.
- Save the endpoint URL in a secure location for later use.
How to configure Log Export for Azure Firewalls Logs
- Sign in to the Azure Portal using your privileged account.
- Go to Firewalls and select the required firewall.
- Select Monitoring > Diagnostic Services.
- Click + Add diagnostic setting.
- Enter a descriptive name for the diagnostic setting.
 
- Select allLogs.
- Select the Archive to a storage account checkbox as the destination.
- Specify the Subscription and Storage Account.
 
- Click Save.
Set up feeds
There are two different entry points to set up feeds in the Google SecOps platform:
- SIEM Settings > Feeds > Add New Feed
- Content Hub > Content Packs > Get Started
How to set up the Azure firewall feed
- Click the Azure Platform pack.
- Locate the Azure firewall log type and click Add new feed.
- Specify values for the following fields: - Source Type: Microsoft Azure Blob Storage V2.
- Azure URI: The blob endpoint URL.
- ENDPOINT_URL/BLOB_NAME- Replace the following:
- ENDPOINT_URL: The blob endpoint URL (- https://<storageaccountname>.blob.core.windows.net)
- BLOB_NAME: The name of the blob (such as,- <logname>-logs)
 
 
- Replace the following:
 
- Source deletion options: Select the deletion option according to your ingestion preferences. 
- Maximum File Age: Includes files modified in the last number of days. Default is 180 days. 
- Shared key: The shared key (a 512-bit random string in base-64 encoding) used to access Azure resources. 
 - Advanced options - Feed Name: A prepopulated value that identifies the feed.
- Asset Namespace: Namespace associated with the feed.
- Ingestion Labels: Labels applied to all events from this feed.
 
- Click Create feed. 
For more information about configuring multiple feeds for different log types within this product family, see Configure feeds by product.
UDM Mapping
| Log field | UDM mapping | Logic | 
|---|---|---|
| @timestamp | metadata.event_timestamp | Converts the raw log field @timestampto UDM Format. | 
| category | security_result.rule_type | Maps the raw log field categoryto UDM. | 
| operationName | metadata.product_event_type | Maps the raw log field operationNameto UDM. | 
| properties.Action | security_result.action | Maps the raw log field properties.Actionto UDM, convertingALLOWtoALLOW,DENYtoBLOCK, and any other value toUNKNOWN_ACTION. | 
| properties.DestinationIp | target.ip | Maps the raw log field properties.DestinationIpto UDM. | 
| properties.DestinationPort | target.port | Maps the raw log field properties.DestinationPortto UDM. | 
| properties.DnssecOkBit | additional.fields.value.bool_value | Maps the raw log field properties.DnssecOkBitto UDM. | 
| properties.EDNS0BufferSize | additional.fields.value.number_value | Maps the raw log field properties.EDNS0BufferSizeto UDM. | 
| properties.ErrorMessage | additional.fields.value.string_value | Maps the raw log field properties.ErrorMessageto UDM. | 
| properties.ErrorNumber | additional.fields.value.number_value | Maps the raw log field properties.ErrorNumberto UDM. | 
| properties.Policy | security_result.detection_fields.value | Maps the raw log field properties.Policyto UDM. | 
| properties.Protocol | network.ip_protocol | Maps the raw log field properties.Protocolto UDM if it's notHTTPSorHTTP. | 
| properties.Protocol | network.application_protocol | Maps the raw log field properties.Protocolto UDM if it'sHTTPSorHTTP. | 
| properties.QueryClass | network.dns.questions.class | Maps the raw log field properties.QueryClassto UDM using a lookup table for mapping DNS query classes. | 
| properties.QueryId | network.dns.id | Maps the raw log field properties.QueryIdto UDM. | 
| properties.QueryName | network.dns.questions.name | Maps the raw log field properties.QueryNameto UDM. | 
| properties.QueryType | network.dns.questions.type | Maps the raw log field properties.QueryTypeto UDM using a lookup table for mapping DNS record types. | 
| properties.RequestSize | network.sent_bytes | Maps the raw log field properties.RequestSizeto UDM. | 
| properties.ResponseCode | network.dns.response_code | Maps the raw log field properties.ResponseCodeto UDM using a lookup table for mapping DNS response codes. | 
| properties.ResponseFlags | additional.fields.value.string_value | Maps the raw log field properties.ResponseFlagsto UDM. | 
| properties.ResponseSize | network.received_bytes | Maps the raw log field properties.ResponseSizeto UDM. | 
| properties.Rule | security_result.rule_name | Maps the raw log field properties.Ruleto UDM. | 
| properties.RuleCollection | security_result.detection_fields.value | Maps the raw log field properties.RuleCollectionto UDM. | 
| properties.RuleCollectionGroup | security_result.detection_fields.value | Maps the raw log field properties.RuleCollectionGroupto UDM. | 
| properties.SourceIp | principal.ip | Maps the raw log field properties.SourceIpto UDM. | 
| properties.SourcePort | principal.port | Maps the raw log field properties.SourcePortto UDM. | 
| properties.msg | security_result.description | Maps the raw log field properties.msgto UDM after extracting other fields from it. | 
| records.category | security_result.rule_type | Maps the raw log field records.categoryto UDM. | 
| records.operationName | metadata.product_event_type | Maps the raw log field records.operationNameto UDM. | 
| records.properties.msg | This field is used for extracting multiple fields using Grok patterns and doesn't have a direct mapping to UDM. | |
| records.resourceId | metadata.product_log_id | Maps the raw log field records.resourceIdto UDM. | 
| resourceId | metadata.product_log_id | Maps the raw log field resourceIdto UDM. | 
| time | metadata.event_timestamp | Converts the raw log field timeto UDM Format. | 
| metadata.vendor_name | This field is populated by the parser with the value Microsoft Inc.. | |
| metadata.product_name | This field is populated by the parser with the value Azure Firewall Application Rule. | |
| metadata.log_type | This field is populated by the parser with the value AZURE_FIREWALL. | |
| additional.fields.key | This field is populated by the parser with the key for the additional field. | |
| security_result.detection_fields.key | This field is populated by the parser with the key for the detection field. | |
| network.application_protocol | This field is populated by the parser with the value DNSfor DNS logs. | |
| metadata.event_type | This field is populated by the parser based on the log message. It can be NETWORK_CONNECTION,GENERIC_EVENT,STATUS_UPDATE, orNETWORK_DNS. | 
Need more help? Get answers from Community members and Google SecOps professionals.