TTechclick All lessons
Zscaler ยท Batch 11 ยท Lesson 9L2 / DEEP DIVE

ZPA Architecture Deep Dive โ€” Why It Replaces VPN

ZPA isn't a faster VPN โ€” it's a different idea entirely. Inside the four components (Z-App, ZPA Cloud, App Connector, Service Edge), the double inside-out tunnel, and why your private apps stop having public IPs at all.

๐Ÿ“… 23 May 2026 ยท โฑ 14 min read ยท ๐Ÿท 10-question assessment included
๐ŸŽฏ By the end of this lesson, you'll be able to

Why this lesson matters โ€” the brand-new mental model

The first 8 lessons of this batch lived in one world: egress. A user opens Chrome, hits the internet, ZIA intercepts that outbound request and applies policy. ZIA's whole job is forward-proxying โ€” outbound web traffic, decrypted, inspected, allowed or blocked. Everything you've learned so far is filtered through that lens.

From this lesson onward, flip that mental model 180 degrees. ZPA isn't about a user reaching the internet โ€” it's about a user reaching your internal application that lives in your data centre, your AWS VPC, your Azure subscription, your colo. The traffic direction is inverted. The protocol is different. The threats are different. The architecture is wildly different.

And here's the punchline: ZPA does this without ever giving the user a network. A VPN drops the user onto a flat subnet inside your perimeter โ€” the user can now ping every machine, port-scan every service, and laterally move if the laptop gets compromised. ZPA gives the user exactly one app, brokered through a cloud the user never sees, with the app itself sitting behind zero open inbound ports. That's the Zero Trust pitch in three sentences โ€” and from a CISO's perspective, it's the whole reason ZPA exists.

ZPA vs VPN โ€” the mental flip

Most engineers approach ZPA with a "it's a cloud VPN" instinct. Stop that. The two technologies share zero architectural DNA. Here's the side-by-side you should be able to recite cold in any interview:

DimensionTraditional VPNZPA
Connection directionUser โ†’ VPN concentrator (inbound to the concentrator's public IP). After auth, traffic flows inside-out from the user's tunnel.Double inside-out. User's Z-App connects outbound to ZPA Cloud. App Connector connects outbound to ZPA Cloud. ZPA Cloud brokers the two. No one ever accepts inbound.
What the user sees on the networkFull IP subnet (usually a /24 or larger). User can ping the file server, the printer, the build agent โ€” even if policy only meant to give them Jira.One app at a time. User's OS resolves jira-internal.acme.com to a synthetic CGNAT IP inside Z-App's tunnel. Nothing else on the corporate network is reachable, visible, or pingable.
What you defendThe concentrator (Pulse, Cisco AnyConnect, Global Protect, FortiGate SSL-VPN). One CVE in that appliance = total network breach. Patching it is a planned downtime event.The policy engine inside ZPA Cloud โ€” Zscaler-operated, multi-tenant, patched continuously by Zscaler. You don't run a concentrator.
Public attack surface for private appsConcentrator listens on TCP/443 publicly. App servers usually also exposed via NAT/DNAT to be reachable.Zero. The App Connector dials out only. The app server has no public IP and no inbound firewall rules at all.
Lateral movement after a pwned laptopAttacker pivots through the VPN tunnel into a full network. Famous breaches (Solarwinds vendor pivot, every ransomware run) start here.Attacker can reach only the apps that user was entitled to โ€” and even then, only on the specific TCP/UDP ports defined in the segment.
Scale modelPer-concentrator user cap (often 5kโ€“20k tunnels). Hard limit; needs HW refresh to grow.Zscaler-operated elastic cloud. Pay per user, scale to 200k seats without an architecture change.
Failure modesConcentrator down = entire workforce locked out. Tunnel CPU saturated = packet loss.Multiple Service Edges per region (anycast). App Connector groups auto-failover. Region failure routes to next-nearest.

If a Lesson-9 student remembers nothing else, remember this: VPN = network. ZPA = applications. Once that one substitution clicks, every other ZPA design decision in this batch becomes obvious.

The four ZPA components โ€” what each one is, where it lives, what ports it opens

ZPA has exactly four moving parts. Every diagram, every troubleshooting flow, every interview question maps back to these four. Memorise them:

1. Z-App (Zscaler Client Connector for ZPA)

The agent on the user's laptop, desktop, phone, or tablet. Same binary as the ZIA Client Connector โ€” one install, both ZIA and ZPA "service profiles" available. When ZPA is enabled in the user's profile, the agent loads a list of application segments (FQDNs and IP ranges of internal apps) the user is entitled to. It intercepts DNS queries that match those segments, returns a synthetic IP from 100.64.0.0/16 (the default ZPA synthetic-IP range โ€” configurable; RFC 6598 CGNAT space is the broader /10, Zscaler uses a slice โ€” guaranteed not to clash with any RFC1918 the user is on), and opens a TLS tunnel to the nearest healthy Service Edge. Supported on Windows, macOS, Linux, iOS, Android, ChromeOS. Z-App listens on no ports โ€” purely outbound TCP/443 (Z-Tunnel 2.0 over QUIC/443 in modern builds, fallback DTLS/HTTPS). TCP/9000 is the App Connector โ†” ZEN control channel, NOT Z-App. Don't conflate the two โ€” it's the #1 ZPA architecture interview trap.

2. ZPA Cloud (the broker / policy engine)

The Zscaler-operated control plane. This is where your tenant lives โ€” your application segments, your access policy, your user/group bindings, your IdP integration (SAML/SCIM with Okta, Entra ID, Ping, Google). Every connection from a Z-App and from an App Connector terminates here, gets authenticated, gets policy-checked, then gets stitched to the other side. ZPA Cloud doesn't run inside your data centre or your cloud โ€” it runs in Zscaler's. You administer it via https://admin.private.zscaler.com (or the cloud variant your tenant is on).

3. App Connector

A lightweight Linux VM (RHEL/CentOS/Ubuntu) that you deploy next to your internal apps โ€” one VM in each "place" you have apps. In AWS, that's one App Connector per VPC (or per region, depending on routing). In your data centre, one in each DC. Minimum spec: 2 vCPU, 4 GB RAM, 16 GB disk โ€” sized for ~1 Gbps throughput; scale horizontally for more. It opens zero inbound ports. It registers to ZPA Cloud over outbound TCP/443 + TCP/9000 to Zen IP ranges, then sits and waits for ZPA Cloud to push it work. When a user's session needs to reach the app this connector serves, the connector dials the app over the local network and stitches the bytes into the tunnel.

4. Service Edge

The regional broker โ€” the actual TCP termination point for the double tunnel. By default these run inside Zscaler's data centres (called Public Service Edges, hosted across ~150+ Zscaler data centres worldwide, anycast-routed). The ZIA Service Edge fleet and ZPA Public Service Edge fleet are architecturally separate broker pools, even though they share PoPs. For regulated industries that can't have user traffic touching Zscaler infrastructure, the same broker software runs as a Private Service Edge inside your DC or cloud โ€” Zscaler manages the code, you provide the compute. Microtenants are a logical isolation overlay on the Public cloud for MSPs and B2B portals serving multiple customer organisations from one ZPA tenant.

The whole architecture on one page

ZPA architecture โ€” hub-and-spoke, no inbound ports anywhere
ZPA architecture map Three user devices on the left connect outbound to a central ZPA Cloud broker. Three App Connectors on the right, each next to an app cluster, also connect outbound to the same ZPA Cloud. All arrows point inward. No inbound ports anywhere. ZPA CLOUD Broker ยท Policy Engine SAML/SCIM ยท App Segments admin.private.zscaler.com no inbound โ€” only accepts established TLS Z-App on Laptop Roaming engineer โ†’ TCP/443 outbound Z-App on iPad Sales rep on hotel WiFi โ†’ TCP/443 outbound Z-App on Contractor Limited scope โ†’ TCP/443 outbound App Connector (AWS) Jira, Confluence, Bitbucket โ†’ next to apps in VPC โ†’ TCP/443 outbound App Connector (DC) SAP, Oracle ERP, file shares โ†’ on-prem Mumbai DC โ†’ TCP/443 outbound App Connector (Azure) Power BI Gateway, AD apps โ†’ central India region โ†’ TCP/443 outbound USERS (anywhere) APPS (anywhere) BROKER (Zscaler-operated) โ›” NO INBOUND PORTS ยท NO PUBLIC IPs ON APPS ยท NO VPN CONCENTRATOR

Six outbound arrows, all pointing inward to ZPA Cloud. Nothing in this diagram ever accepts a new connection from outside. The user's laptop initiates; the App Connector initiates. ZPA Cloud is the only thing that accepts, and it accepts only TLS sessions that present a valid Zscaler-enrolled certificate. Your private apps don't need public IPs โ€” they don't even need inbound firewall rules.

The famous "double inside-out" tunnel

This is the architectural idea that makes ZPA different from every VPN that came before it. Here's the mechanism in plain English:

  1. Z-App side โ€” the agent on the user's laptop dials TCP/443 outbound to the nearest healthy Service Edge. The Service Edge sees a new TLS session, validates the cert (issued by ZPA during user enrollment), authenticates the user against the bound IdP, and pulls down the user's policy bundle. The Z-App's tunnel is now "up" โ€” but it's just sitting there, holding the TLS session open, waiting for the user to actually click something.
  2. App Connector side โ€” at the same time (continuously, since the connector booted), the App Connector dials TCP/443 outbound to the nearest healthy Service Edge. Same TLS auth, same enrollment cert. The connector tells the Service Edge "I can serve these apps: jira-internal.acme.com, confluence-acme.com, 10.40.0.0/16:1433". The connector's tunnel is now "up" too โ€” also just sitting there.
  3. User clicks the app โ€” say the user clicks a Jira link. The Z-App's DNS interceptor catches the lookup for jira-internal.acme.com, returns a synthetic CGNAT IP, and the browser opens a TCP connection to that IP. The Z-App tunnels the SYN to ZPA Cloud.
  4. ZPA Cloud brokers โ€” ZPA Cloud sees the inbound stream on the Z-App's side, looks up the user's access policy for this app segment, allow-list checks, posture-checks, and if allowed, finds a healthy App Connector that has advertised this app. It pushes a message down the connector's already-up tunnel saying "stream from user X coming, please dial jira-internal.acme.com:443 on your local network".
  5. App Connector dials the app โ€” the connector does a normal local TCP connect to the Jira server (which is sitting in the same VPC or DC, completely unaware of ZPA's existence). The Jira server sees a connection from the connector's IP โ€” just like any other internal user.
  6. Bytes flow โ€” ZPA Cloud sews the user's stream and the connector's stream together. Bytes flow bidirectionally. Both legs are TLS-encrypted. Neither end ever knows the other's real IP.
ZPA tunnel flow โ€” user โ†’ Jira, end to end
ZPA tunnel flow seven steps Seven numbered steps: user clicks Jira link, Z-App intercepts DNS, posts to ZPA Cloud, ZPA Cloud authenticates and policy-checks, finds App Connector, App Connector dials internal Jira, bidirectional bytes flow. 1 User clicks jira-internal.acme.com browser โ†’ OS DNS lookup 2 Z-App matches FQDN to app segment returns synthetic IP from 100.64.0.0/10 3 Z-App tunnels SYN to ZPA Cloud via Service Edge over the already-up Z-App โ†” Service Edge TLS 4 ZPA Cloud โ€” auth + policy + posture user in group "engineers-acme" ยท app entitlement โœ“ ยท ZCC posture โœ“ picks healthy App Connector advertising this segment 5 ZPA Cloud pushes "open stream" down App Connector tunnel over the already-up Connector โ†” Service Edge TLS 6 App Connector dials local TCP to Jira:443 7 Bytes flow โ‡„ stitched bidirectional Both tunnels were already open before the user clicked. ZPA Cloud just brokers the meeting.

Seven steps. Notice the user's browser never knew there was a tunnel โ€” DNS just returned an IP and TCP "just worked". The Jira server never knew the request came from outside the corporate network โ€” it saw a connection from the App Connector IP, like any other internal user. ZPA Cloud is the silent matchmaker.

ZPA App Connector Simulator Branch Connector Lab Trace a User Flow

Z-Tunnel 1.0 vs Z-Tunnel 2.0

Z-Tunnel 1.0Z-Tunnel 2.0
TransportTCP/443 per flowQUIC/443 (DTLS/443 fallback) โ€” multiplexed
SessionsOne tunnel per app sessionSingle tunnel, all sessions multiplexed
UDP app supportNoYes (DNS, Citrix UDP, RDP UDP)
Default sinceโ€”ZCC 4.0+ (~2022)

Any deployment after 2022 should be on Z-Tunnel 2.0. Performance interview questions about ZPA latency almost always hinge on this.

Why the app is "dark" to the internet

This is the security implication that sells ZPA to CISOs. Walk through what a port-scan from the public internet sees against your private Jira after ZPA migration:

That's "dark application" โ€” it doesn't show up in Shodan, doesn't get hit by automated CVE scanners, doesn't make it into mass-exploitation campaigns. The only way in is through ZPA, which means through the policy engine, which means with proper auth + posture + entitlement. The 2024-style "perimeter VPN concentrator zero-day โ†’ ransomware in 6 hours" attack chain has nothing to grab onto.

Public vs Private vs Microtenant Service Edge โ€” when to use which

Public Service Edge โ€” the default

Hosted across ~150+ Zscaler data centres worldwide (ZIA and ZPA fleets are separate broker pools, even though they share PoPs), anycast-routed so Z-App and App Connector both reach the nearest healthy one automatically. Zero compute cost to the customer, Zscaler handles all capacity planning. 95% of deployments only ever use Public Service Edges. Pick this unless you have a specific reason not to.

Private Service Edge โ€” for strict data-residency or regulated industries

Same broker software, but the VM runs in your data centre or cloud account. Use cases: defence contractors who can't have user-to-app traffic touching commercial cloud infrastructure, financial institutions in jurisdictions where regulator says "all session control must stay in-country", healthcare orgs with HIPAA constraints on data flow. The control plane (your tenant config, your policy) still lives in ZPA Cloud โ€” only the data path stays in your premises. Sizing: same as App Connector but multiply by expected concurrent session count. HA: pair them up, ZPA Cloud round-robins.

Microtenant โ€” for MSPs and B2B portals

A Microtenant is a logical sub-tenant inside your main ZPA tenant. Use case: you're an MSP serving 30 customer organisations, each with their own users and their own apps, but you don't want to spin up 30 separate ZPA tenants (cost + admin overhead). Microtenants let one ZPA tenant carve into 30 isolated configuration scopes โ€” each customer sees only their users, their apps, their admins. Same Public Service Edges, just policy-isolated. Also useful for B2B portals where you let partner companies' employees reach a slice of your apps.

App Connector deeper โ€” the operational details L2/L3 engineers must know

The App Connector is the part you'll actually touch most often. Operationally, here's what matters:

What it is technically

A 64-bit Linux VM image. Zscaler ships it as an OVA (VMware), AMI (AWS Marketplace), VHD (Azure Marketplace), and as a YUM/APT package for RHEL/CentOS/Ubuntu if you want to bring your own VM. Minimum spec: 2 vCPU, 4 GB RAM, 16 GB disk. Sized for roughly 1 Gbps and a few hundred concurrent sessions per connector. Scale horizontally โ€” never vertically โ€” past that.

How it registers

You generate a provisioning key in the ZPA admin portal (Administration โ†’ App Connectors โ†’ Provisioning Keys โ†’ Add). The key is one-time-use, bound to a Connector Group (logical grouping per location/cloud/DC), and has an expiry. You paste the key into the connector VM's bootstrap (cloud-init userdata or interactive prompt on first SSH). The connector dials out to ZPA Cloud, presents the key, gets back a per-connector certificate, and from then on uses the cert for all subsequent registrations.

The HA model

Connectors live in Connector Groups. A group is the unit of HA โ€” when ZPA Cloud needs to dial an app served by this group, it picks any healthy connector in the group (round-robin with health weighting). Always deploy โ‰ฅ2 connectors per group in each region. One connector per region is a SPOF โ€” if that VM patches, reboots, or the underlying hypervisor host fails, every app served by that group goes dark for the user. Two connectors with overlapping segment advertisements = zero-touch failover.

Outbound TLS to Zen โ€” the only ports it opens

The connector needs outbound TCP/443 and TCP/9000 to Zscaler's Zen IP ranges. The CIDR list is published at config.zscaler.com/<cloud>.net/cenr/json โ€” updates monthly + ad-hoc. Subscribe to the trust portal feed for change notifications and set up a cron to pull the JSON and update your egress firewall. It does not need any inbound rule. It does not need outbound to the open internet โ€” only to the Zen ranges. If your egress firewall is strict, allow-list those ranges; don't punch a hole for "all outbound 443".

๐Ÿ’กPro Tips
โš Common Mistakes โ€” the 7 that bite every ZPA rollout
โœ“Verify โ€” how to know each piece is actually working

Real-world scenario โ€” Acme decommissions Pulse VPN, gives 200 contractors per-app access

Acme just acquired a smaller company. The acquired entity has its own Jira and Confluence (call them jira-acq.internal and confluence-acq.internal), hosted in the acquired entity's AWS account, which is now being absorbed into Acme's master payer account. The acquired company also has 200 contractors who need ongoing access to only these two apps โ€” nothing else. They should not be able to see Acme corporate file shares, Acme HR systems, Acme build infrastructure, or anything else.

The VPN-era approach: stand up VPN accounts for the 200 contractors on Acme's Pulse concentrator, drop them onto a "restricted" VLAN, write firewall ACLs from that VLAN allowing TCP/443 to the two specific Jira/Confluence IPs and denying everything else, hope nobody fat-fingers the ACL, hope nobody bypasses the ACL by routing trickery, document the ACL in the change-management system, schedule a quarterly ACL review. Realistic timeline: 6โ€“10 weeks involving the network team, the security team, the access-management team, and a change advisory board.

The ZPA approach:

  1. Deploy two App Connectors in the acquired entity's AWS VPC (one per AZ for HA). 30 minutes including AWS Marketplace install and provisioning key paste.
  2. Create two app segments: jira-acq.internal:443 + confluence-acq.internal:443. Attach both to the new Connector Group. 5 minutes.
  3. Create an IdP group in Acme's Entra ID called acme-acquired-contractors. Sync via SCIM to ZPA (automatic, runs every 40 min). 10 minutes.
  4. Write one access policy: "Group acme-acquired-contractors โ†’ allow โ†’ app segments {jira-acq, confluence-acq}". 5 minutes.
  5. Enrol the 200 contractors via Z-App OnePass (email-based one-click enrollment). Day 1: 50 users enrolled themselves. Week 1: all 200.
  6. Run "Trace a User" against 3โ€“5 contractors as a smoke test. All pass.
  7. Decommission the contractor VPN accounts. Day 2.

Total elapsed time: 1 week, mostly waiting for contractors to click the enrollment email. Total infra surface added to Acme's perimeter: zero. The acquired entity's Jira and Confluence get no public IPs, no firewall rule changes, no NAT entries. The contractors can reach exactly two apps and nothing else โ€” not because of an ACL that has to be maintained, but because that's all their entitlement lets ZPA Cloud broker. If a contractor laptop gets pwned tomorrow, the attacker reaches Jira + Confluence and dies there โ€” no lateral movement possible because there's no network to move in.

This is the Acme story repeated at thousands of orgs going through the same migration. The economics โ€” and the security improvement โ€” are why VPN concentrator vendors are losing the segment one customer at a time.

Build the Acme scenario in lab Trace contractor โ†’ Jira flow

๐Ÿ“Œ Quick reference โ€” ZPA architecture cheat-sheet

โ–ถ QUICK LAB ยท ~15 MIN

Trace a ZPA flow:

  1. From a Z-App-enrolled laptop, attempt to reach app.internal.lan (a defined App Segment). Open ZCC โ†’ Diagnostics โ†’ see Z-Tunnel state.
  2. In ZPA Admin โ†’ Analytics โ†’ Diagnostics โ†’ enter the user + app. See the connector chosen, broker selected, RTT timings.
  3. Disable your local App Connector. Reload the app in browser. Confirm failover happens โ€” different connector picked.
  4. Run ipconfig /all or ip addr on the laptop โ€” find the 100.64.x.x synthetic IP for the segment.

๐Ÿ“ Check your understanding

10 scenario questions โ€” interview + ZDTA exam depth. Pick one answer per question. You need 70% (7 of 10) to mark this lesson complete on your profile.

Q1

A network architect insists ZPA is "just a cloud VPN with extra steps". Which single statement best refutes that?

Correct: (b). The architectural distinction is access model, not transport. VPN = network access (full subnet, lateral movement possible). ZPA = application access (one app at a time, no lateral movement). That's why ZPA is a Zero Trust private-access tool and VPN is not. (a) latency varies by geography. (c) VPN can also use TLS (SSL-VPN); transport is not the differentiator. (d) cost is a side effect, not the architectural truth.
Q2

You deploy an App Connector in a brand-new AWS VPC. It registers green in the ZPA admin portal โ€” "Active, last seen 30 s ago". But every user request to apps in that VPC times out. What's the most likely root cause?

Correct: (c). Classic mistake. The connector lives in a separate subnet/VLAN/security group, so it can reach Zscaler over outbound 443 (registration succeeds, status green), but it can't reach the app over the local network (intra-VPC routing not configured). Always validate from the connector itself with curl https://app.local before assigning user policy. (a) symptoms don't match a broken connector. (b) global outage extremely unlikely + would affect more than just app reach. (d) expired key would fail registration entirely.
Q3

A user complains they can't reach 10.40.0.50 (an internal Postgres server) via ZPA. The DBA bookmarked the raw IP because there's no DNS for that host. Z-App is connected, the App Connector is healthy, and the segment is entitled. What's the fix?

Correct: (b). Z-App's primary interception path is DNS โ€” the agent watches FQDN lookups and returns a synthetic CGNAT IP for matched segments. Raw IP access never triggers a DNS query, so the packet hits the user's local network and dies. App segments support IP ranges as well as FQDNs; add 10.40.0.50/32 (or the wider /24) to handle the bookmark case. (a)/(c) don't address the interception mechanism. (d) Service Edge type is irrelevant to this failure.
Q4

A defence contractor is buying ZPA but a regulator forbids user-session data from touching commercial-cloud broker infrastructure. Which Service Edge type fits?

Correct: (b). Private Service Edge is the standard answer for strict data-residency and regulated-industry use cases. The session-stitching happens on customer-operated VMs; only the tenant configuration lives in ZPA Cloud. (a) defaults to Zscaler-operated DCs โ€” the exact thing the regulator forbids. (c) Microtenants are logical isolation, still on Public Service Edges. (d) ZIA is forward-proxy egress โ€” different problem.
Q5

An MSP serves 25 customer organisations from a single ZPA tenant. Each customer must see only their own users, apps, and admins. What's the right design pattern?

Correct: (b). Microtenants exist exactly for the MSP / B2B portal model. One ZPA tenant carves into N isolated configuration scopes with their own admins, users, app segments, and policy โ€” no leakage across. (a) works but is wildly expensive at 25ร— and an admin nightmare. (c) Private Service Edges are for data-residency, not multi-org isolation. (d) "naming conventions" is not isolation โ€” one admin typo touches every customer.
Q6

You're sizing App Connectors for a 5 000-user APAC office that will route through ZPA to apps in the Mumbai DC. Each user averages 50 kbps and there are 1 200 concurrent app sessions in peak hour. What's the minimum-safe connector count for this Connector Group?

Correct: (b). Two standard-spec connectors comfortably handle this load (โ‰ˆ250 Mbps aggregate, 1 200 sessions split across two). The real driver isn't throughput here โ€” it's the HA rule: never one connector per region/group. Scale horizontally if load grows. (a) ZPA recommends scaling out, not up โ€” vertical scaling beyond the standard spec wastes capacity. (c) over-provisioned for this load. (d) connectors are customer-managed VMs; you size them.
Q7

A pen-tester runs nmap from the public internet against the App Connector VM's elastic IP (which is for outbound only). What's the expected result?

Correct: (b). The "double inside-out" design means the connector never listens for inbound. The 443/9000 conversation is initiated outbound to Zscaler. nmap -sS against the connector's public IP returns no open ports. (a) common misread โ€” those ports are outbound, not listening. (c) only if you (mistakenly) exposed SSH publicly; never do that. (d) connector firewalls usually drop ICMP too.
Q8

A user complains: "I can reach SAP via ZPA but the legacy NetBIOS file-share browser shows no servers." The app segment for the SMB file server is configured and entitled. Why does file browsing fail?

Correct: (b). ZPA is application-level access โ€” it brokers TCP/UDP streams to specific declared destinations. There's no network underneath, so broadcast/multicast/NetBIOS-discovery have nowhere to live. The fix is operational: tell users to map shares by explicit UNC path (\\fileserver.corp.local\share), which works. (a) entitlement is fine โ€” the user reaches the SAP segment. (c)/(d) don't address the protocol limitation.
Q9

A new ZPA tenant lit up over the weekend. Monday morning, App Connector status is "Pending" โ€” never goes green. journalctl -u zpa-connector on the VM shows TLS connect attempts timing out to Zscaler Zen IPs. What's the first thing to check?

Correct: (b). A TLS-stage timeout most often points to an SSL/DPI middlebox (corporate egress proxy re-signing the Zscaler cert) โ€” or, alternatively, an egress firewall silently dropping rather than rejecting. A flat egress block typically returns TCP RST or "Connection refused" fast, not a TLS-handshake timeout. Differentiate before you escalate: curl -v --connect-timeout 5 https://gateway.zscaler.net from the connector โ€” fast RST = port-blocked; slow timeout = silently dropped or DPI in path; cert mismatch = corporate SSL-intercept proxy. Then allow-list the published Zen CIDRs and bypass SSL-inspection for them. (a) wrong-key errors look like clear auth failures. (c) RAM doesn't cause connect/handshake timeouts. (d) Z-App health is unrelated to connector boot.
Q10

A CISO asks: "After we migrate from Pulse VPN to ZPA, what changes in our attack surface for the internal Jira server?" Best answer?

Correct: (b). The headline security win of ZPA is dark applications. The App Connector dials out to ZPA Cloud; the app never gets a public-facing surface. Mass-exploit and perimeter-CVE attack chains lose their entry point. The remaining attack surface narrows to the auth/posture/entitlement path through the policy engine โ€” a much smaller and Zscaler-operated surface than a customer-run VPN concentrator + DNATed Jira. (a) misses the architectural change entirely. (c) backwards โ€” exposure decreases. (d) transport choice isn't the win; access model is.
Lesson complete โ€” saved to your profile.
Almost! Review the sections above and try again โ€” you need 70% (7 of 10) to mark this lesson complete.

What's next?

Module 10 gets you hands-on โ€” deploying App Connectors in AWS/Azure/VMware, sizing for capacity, and adding Branch + Cloud Connectors for office and SaaS-side traffic anchoring.