Azure
Focus
Focus
Prisma AIRS

Azure

Table of Contents


Azure

Prisma AIRS AI Runtime: Network intercept post deployment configurations in Panorama and Azure to protect VM workloads and Kubernetes clusters.
This guide provides step-by-step instructions to configure Panorama for securing VM workloads and Kubernetes clusters in Azure. The configurations include setting up interfaces, zones, NAT policies, virtual routers, and security policies.
Where Can I Use This?What Do I Need?
  • Secure VMs and Kubernetes Clusters in Panorama

Configure Panorama

Interfaces

  1. Navigate to Network > Interfaces.
  2. Set the Configuration Scope to your AI Runtime Security folder.
  3. Select Add Interface.
    • In the Ethernet tab, Configure a Layer 3 Interface for eth1/1(trust) and eth1/2(untrust):
      • Enter Interface Name (Create interfaces for both eth1/1(trust) and eth1/2(untrust) interfaces).
      • Select Layer3 Interface type.
      • In Logical Routers, select `lr-private` for eth1/1 and `lr-public` for eth1/2.
      • In Zone, select trust for eth1/1 and untrust for eth1/2.
      • Select DHCP Client type under IPV4 address.
      • Enable IPV4 for both eth1/1 and eth1/2 interfaces.
      • For eth1/2 (untrust) only, enable Automatically create default route pointing to default gateway provided by server.
      • Select Advanced Settings > Other Info.
      • Select a Management Profile switch HTTPS enabled under Administrative Management Services or create a new one:
      • Add.
    • Configure Network > Interfaces > Loopback to receive health checks from each load balancer:
      • Select the Logical Routers.
      • Set the trust Zone for private Logical Router and untrust Zone for the public Logical Router.
      • In the IPv4s section, enter the private IP address of the Internal Load Balancer (ILB).
        This IP address is in the output displayed after successfully deploying the `security_project` Terraform, as described in the Deploy AI Runtime Security: Network Intercept in Azure page.
      • Expand Advanced Settings Management Profile and add your allow-health-checks profile.
      • Add or Save.

Zones

  1. Configure Zones (Network → Zones).
  2. Select Add Zone.
  3. Enter a Name.
  4. Select Layer3 Interface type.
  5. In Interfaces, add $eth1 interface for trust zone and $eth2 interface for untrust zone.
  6. Select Save.

NAT

Configure the NAT policies for inbound and outbound traffic:
  1. Configure NAT policy for inbound traffic:
    1. Enter a Name indicating inbound traffic (for example, inbound-web).
    2. Original Packet:
      • In Source zones, click add and select untrust zone.
    3. Destination:
      • select untrust Zone.
      • Select any Interface.
      • In Addresses, click the add (+) icon and select the public Elastic Load Balancer (ELB) address.
    4. Choose any Service.
    5. Translated Packet:
      • In Translation, select Both.
      • In Source Address Translation, select the Dynamic IP and Port translation type.
      • In choice, select Interface Address.
      • In Interface, select eth1(ethernet1/1).
      • In Choice, select IP address.
      • Set the Static IP address as the Translation Type.
      • Select the destination Translated Address.
    6. Save.
  2. Configure NAT Policy for Outbound traffic:
    1. Enter a Name indicating outbound traffic (for example, outbound-internet).
    2. Original Packet:
      • In Source zones, click add and select trust zone.
      • In Addresses, click the add (+) icon and select the app-vnet and the Kubernetes pods CIDR you want to secure.
    3. Destination:
      • Select untrust destination zone.
      • Select any interface.
    4. Choose any Service.
    5. Translated Packet:
      • In Translation, select Source Address Only.
      • In Source Address Translation, select the Dynamic IP and Port translation type.
      • In choice, select Interface Address.
      • In Interface, select eth2(ethernet1/2).
      • In Choice, select IP address.
    6. Save.

Routers

Configure private and public virtual routers:
Azure health probe fails with a single virtual router (VR). Create multiple VRs to ensure probe success.
  1. Configure routing in Panorama (Network → Logical Routers → Router Settings:
  2. Enter a Name indicating private and public routers (for example, lr-private and lr-public).
  3. In Interfaces, select eth1(ethernet1/1) for lr-private route and eth2(ethernet1/2) for lr-public route.
    Refer the section on Interfaces to see how to configure the $eth1 and $eth2 interfaces.
  4. In Advanced Settings, select Edit to configure the IPV4 Static Routes for lr-private and lr-public.
    1. Select Add Static Route and add the following routes:
    2. Application routing:
      1. Enter a Name (for example, app-vnet).
      2. In Destination, enter the CIDR address of your application.
      3. In Next Hop:
        • For lr-private, in the IP Address field, enter the gateway IP address of the private interface (eth1/1).
          The gateway IP address is the first usable IP in the subnet's range (example, 192.168.1.1 for a /24 subnet). To find it, go to Azure Portal > Virtual Networks > [Your Virtual Network] > Subnets > [Private Subnet].
        • For lr-public, in the Next Router field, select `lr-public`.
      4. In Interface, select eth1(ethernet1/1) subnet for `lr-private` and None for `lr-public`.
    3. Default routing:
      1. Enter a Name.
      2. In Destination, enter 0.0.0.0/0.
      3. In Next Hop:
        • For lr-private, in the Next Router field, enter `lr-private`.
        • For lr-public, in the IP Address field, enter the gateway IP address of the `lr-public` interface (eth1/2).
      4. In Interface, choose None for `lr-private` and eth2(ethernet1/2) for `lr-public`.
      5. Add or Update.
    4. Azure Load Balancer’s health probe:
      1. Enter a Name.
      2. In Destination, enter the IP address of the Azure Load Balancer’s health probe (168.63.129.16/32).
      3. In Next Hop, select IP Address for vr-private and vr-public.
        • In IP Address, enter the gateway IP address of the corresponding interfaces.
      4. In Interface, select eth1(ethernet1/1) for lr-private and eth2(ethernet1/2) for lr-public.
    5. Select Add.
  5. Select Save.

Security Policy

  1. Add a security policy.
    Ensure the policy allows health checks from the Azure Load Balancer (LB) pool to the internal LB IP from Panorama. Check session IDs to ensure the firewall responds correctly on the designated interfaces.
  2. Select Commit → Commit and Push, to push the policy configurations to the Prisma AIRS AI Runtime: Network intercept.

Configurations to Secure VM Workloads

  1. Log in to the Panorama Web Interface
    Configure routes for vNet endpoints as explained in the Routers section above to ensure there is a route to your application.
  2. Select Commit and Push to Devices to push the policy configurations to your Prisma AIRS AI Runtime: Network intercept managed by Panorama.
  3. Create or update the NAT policy (refer to the NAT section above) to secure the VM workloads. Set the source address of the application you want to secure.

Configurations to Secure Kubernetes Clusters

  1. Configure static routes (refer to the routes section above) on the Logical Router for Kubernetes workloads.
  2. Follow the below configurations for pod and service subnets static routes for pod for the Kubernetes workloads:
    1. Pod Subnet and Service subnet for lr-private:
      Route TypeNameDestinationNext HopNext Hop ValueInterface
      Pod subnetpod_routePod IPV4 range CIDRIP AddressSubnet Gateway IP addresseth1(ethernet1/1)
      Service subnetservice_route172.16.0.0/24IP AddressSubnet Gateway IP addresseth1(ethernet1/1)
    2. Pod Subnet and Service subnet for lr-public:
      Route TypeNameDestinationNext HopNext Hop ValueInterface
      Pod subnetpod_routePod IPV4 range CIDRNext Routerlr-publicNone
      Service subnetservice_route172.16.0.0/24Next Routerlr-publicNone
  3. Refer to the NAT policy in the above section to secure the Kubernetes clusters and set the source address of the Kubernetes pods CIDR you want to secure.
  4. Select Commit and Push to Devices to push the policy configurations to your Prisma AIRS AI Runtime: Network intercept managed by Panorama.

Secure a Kubernetes Application with Helm

This section covers how to install and configure the Helm chart to secure your Kubernetes applications based on the protection level you selected during deployment.
The Helm chart installation process and directory structure vary depending on whether you selected VPC-level protection or namespace-level protection with traffic steering inspection. VPC-level protection secures all applications within the VPC, while namespace-level protection with traffic inspection provides granular control over specific application traffic flows and CIDR-based inspection rules.
Your deployment configuration determines the specific Helm chart structure and commands required for your environment.
  1. Navigate to the downloaded tar file and extract the contents:
    tar -xvzf <your-terraform-download.tar.gz>
  2. Navigate to the appropriate Helm directory based on your deployment configuration:
    • For VPC-level security:
      cd <unzipped-folder>/architecture/helm
    • For namespace-level security with traffic steering inspection:
      cd <unzipped-folder>/architecture/helm-<complete-app-name-path>
      Navigate to each Helm application folder. When you configure traffic steering inspection, separate Helm charts are generated for each protected namespace, allowing granular security policies per application.
  3. Install the Helm chart using the appropriate command:
    • For VPC-level security:
      helm install ai-runtime-security helm --namespace kube-system --values helm/values.yaml
    • For namespace-level security with traffic steering inspection:
      helm install ai-runtime-security helm-<complete-app-name-path> --namespace kube-system --values helm-<complete-app-name-path>/values.yaml
      Repeat this command for each namespace-specific Helm chart generated during the deployment process.
    This creates a container network interface (CNI), but doesn’t protect the container traffic until you annotate the application `yaml` or `namespace`.
    Enable "Bring your own Azure virtual network" to discover Kubernetes-related vnets:
    1. In Azure Portal, navigate to Kubernetes services → [Your Cluster]→ Settings→ Networking.
    2. Under Network configuration, select Azure CNI as the Network plugin, then enable Bring your own Azure virtual network.
  4. Verify the Helm installation:
    #List all Helm releases helm list -A #Ensure the output shows your installation with details such as: NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ai-runtime-security kube-system 1 2024-08-13 07:00 PDT deployed ai-runtime-security-0.1.0 11.2.2
  5. Check the pod status:
    kubectl get pods -A
    Verify that the result of the above command lists the pods with names similar to `pan-cni-*****`.
  6. Check the endpoint slices:
    kubectl get endpointslice -n kube-system #Confirm that the output shows an ILB IP address: NAME ADDRESSTYPE PORTS ENDPOINTS AGE my-endpointslice IPv4 80/TCP 10.2xx.0.1,10.2xx.0.2 12h
  7. Verify the Kubernetes resources were created properly:
    a. Check the service accounts kubectl get serviceaccounts -n kube-system | grep pan b. Check the secrets kubectl get secrets -n kube-system | grep pan c. Check the services: `kubectl get svc -n kube-system | grep pan`
    You should see resources like pan-cni-sa (service accounts), pan-plugin-user-secret (secrets), and pan-ngfw-svc (service).
  8. Annotate at the pod level in your application yaml so that the traffic from the pod is redirected to the Prisma AIRS AI Runtime: Network intercept for inspection.
    Annotate the pod using the below command:
    • For VPC-level security:
      kubectl annotate namespace <namespace-to-be-annotated> paloaltonetworks.com/firewall=pan-fw
    • For namespace-level security with traffic steering inspection:
      kubectl annotate pods --all paloaltonetworks.com/subnetfirewall=ns-secure/bypassfirewall
    Ensure every pod has this annotation to be moved to the ‘protected’ state across all cloud environments.
    Restart the existing application pods after applying Helm and annotating the pods for all changes to take effect. This enables the firewall to inspect the pod traffic and secure the containers.