Skip to main content

Onboarding a Tenant with RN-HP Architecture and Site-Based Licensing

This guide details the workflow for onboarding a tenant using the Remote Network High Performance (RN-HP) architecture and the Site-Based licensing model. This model differs from the Aggregate Bandwidth model by requiring the creation of Site objects and specific verification of license quantities.

Prerequisites​

Before beginning the automation workflow, you must ensure a Service Account is created and authenticated:

  1. Create a Service Account:

    • Navigate to Identity & Access Management in the management console.
    • Create a new Service Account and assign an application role (e.g., Superuser or Network Administrator).
    • Save the Client ID and Client Secret immediately, as the secret cannot be retrieved later.
    • Note the Tenant Service Group (TSG) ID.
  2. Obtain an Access Token:

    • Use the credentials to request an OAuth2 access token.
    • Endpoint: POST https://auth.apps.paloaltonetworks.com/oauth2/access_token.
    • cURL Example:
      curl -d "grant_type=client_credentials&scope=tsg_id:<tsg_id>" \
      -u <client_id>:<client_secret> \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -X POST [https://auth.apps.paloaltonetworks.com/oauth2/access_token](https://auth.apps.paloaltonetworks.com/oauth2/access_token)

Workflow Overview​

The Site-Based Licensing workflow generally follows these steps:

  1. Fetch Licensing Data: Verify license model and quantity.
  2. Determine Location: Select the primary onboarding region.
  3. Check Architecture: Verify RN-HP (v2) support.
  4. Create IKE Gateway: Configure the gateway.
  5. Create IPsec Tunnel: Configure the tunnel.
  6. Create Remote Network: Configure the network with the specific license type.
  7. Create Site: Bind the network to a site object.
  8. Push Configuration: Commit the changes.

Step 1: Fetch Licensing Data and Check Quantity​

Use this API to determine if site-based licensing is supported and if the tenant has sufficient purchased licenses for the desired bandwidth tier[cite: 38].

Endpoint: GET /v1/remote-networks-license-info

Logic to Implement:

  1. Check if operational_license is "site".
  2. Iterate through purchased_licenses and configured_licenses.
  3. Ensure purchased_licenses.count > configured_licenses.count for the desired license_type (e.g., FWAAS-SITE-1000Mbps).

Example Response:

{
"license_model": [
"agg-bandwidth",
"site"
],
"purchased_licenses": [
{
"license_type": "FWAAS-SITE-1000Mbps",
"count": 1
}
],
"configured_licenses": [
{
"license_type": "FWAAS-SITE-1000Mbps",
"count": 1
}
],
"operational_license": "site"
}

Step 2: Determine Location​

Retrieve a list of available Prisma Access locations to determine the region closest to your branch site for the primary tenant.

Endpoint: GET /deployment/list-locations/

Example Response:

[
{
"value": "us-west-1",
"display": "US West",
"continent": "North America",
"latitude": 37.38314,
"longitude": -121.98306,
"region": "us-west-1",
"aggregate_region": "us-southwest"
}
]

Step 3: Check RN Architecture Type​

Determine if the tenant supports RN-HP (v2) architecture and if a secondary Prisma Access region can be configured.

Endpoint: GET /v1/remote-networks-architecture

Logic to Implement:

  1. Check architecture_versions for "2" (RN-HP Architecture).
  2. If compute_redundancy_support is true, a secondary region can potentially be configured.
  3. To configure primary and secondary regions, both locations must have architecture_version: "v2" and be distinct regions .

Example Response:

{
"architecture_versions": {
"v1": {
"version": "v1",
"description": "Remote Network Classic Architecture",
"capabilities": {
"compute_redundancy_support": false,
"site_level_cir_support": false
}
},
"2": {
"version": "v2",
"description": "RN-HP Architecture",
"capabilities": {
"compute_redundancy_support": true,
"site_level_cir_support": true
}
}
},
"prisma_access_locations": [
{
"location_config_name": "canada-central",
"location_display_name": "Canada Central",
"compute_location_config_name": "canada-central-toronto",
"compute_location_display_name": "Canada Central (Toronto)",
"architecture_version": "v2"
}
]
}

Step 4: Create IKE Gateway​

Create the IKE Gateway to define authentication and encryption parameters.

Endpoint: POST /prisma-access-config/post-sse-config-v-1-ike-gateways

(Note: Refer to standard IKE Gateway payload structures for the body of this request).


Step 5: Create IPsec Tunnel​

Create the IPsec tunnel interface and associate it with the IKE Gateway.

Endpoint: POST /config-orch/post-v-1-remote-network

(Note: Refer to standard IPsec Tunnel payload structures for the body of this request).


Step 6: Create Remote Network​

Provision the Remote Network. This payload specifically requires the license_type field.

Endpoint: POST <Fawkes_URL>/api/sase/config/v1/remote-networks?type=device&folder=Remote%20Networks

Payload:

{
"folder": "Remote Networks",
"_type": "cloud",
"name": "sfo-branch15",
"license_type": "FWAAS-SITE-25Mbps",
"region": "us-west-2",
"ecmp_load_balancing": "enable",
"ecmp_tunnels": [
{
"name": "Tunnel_128161429253",
"ipsec_tunnel": "tun200_sample",
"protocol": {
"bgp": {
"peer_as": "65535",
"peer_ip_address": "3.3.3.3",
"enable": "true"
}
}
},
{
"name": "Tunnel_107692",
"ipsec_tunnel": "tun2",
"protocol": {
"bgp": {
"peer_as": "65536",
"peer_ip_address": "4.4.4.4",
"enable": "true"
}
}
}
],
"override_spn_name": "true"
}

Step 7: Creation of Site​

Create the Site object to bind the Remote Network to the physical location. [cite_start]The payload varies depending on the topology (Single WAN vs. A/B or Active/Active) [cite: 216, 259-261].

Endpoint: POST <Fawkes_URL>/api/sase/config/v1/sites?folder=Remote%20Networks

Payload Example 1: Single WAN Topology​

{
"id": "7abe0cf4-4353-47b5-8c89-a33dc01de4fc",
"name": "AUTO-CATALYST-XDevice",
"type": "third-party-branch",
"longitude": "39.75",
"latitude": "12.45",
"city": "unknown",
"country": "unknown",
"license_type": "FWAAS-SITE-25Mbps",
"members": [
{
"name": "AUTO-CATALYST-XDevice",
"remote_network": "AUTO-CATALYST-XDevice",
"mode": "active"
}
],
"qos": {
"profile": "Default Profile",
"cir": 2
}
}

Payload Example 2: Active/Backup (A/B) Topology​

{
"id": "b80eb6e4-bb49-42b6-a0d4-325ce162bee5",
"name": "AUTO-CATALYST-EDGE",
"folder": "Prisma Access",
"type": "third-party-branch",
"longitude": "166.072777",
"latitude": "-10.785043",
"city": "UNKNOWN",
"country": "Uganda",
"license_type": "FWAAS-SITE-25Mbps",
"members": [
{
"name": "AUTO-CATALYST-EDGE",
"remote_network": "AUTO-CATALYST-EDGE",
"mode": "active",
"id": "551a92b0-a870-4611-8f28-b65d227d9847"
},
{
"name": "AUTO-CATALYST-EDGE_backup",
"remote_network": "AUTO-CATALYST-EDGE_backup",
"mode": "backup",
"id": "c4f64516-5f22-4ba3-9bd9-919e9b2b26a7"
}
],
"qos": {
"profile": "Default Profile",
"cir": 2
}
}

Payload Example 3: Active/Active Topology​

Note: A/A on a single WAN link topology + HA Mode TLOC follows the same topology as A/A. This setup typically involves creating two separate Site objects, one for each device.

Site 1

{
"id": "7abe0cf4-4353-47b5-8c89-a33dc01de4fc",
"name": "AUTO-CATALYST-VDevice_1",
"type": "third-party-discovered",
"longitude": "166.072777",
"latitude": "-10.785043",
"city": "unknown",
"country": "unknown",
"license_type": "FWAAS-SITE-25Mbps",
"members": [
{
"name": "AUTO-CATALYST-VDevice_1",
"remote_network": "AUTO-CATALYST-VDevice_1",
"mode": "active",
"id": "4490496f-dbf4-4ec7-b3ca-d8a111d023db"
}
],
"qos": {
"profile": "Default Profile",
"cir": 2
}
}

Site 2

{
"id": "7abe0cf4-4353-47b5-8c89-a33dc01de4fc",
"name": "AUTO-CATALYST-VDevice_2",
"type": "third-party-discovered",
"longitude": "166.072777",
"latitude": "-10.785043",
"city": "unknown",
"country": "unknown",
"license_type": "FWAAS-SITE-25Mbps",
"members": [
{
"name": "AUTO-CATALYST-VDevice_2",
"remote_network": "AUTO-CATALYST-VDevice_2",
"mode": "active",
"id": "4490496f-dbf4-4ec7-b3ca-d8a111d023db"
}
],
"qos": {
"profile": "Default Profile",
"cir": 2
}
}

Step 8: Push Configuration​

Finally, push the candidate configuration to apply changes. Endpoint: POST /operations/push-candidate-config-versions