Palo Alto Panorama
Visualize your Palo Alto Panorama estate in JupiterOne — the managed firewalls, device groups, address objects and address groups, and the security policy rules applied across them — and monitor policy and inventory changes through queries and alerts.
- Installation
- Authorization
- Data Model
- Types
- Release Notes
Installation
This integration reads data from Palo Alto Panorama over the PAN-OS XML API — the Panorama instance itself, the firewalls it manages, device groups, address objects and address groups, and the pre- and post-rulebase security policy rules. It is read-only: it issues only configuration read and operational show requests, and never commits or modifies your configuration.
Panorama is typically deployed on-premises and not reachable from the internet, so this integration is most often run through a JupiterOne Collector inside your network.
Configuration in Panorama
The integration authenticates as a Panorama administrator and generates an API key with a type=keygen request. Create a dedicated administrator for it rather than reusing an existing account.
1. Create an Admin Role profile with XML API access
-
Log in to the Panorama web interface as an administrator.
-
Select Panorama > Admin Roles and click Add.
-
Enter a Name for the profile — for example,
jupiterone-readonly. -
Set the Role type to Panorama.
infoThe XML API tab is only available when the Role type is Panorama. A Device Group and Template role cannot be granted XML API access.
-
Select the XML API tab and Enable the following two functional areas, leaving the rest Disabled:
XML API functional area Why the integration needs it Configuration Reads device groups, address objects, address groups, and security rules ( type=config).Operational Requests Runs show system info,show devices all, andshow dg-hierarchy(type=op).Report, Log, Commit, User-ID Agent, Export, and Import are not used and should stay disabled.
noteThe XML API functional areas are single Enabled/Disabled toggles — unlike the Web UI tab, they have no read-only setting. Enabling Configuration therefore permits both retrieving and modifying configuration over the XML API. The integration only ever retrieves it.
-
Click OK.
2. Create the administrator account
-
Select Panorama > Administrators and click Add.
-
Enter a Name for the administrator — for example,
jupiterone. -
Leave Authentication Profile set to None and enter a Password to authenticate locally, or select an authentication profile if you manage administrators externally.
-
Set Administrator Type to Custom Panorama Admin and select the Admin Role profile you created above.
-
Click OK.
3. Commit your changes
Select Commit > Commit to Panorama to apply the new role and administrator.
Network and TLS requirements
-
The integration reaches Panorama over HTTPS on port
443. Ensure the Collector has network access to the Panorama management interface, and that the management interface permits HTTPS access from it. -
If Panorama presents a self-signed or internal-CA TLS certificate, obtain that CA certificate in PEM format so the Collector can verify the connection.
Once you have the hostname, username, and password, proceed to JupiterOne to finalize the integration.
Configuration in JupiterOne
To install the Palo Alto Panorama integration in JupiterOne, navigate to the Integrations tab in JupiterOne and select Palo Alto Panorama. Click New Instance to begin configuring your integration.
Creating an instance requires the following:
-
The Account Name used to identify the Palo Alto Panorama account in JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen theAccountNametoggle is enabled. -
Description to assist in identifying the integration instance, if desired.
-
Polling Interval that you feel is sufficient for your monitoring needs. You may leave this as
DISABLEDand manually execute the integration. -
Your Panorama Host — the hostname or IP address of your Panorama instance, without a scheme or path, for example
panorama.example.com. -
The Username and Password of the Panorama administrator you created.
-
Optionally, a CA Certificate in PEM format to trust a self-signed or internal-CA certificate, or enable Disable TLS Verification to skip certificate validation entirely (not recommended).
Click Create once all values are provided to finalize the integration.
Data sources
You can narrow what the integration collects from the instance's ingestion source settings. Fetch Device Groups underpins the others — device groups are the scope that address objects, address groups, and security rules are read from, and disabling it leaves those steps with only the shared-scope objects.
| Ingestion source | Data collected |
|---|---|
| Fetch Firewalls | Firewalls managed by Panorama, with model, PAN-OS and content versions, and HA state. |
| Fetch Device Groups | Device groups and the parent/child hierarchy between them. |
| Fetch Address Objects | Address objects in each device group and in the shared scope. |
| Fetch Address Groups | Static and dynamic address groups, and their static members. |
| Fetch Security Rules | Pre- and post-rulebase security policy rules in each device group and the shared scope. |
Next steps
Now that your integration instance has been configured, it will begin running on the polling interval you provided, populating data within JupiterOne. Continue on to our Instance management guide to learn more about working with and editing integration instances.
Additional resources
- Configure an Admin Role Profile
- Configure a Panorama Administrator Account
- Panorama > Admin Roles — reference for each XML API functional area
- Enabling API Access
- Get Started with the PAN-OS XML API
Endpoints
API endpoints that the integration makes requests to.
Show Endpoints (13)
GET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-groupGET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/addressGET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/address-groupGET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/post-rulebase/security/rulesGET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/pre-rulebase/security/rulesGET /api/?type=config&action=get&xpath=/config/shared/addressGET /api/?type=config&action=get&xpath=/config/shared/address-groupGET /api/?type=config&action=get&xpath=/config/shared/post-rulebase/security/rulesGET /api/?type=config&action=get&xpath=/config/shared/pre-rulebase/security/rulesGET /api/?type=op&cmd=<show><devices><all></all></devices></show>GET /api/?type=op&cmd=<show><dg-hierarchy></dg-hierarchy></show>GET /api/?type=op&cmd=<show><system><info></info></system></show>POST /api/?type=keygen
Documentation Links
Links to provider documentation relevant to setup and configuration.
Show Documentation Links (4)
- https://docs.paloaltonetworks.com/pan-os/11-1/pan-os-panorama-api/pan-os-xml-api-request-types
- https://docs.paloaltonetworks.com/pan-os/11-1/pan-os-panorama-api/pan-os-xml-api-use-cases/query-a-firewall-from-panorama-api
- https://pan.dev/panos/docs/tutorials/rulebase-to-csv/
- https://pan.dev/panos/docs/tutorials/working-with-address-groups/
Per-Step Breakdown
Detailed authorization requirements for each ingestion step.
Show all steps (4)
| Step | Endpoints |
|---|---|
| Fetch Address Groups | GET /api/?type=config&action=get&xpath=/config/shared/address-group, GET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/address-group |
| Fetch Address Objects | GET /api/?type=config&action=get&xpath=/config/shared/address, GET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/address |
| Fetch Firewalls | GET /api/?type=op&cmd=<show><devices><all></all></devices></show> |
| Fetch Security Rules | GET /api/?type=config&action=get&xpath=/config/shared/pre-rulebase/security/rules, GET /api/?type=config&action=get&xpath=/config/shared/post-rulebase/security/rules, GET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/pre-rulebase/security/rules, GET /api/?type=config&action=get&xpath=/config/devices/entry[@name='localhost.localdomain']/device-group/entry[@name='*']/post-rulebase/security/rules |
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | palo_alto_panorama_account | Account |
| AddressGroup | palo_alto_address_group | Group |
| AddressObject | palo_alto_address_object | NetworkEndpoint |
| DeviceGroup | palo_alto_device_group | Group |
| Firewall | palo_alto_firewall | Device, Host |
| SecurityRule | palo_alto_security_rule | Rule |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
palo_alto_address_group | HAS | palo_alto_address_object |
palo_alto_device_group | HAS | palo_alto_firewall |
palo_alto_device_group | HAS | palo_alto_device_group |
palo_alto_device_group | HAS | palo_alto_address_object |
palo_alto_device_group | HAS | palo_alto_address_group |
palo_alto_device_group | HAS | palo_alto_security_rule |
palo_alto_panorama_account | MANAGES | palo_alto_firewall |
palo_alto_panorama_account | HAS | palo_alto_device_group |
palo_alto_panorama_account | HAS | palo_alto_address_object |
palo_alto_panorama_account | HAS | palo_alto_address_group |
palo_alto_panorama_account | HAS | palo_alto_security_rule |
Palo Alto Address Group
palo_alto_address_group inherits from Group
| Property | Type | Description | Specifications |
|---|---|---|---|
deviceGroupName | string | Device group the group belongs to ('shared' for shared groups) | |
dynamicFilter | string | Tag match filter expression for a dynamic group | |
groupType | string | Whether the group is static or dynamic | |
members | array of strings | Names of the static member address objects | |
scope | string | Scope the group is defined in ('shared' or a device group name) |
Palo Alto Address Object
palo_alto_address_object inherits from NetworkEndpoint
| Property | Type | Description | Specifications |
|---|---|---|---|
addressType | string | Type of the address value (ip-netmask, ip-range, ip-wildcard, or fqdn) | |
deviceGroupName | string | Device group the object belongs to ('shared' for shared objects) | |
scope | string | Scope the object is defined in ('shared' or a device group name) | |
value | string | The address value (IP/netmask, range, wildcard, or FQDN) |
Palo Alto Device Group
palo_alto_device_group inherits from Group
| Property | Type | Description | Specifications |
|---|---|---|---|
parentDeviceGroup | string | null | Name of the parent device group in the Panorama hierarchy, or null for top-level groups |
Palo Alto Firewall
palo_alto_firewall inherits from Device, Host
| Property | Type | Description | Specifications |
|---|---|---|---|
appVersion | string | Application content database version installed | |
avVersion | string | Antivirus content version installed | |
family | string | Hardware family of the firewall | |
haPeerSerial | string | Serial number of the HA peer firewall, if any | |
haState | string | High-availability state of the firewall (e.g. active) | |
ipAddress | string | Management IP address of the firewall | |
isConnected | boolean | Whether the firewall is currently connected to Panorama | |
isMultiVsys | boolean | Whether the firewall has multiple virtual systems | |
macAddress | string | MAC address of the firewall | |
operationalMode | string | Operational mode of the firewall (e.g. normal) | |
swVersion | string | PAN-OS software version of the firewall | |
threatVersion | string | Threat content version installed | |
uptime | string | System uptime reported by the firewall | |
wildfireVersion | string | WildFire content version installed |
Palo Alto Panorama Account
palo_alto_panorama_account inherits from Account
| Property | Type | Description | Specifications |
|---|---|---|---|
family | string | Hardware family of the Panorama instance | |
model | string | Hardware (or VM) model of the Panorama instance | |
serial | string | Serial number of the Panorama instance | |
uptime | string | System uptime reported by the Panorama instance | |
version | string | PAN-OS software version running on the Panorama instance |
Palo Alto Security Rule
palo_alto_security_rule inherits from Rule
| Property | Type | Description | Specifications |
|---|---|---|---|
action * | string | Action taken on matching traffic (e.g. allow, deny, drop) | |
application | array of strings | Matched applications | |
destination | array of strings | Destination address objects/groups | |
deviceGroupName | string | Device group the rule belongs to | |
from | array of strings | Source zones | |
groupTag | string | Group tag assigned to the rule | |
isDisabled | boolean | Whether the rule is disabled | |
isLogEnd | boolean | Whether to log at session end | |
isLogStart | boolean | Whether to log at session start | |
isNegateDestination | boolean | Whether the destination match is negated | |
isNegateSource | boolean | Whether the source match is negated | |
logSetting | string | Name of the log forwarding profile applied | |
rulebase | string | Rulebase the rule belongs to (pre or post) | |
ruleType | string | Rule type (universal, intrazone, or interzone) | |
schedule | string | Name of the schedule the rule is bound to | |
service | array of strings | Matched services/ports | |
source | array of strings | Source address objects/groups | |
sourceUser | array of strings | Source users or user groups matched | |
to | array of strings | Destination zones | |
urlCategories | array of strings | URL categories matched by the rule | |
uuid | string | Panorama-assigned UUID of the rule |