External Dynamic Lists (EDLs)#
External Dynamic Lists (EDLs) are lists of IP addresses, URLs, or domains that are hosted externally and periodically retrieved by the firewall. They are used in security policy rules to match specific IP addresses, URLs, or domains.
File Location#
EDLs are defined in the CSV file located at:
ngfw/objects/external dynamic lists/edls.csv
This path is defined in the settings.py module as EDLS_FILENAME.
File Format#
The edls.csv file defines External Dynamic Lists that will be created on the Palo Alto Networks firewall. Each row in the CSV file represents a single EDL configuration.
CSV Columns#
Column Name |
Description |
Required |
Example |
|---|---|---|---|
Name |
Name of the EDL |
Yes |
|
Type |
Type of EDL (ip, url, domain) |
Yes |
|
Repeat |
How often the EDL should be refreshed |
Yes |
|
Repeat At |
Specific time for refresh (if applicable) |
No |
|
Username |
Username for authentication (if required) |
No |
|
Password |
Password for authentication (if required) |
No |
|
Certificate Profile |
Certificate profile for authentication (if required) |
No |
|
Source |
The URL source of the EDL |
Yes |
|
Description |
A description of the EDL |
No |
|
Usage Examples#
Basic EDL Configuration#
To define a basic EDL, you need to specify at least the Name, Type, Repeat, and Source:
EDL-EXT-IP-DST-example,External EDL - Example,ip,daily,,,,,https://example.com/edl.txt,External EDL hosted by Example Inc.
EDL Types#
EDLs can be of different types:
IP EDLs - Used for lists of IP addresses:
EDL-example,ip,daily,,,,,https://example.com/edls/ip-list.txt,External EDL with IP addresses
URL EDLs - Used for lists of URLs:
EDL-URL-example,url,daily,,,,,https://example.com/edls/url-list.txt,External EDL with URLs
Domain EDLs - Used for lists of domains:
EDL-DOM-example,domain,daily,,,,,https://example.com/edls/domain-list.txt,External EDL with domains
Refresh Schedules#
EDLs can be refreshed at different intervals:
Daily - Refreshed once per day:
EDL-EXT-IP-DST-example,External EDL - Example,ip,daily,7,,,,https://example.com/edl.txt,Refreshed daily at 7 AM
Hourly - Refreshed once per hour:
EDL-EXT-IP-DST-example,External EDL - Example,ip,hourly,,,,,https://example.com/edl.txt,Refreshed hourly
Five-minute - Refreshed every five minutes:
EDL-EXT-IP-DST-example,External EDL - Example,ip,five-minute,,,,,https://example.com/edl.txt,Refreshed every five minutes
Environment-Specific EDLs#
For EDLs that need to be environment-specific, use the <target_environment> placeholder in the Source URL:
EDL-IP-break_glass_dst,Internal EDL - IP DST - break-glass,ip,five-minute,,,,,https://edls.example.local/edl/<target_environment>/ip-dst-break-glass.txt,Internal EDL for break-glass scenarios
Implementation Details#
The EDLs defined in this CSV file are processed by the create_edls function in the edls.py module. This function:
Parses the CSV file using the
parse_metadata_from_csvfunctionCreates a table to display the EDLs being staged
Processes each EDL entry from the CSV file: - Handles formatting for the “Repeat At” field - Sets certificate profile, username, and password if provided - Handles environment-specific EDL source URLs by replacing
<target_environment>placeholdersCreates EDL objects using the Palo Alto Networks SDK
Deploys the EDLs to the PAN-OS device using multi-config API calls