T Techclick All lessons
Zscaler · Batch 11 · Lesson 11L3 / POLICY DESIGN

ZPA Policies — App Segmentation & Real Zero Trust Access

The 4-tier hierarchy that turns a ZPA tunnel into actual Zero Trust — App Segments, Segment Groups, Server Groups, Access Policies — plus the Posture, Timeout, and App Protection rules that close the device-and-session gaps VPN never could.

📅 23 May 2026 · ⏱ 14 min read · 🏷 10-question assessment included
🎯 By the end of this lesson, you'll be able to

1. Why this matters — policy is where Zero Trust actually happens

After Module 10 you have App Connectors humming — outbound TLS to ZPA Cloud, no inbound holes punched, the architectural promise of ZPA delivered. But right now, that humming tunnel is doing nothing useful. It's just capable of carrying traffic. Whether a specific user gets a specific app on a specific device at a specific time is decided entirely in policy.

This is the part where most VPN-to-ZPA migrations quietly fail. A team racks up the connectors, lights up the tunnel, sees "ZPA works", and then back-ports their old IPsec mindset on top: one big app segment for the whole DC, one Access Policy that says "if employee then allow". Six months later, an L1 contractor with a stolen laptop is reading the payroll database from a Goa beach Wi-Fi and security is wondering what changed. Nothing changed. The team built a fancier VPN, not Zero Trust.

Real Zero Trust at the ZPA layer is the intersection of four questions, evaluated on every single session:

Skip any one of those four and you've rebuilt a VPN with extra steps. Get all four right and you have something a legacy VPN literally cannot do: a payroll database that disallows itself when the laptop's disk encryption is turned off, regardless of who the user is.

2. The ZPA policy stack — top to bottom

ZPA has six policy objects you'll touch in production. They sit in a stack — some are inventory ("this app exists, here's how to reach it"), some are decision ("can this user reach it right now?"). Senior engineers carry the stack in their head; if you can recite it cold, half your troubleshooting is already done.

LayerWhat it isWhat it decidesLives at
Application SegmentThe addressable thing — FQDN, IP, port, protocol of one internal app (or one tight family of apps)"Is this DNS lookup / SYN even claimed by ZPA?"Configuration → Application Segments
Segment GroupA bag of App Segments grouped for policy purposes"Which container do my Access Policies act on?"Configuration → Segment Groups
Server GroupThe binding between App Segments and the Connector Groups that can serve them"Which connectors are eligible to deliver this app?"Configuration → Server Groups
Access PolicyWHO can reach WHAT under WHICH conditions, ordered top-downAllow / Block / Require-Approval per sessionPolicy → Access Policy
Timeout PolicyHow long a session stays valid before forced re-auth"Does the user need to re-prove identity now?"Policy → Timeout Policy
App Protection PolicyInline WAF for ZPA-published apps (mostly Browser Access)"Does this HTTP request contain SQLi / XSS / file-upload to block?"Policy → App Protection

Posture Profiles aren't a separate policy — they're a condition consumed by Access Policy. You define them once under Administration → Posture Profiles, then reference them inside Access Policy rules.

SVG #1 — the ZPA policy stack, layer by layer
ZPA policy stack layered architecture Six horizontal bands representing the ZPA policy stack from top to bottom: User identity from IdP, Access Policy, matched App Segment, Server Group, Connector Group, and Internal App. Arrows on the right show evaluation order. USER IDENTITY (IdP — Okta / Azure AD / Ping) user@acme.com · groups · employee-type · MFA recency ACCESS POLICY (top-down rule list) conditions: user · group · posture · country · time · device-type SEGMENT GROUP → APP SEGMENT (matched) jira.acme.internal:443 · part of seg-group "engineering-tools" SERVER GROUP (which connector clusters can serve) srv-grp "mumbai-dc" + "azure-india" (failover-ordered) CONNECTOR GROUP (the actual connector VMs) 2x VM in Mumbai DC, 2x VM in Azure Central India INTERNAL APP (zero inbound, sees only the connector) Jira at 10.40.12.5:443 in the Mumbai DC subnet evaluation order ↓ session delivered Skip any band and you're not running Zero Trust — you're running a smarter VPN.

Read the stack from top to bottom on every new session: ZPA Cloud takes the user's identity, walks the Access Policy list to find the first matching rule, resolves which App Segment was hit, looks up its Server Group, picks a healthy connector from the bound Connector Group, and stitches the byte stream. Six bands. Every one of them gets a vote.

3. Application Segment — the addressable thing

An Application Segment is the smallest unit ZPA cares about. It answers the question "what FQDN / IP / port combinations should ZPA intercept on the user's behalf?" — nothing more. It does not say who can access it (that's Access Policy), and it does not say where it lives (that's Server Group).

Field-by-field anatomy

Example: Jira production App Segment (UI fields collapsed into pseudo-config)
name:           app-jira-prod
description:    Atlassian Jira — engineering primary issue tracker
domains:
  - jira.acme.internal
  - jira-api.acme.internal
tcp_ports:      443
udp_ports:      (none)
bypass_type:    NEVER
health_check:   DEFAULT
icmp:           disabled
domain_type:    FQDN
segment_group:  engineering-tools
server_groups:
  - srv-grp-mumbai-dc          # primary
  - srv-grp-azure-india        # warm failover
!War story — the FQDN typo that took 4 hours to find

A team migrated 60 internal apps from VPN to ZPA over a weekend. Monday morning, 12 of them refused to load. Z-App showed the apps as "available" but every click returned a browser-side connection-reset. The team chased connectors, posture, IdP claims, even firewall on the DC side. Four hours in, someone noticed: the App Segment for Confluence had cofluence.acme.internal (typo) instead of confluence.acme.internal. The Z-App's DNS interceptor never claimed the real FQDN, so the browser fell through to public DNS, got NXDOMAIN (because the FQDN is internal-only), and returned the reset. Lesson: after creating any App Segment, paste the FQDN into the App Connector CLI and run a dig from the connector's vantage point — if the connector can't resolve it, neither will the user via ZPA.

4. Segment Groups & Server Groups — why they're separate

The most common L1 confusion in ZPA training is "Why do I need both? Just give me one bucket." The answer is: they're answering different questions, and conflating them is exactly what makes large ZPA deployments rot.

Segment Group — the policy container

Access Policy rules act on Segment Groups, not individual App Segments. So Segment Group is your unit of authorization scope. You define a Segment Group like engineering-tools and put Jira, Confluence, GitLab, Jenkins inside it. Then one Access Policy rule says "engineering IdP group → engineering-tools Segment Group: ALLOW" and all four apps are covered. Tomorrow you add Grafana to engineering-tools and the policy follows automatically.

Server Group — the delivery binding

Server Group binds App Segments to Connector Groups — it answers "which connector cluster can actually reach this app on the wire?" Jira in your Mumbai DC and the company SharePoint in Azure Central India have the same authorization audience (everyone) but need different connectors. So they sit in different Server Groups even if they share a Segment Group.

The 4-way mapping

ObjectAnswersUsed byTypical cardinality
App Segment"What's the address?"Segment Group + Server Group1 per app FQDN family
Segment Group"What's the policy bag?"Access Policy1 per business function (HR, ENG, FIN)
Server Group"Which connectors can deliver?"App Segment1 per network location (DC, cloud region)
Connector Group"Which actual VMs are the connectors?"Server Group1 per HA pair, per location

One App Segment can belong to multiple Server Groups (failover, multi-region active-active). Multiple App Segments share one Segment Group. And one Connector Group can back multiple Server Groups (a Mumbai connector pair can serve both srv-grp-mumbai-dc and srv-grp-mumbai-shared-services).

App Connector lab Troubleshooting sim Cloud Connector sim

5. Access Policy — the rule list that decides everything

Access Policy is the most-touched object in ZPA. It's a top-down ordered list, evaluated on every new session, first-match-wins. The structure of one rule:

ZPA Access Policy is default-deny. If no Allow rule matches, the session is denied. This has been the documented behavior since ZPA went GA — no exceptions, no "legacy contexts". Still recommended to author an explicit BLOCK * rule at the bottom of your policy for audit-trail clarity (the deny shows up in logs with a named rule). New segment? Doesn't match a specific allow rule above the deny? It gets blocked. Discovery happens via the diagnostic log, with a named rule, not a silent default-deny.

GUI path — create an Access Policy rule
Policy → Access Policy → + Add Rule
  Name:            eng-allow-jira
  Order:           50
  Action:          ALLOW
  Application:     Segment Group = engineering-tools
  Conditions:
    Group:         engineers-acme (Okta group)
    Posture:       posture-managed-laptop
    Device Type:   Windows, macOS
    Country:       India, United Arab Emirates
  Save
SVG #2 — per-session evaluation flow
ZPA per-session policy evaluation flow Eight numbered steps showing the per-session ZPA evaluation sequence from user click to tunnel-up: click app, FQDN match, Access Policy check, Posture check, Timeout check, Server Group select, Connector pick, tunnel. 1 User clicks jira.acme.internal Z-App intercepts DNS 2 FQDN → matched App Segment app-jira-prod · seg-grp engineering-tools 3 Access Policy walk (top → first match) rule 50: eng-allow-jira · ALLOW 4 Posture Profile evaluated disk-enc ✓ · AV ✓ · MDM ✓ 5 Timeout Policy check session age 38min < 12h limit ✓ 6 Server Group resolved srv-grp-mumbai-dc (primary) 7 Healthy Connector picked conn-mum-01 (load < conn-mum-02) 8 Bytes flow — tunnel up ⇄ stitched user ↔ connector ↔ app Fail at any step (3, 4, 5) → session denied → logged in Diagnostics with the failing rule name Posture re-evaluated continuously; Timeout enforced per-session.

Eight steps, evaluated in order on every new session. Steps 3, 4, and 5 are the three places Zero Trust earns its name — identity, device, and time. Any one returning false collapses the session and writes a row to the diagnostic log naming the exact rule that vetoed.

6. Posture Profiles — what you can prove about the device

A Posture Profile is a named bundle of device-side assertions. ZPA evaluates it via the Z-App agent (and at re-evaluation cadence, not just at login). A profile is an AND of all the checks inside it — one failing check fails the whole profile.

Common checks you'll see in an enterprise Posture Profile:

Tier your profiles. Don't write one giant posture-everything profile and attach it to every Access Policy — that's how mass denials happen. Build three tiers and reference them per app sensitivity:

!War story — the AV vendor rename that denied 4,000 users overnight

Posture Profile checked for a process named SymantecEndpointProtection.exe. Vendor pushed an update that renamed the binary to SES_Agent.exe. The check started returning false. Access Policies that relied on the profile started denying. By 9:30 AM, helpdesk had 600 open tickets and the CIO was on a war-room call. Lesson: never pin posture to a specific binary name. Pin to (a) registry key set by the vendor's MSI, (b) WMI service object, or (c) the EDR's own Posture API where available. Vendor renames are silent and frequent.

7. Timeout Policy — how long a session is trusted

Timeout Policy answers "when does ZPA force the user back through identity?" — either by re-evaluating SAML/SCIM with the IdP, or by triggering an MFA prompt depending on the IdP's own session config.

Coordinate Timeout Policy with the IdP's own session lifetime. If your Okta session is 24h but your ZPA re-auth timeout is 8h, the user gets re-prompted at 8h but Okta silently re-authenticates them without a visible prompt — which is what you usually want. If Okta's session is shorter than your ZPA timeout, the user gets bounced back to the Okta login mid-meeting. Either align them, or make the IdP the more permissive one.

8. App Protection Policy — ZPA as a WAF for published apps

!App Protection only works for Browser Access (BAF) apps

App Protection only works for Browser Access (BAF) apps — apps where ZPA terminates TLS and reverse-proxies (clientless flow). For native Z-App tunneled apps, ZPA never sees plaintext HTTP and cannot apply WAF rules. If you need WAF on a native-tunnel app, layer ZIA inspection on top.

App Protection is a less-talked-about ZPA feature: ZPA can act as an inline WAF for apps it publishes — particularly those published via Browser Access (clientless), where ZPA terminates TLS and proxies HTTP requests. Common rule families:

Always stage App Protection in detection-mode first for at least a week before flipping to block. Legitimate API patterns — especially the JSON bodies of internal automation tools — trip generic SQLi signatures more often than you'd think. The detection-mode logs become your tuning queue.

Browser Access (BAF) and Privileged Remote Access (PRA)

Browser Access (BAF) — clientless ZPA. User points their browser at mywebapp.private.zscaler.com (or a vanity FQDN), authenticates via IdP, and reaches the internal app — no Z-App needed. ZPA terminates TLS and reverse-proxies. Separately licensed. Use case: contractor laptops without Z-App, vendor portals, BYOD.

Privileged Remote Access (PRA) — browser-based SSH/RDP/VNC. Same clientless pattern, but for privileged protocols. ZPA renders the remote session in-browser (HTML5 canvas). Adds session recording, command filtering for SSH (block rm -rf, log every command), credential vault integration. Replaces CyberArk/BeyondTrust PSM for many use cases.

BAF vs PRA: BAF = web apps. PRA = privileged interactive sessions (SSH/RDP/VNC). Both are clientless. Both are interview staples post-2024.

IdP attribute & SAML claim format

SAML claim format: ZPA expects attributes in the standard SAML 2.0 namespace (e.g. http://schemas.xmlsoap.org/ws/2005/05/identity/claims/groups) or urn:oid: form. Multi-value attributes (user in multiple AD groups) are matched against the rule's group list using OR semantics by default. Standard misconfig: IdP sends groups as a single comma-separated string instead of multi-value — ZPA can't split it.

SCIM provisioning latency

SCIM sync latency: Default ~40 min from IdP (Okta/Entra) to ZPA. When a user is added to a group and reports "I still can't access" — first check is SCIM last-sync time under Administration → IdP Configuration → Last SCIM Sync. Force sync if urgent.

REQUIRE_APPROVAL action — default expiry

4-hour default expiry — if the admin doesn't approve in the approval queue within 4 hours, the user's request expires and the session is denied. Configurable per rule.

Posture refresh cadence

Posture refresh by Z-App: every 60-90 seconds. Broker decision is taken at session-start; mid-session posture changes don't tear down an existing session (only affect new sessions). This trades off "instant lockout when posture decays" against "no spurious mid-meeting drops if AV daemon hiccups for 30 seconds".

Verify — how to know it worked

9. Common Mistakes

!Six policy mistakes that quietly turn ZPA back into a VPN
  1. Wildcard App Segment that swallows the AD domain. An App Segment of *.acme.internal matches every internal service — including HR file shares, the AD print server, dev databases users shouldn't know exist. Use specific FQDN entries; reserve wildcards for tight subdomains like *.dev-tools.acme.internal with the matching Access Policy scoped narrowly.
  2. No explicit deny-all at the bottom of Access Policy. Without it, a new App Segment that doesn't match any existing rule can fall through to default-allow in some configurations. Always pin BLOCK * at the lowest priority and let discovery happen via deny logs.
  3. Posture pinned to a vendor product name string. See the SymantecEndpointProtection war story above. Pin to registry keys, MSI product GUIDs, or the EDR's own API — not the binary filename.
  4. Aggressive Timeout Policy with no idle exemption. 1-hour re-auth + 5-minute idle timeout sounds tight and secure. It also forces users to re-MFA in the middle of customer calls. Calibrate per app sensitivity, not "tight everywhere".
  5. Server Group bound to the wrong Connector Group. The connectors exist, they're healthy, the app is up — but the Server Group points at the dev-region Connector Group instead of prod. Users get told the app is "unreachable". This bug hides for weeks because everything looks right in the inventory.
  6. App Protection turned on in block-mode on day one. Legitimate JSON API requests with embedded quoted strings trip SQLi signatures. Staging in detection-mode for at least a week + tuning the false positives is non-negotiable.
  7. Treating "user is in the right IdP group" as sufficient. Group alone is half the answer. Without Posture and Country and Device-Type conditions, you've just rebuilt the VPN with a Zscaler logo.

10. Pro Tips

Three habits the senior ZPA engineers all share
  1. Name like a database schema, not like a Slack channel. app-jira-prod, seg-grp-engineering-tools, srv-grp-mumbai-dc, posture-managed-laptop. Six months from now, when you're triaging a 2 AM page, the object name should tell you what it is, where it lives, and what tier it serves — without opening it.
  2. Build a "discovery" Access Policy rule. One low-priority ALLOW rule scoped to a single IT-admin IdP group that matches every Segment Group. When a new app comes online and you're not sure which group should own it, IT-admin can hit it, the logs reveal who is actually using it, and you migrate the access into the proper rule. It beats guessing.
  3. Stage every Posture Profile change behind a "shadow" rule for 48h first. Clone the rule, change the action to "log-only" or scope it to a test IdP group of 5 people, watch the diagnostics for 2 days, then promote. Posture changes blast-radius the entire user base — treat them like a kernel patch.

11. Real-world scenario — the Acme × Beta M&A integration

Acme has just acquired Beta. Beta has 80 internal apps spread across an HR cluster, an engineering cluster, and a finance cluster — all behind the legacy Beta VPN. Acme's CIO wants Beta apps reachable via ZPA inside 30 days so the VPN concentrator can be turned off.

The mistake path (what a tired engineer actually does on Friday at 6 PM)

A junior engineer takes the brief and ships fast:

Deploys. Posts in #it-announcements. Goes home for the weekend. On Monday at 11 AM, an internal audit catches the problem: every Beta employee can now reach Beta's payroll database, Beta's source code repos, Beta's customer billing system — including a marketing intern who shouldn't see any of it. Because the IdP group acquired-beta-employees is the entire workforce, and the Access Policy doesn't differentiate between roles or apps. The wildcard *.beta-corp.internal swallows every internal FQDN.

The correct path (Tuesday's rebuild)

  1. Inventory. 80 internal apps → 80 distinct App Segments. Each named beta-app-<name>. No wildcards. Each has the right port/protocol restricted to actual app usage (not "all ports").
  2. Group by business function. Three Segment Groups: beta-hr-apps (12 segments), beta-eng-apps (48 segments), beta-fin-apps (20 segments).
  3. Bind to delivery. Two Server Groups: srv-grp-beta-mumbai-dc (primary, all 80 apps) and srv-grp-beta-azure-warm (warm failover for the 25 highest-tier apps). Each Server Group bound to its respective Connector Group (Mumbai DC vs Azure Central India).
  4. Access Policy keyed to IdP roles. Three rules, not one:
    • beta-hr-access: IdP group hr-acme OR hr-beta + Posture posture-managed-laptop → ALLOW beta-hr-apps
    • beta-eng-access: IdP group engineers-acme OR engineers-beta + Posture posture-managed-laptop + Country IN (India, UAE) → ALLOW beta-eng-apps
    • beta-fin-access: IdP group finance-acme OR finance-beta + Posture posture-crown-jewel + Device-Type managed-only + business-hours → ALLOW beta-fin-apps
  5. Bottom of policy: explicit BLOCK * default-deny.
  6. Timeout: 12h re-auth + 60min idle for HR/ENG; 4h re-auth + 15min idle for FIN.
  7. Verify with Diagnostics → Trace User for one user per role group before announcing. Confirm: marketing intern denied on payroll (rule BLOCK * fires), finance manager allowed on payroll between 9 AM and 7 PM only (rule beta-fin-access fires).

Lessons

Re-run the connector lab Trace-User troubleshooting sim Branch Connector sim

12. Quick reference card

ZPA Policies — cheat-sheet

QUICK LAB · ~15 MIN

Build a posture-aware Access Policy:

  1. In ZPA Admin → Posture Profiles: create a profile requiring disk encryption + AV running + OS >= Windows 11.
  2. Create an App Segment for your test app (say jira.internal).
  3. Create an Access Policy rule: Allow + Group=Engineering + Posture=above-profile. Save.
  4. Add explicit BLOCK * as the last rule for audit clarity.
  5. Test from a compliant laptop → access works. Disable BitLocker → reconnect → confirm denial in ZPA logs.

📝 Check your understanding

10 scenario questions — same depth you'll see in interviews + practice exams. Pick one answer per question. You need 70% (7 of 10) to mark this lesson complete on your profile.

Q 1

A junior engineer adds a new App Segment for a finance app and writes an Access Policy: "IF user in IdP group finance THEN ALLOW". The CISO asks why this isn't yet Zero Trust. Which is the BEST single answer?

Why a: Zero Trust at the ZPA layer is the four-way intersection — identity (WHO), specific app (WHAT), device + location (WHERE), and session age (WHEN). Group alone solves the WHO axis but leaves device posture, source country, and timeout unaddressed — effectively a smarter VPN. (b) confuses condition syntax; (c) REQUIRE_APPROVAL is a workflow knob, not a Zero Trust definition; (d) App Protection is a WAF feature for published apps, not the Zero Trust gate.
Q 2

You need to add Grafana to a set of engineering tools (Jira, Confluence, GitLab) that already share one Access Policy rule. Where do you add Grafana so the existing Access Policy automatically covers it?

Why c: Access Policy acts on Segment Groups. Adding the new App Segment into the existing Segment Group makes the existing policy rule cover it without any policy edit. (a) Connector Group is delivery, not authorization. (b) Cramming unrelated FQDNs into one App Segment breaks naming + diagnostics + the principle of one-segment-one-app. (d) Posture Profile asserts device state, not app identity.
Q 3

All four checks below would catch a non-corporate laptop trying to reach your crown-jewel app. Which is the MOST resilient choice for a Posture Profile condition?

Why d: A machine cert minted by your corporate CA is the strongest "this is a corporate-managed device" signal — it survives vendor renames, location changes, and group reshuffles. (a) Vendor rename = mass denials (see the Symantec war story). (b) Group membership is identity, not device posture — a contractor on a personal laptop can still be in the right group. (c) Defeated by VPN / remote work.
Q 4

A user reports "Jira shows as available in Z-App but the browser returns connection-reset". You open Diagnostics → Trace User and see "no App Segment matched FQDN jira.acme.internal". What is the FIRST thing to check?

Why b: "No App Segment matched the FQDN" is unambiguous — ZPA never claimed the DNS lookup, so it never reached identity, posture, or connector evaluation. The fix is at the segment level: typo, missing trailing domain, or wrong wildcard. (a) Group issues produce "access denied by rule X"; (c) posture failures produce "posture profile failed"; (d) connector outages produce "no healthy connector" — all different trace strings.
Q 5

You enable App Protection on a Browser-Access-published internal CRM the same day you go live. Within an hour, the legitimate API used by the marketing team's automation breaks with "request blocked". What should you have done?

Why c: Generic SQLi/XSS signatures trip on legitimate JSON bodies with embedded quoted strings. Detection-mode + at least a week of log review is the senior-engineer playbook for any new WAF deployment. (a) is false — ZPA App Protection is real. (b) defeats the purpose. (d) is false — App Protection is a ZPA feature.
Q 6

Your Timeout Policy sets re-authentication at 8h. Your Okta session is configured at 24h. A user re-auths to ZPA at 8h. What does the user experience?

Why b: Because the IdP session (24h) is longer than the ZPA re-auth window (8h), Okta still has a valid session when ZPA asks for a fresh assertion — it re-issues silently. The user sees nothing. This is the desired pattern. If you flipped the values (IdP 8h, ZPA 24h), the user would get the unwanted mid-meeting prompt described in (a).
Q 7

A new App Segment payroll-prod is added but no Access Policy rule explicitly names payroll-prod's Segment Group. You want the safe default: any user hitting it gets denied, with the deny logged for review. What's the single most important rule to have in the policy?

Why a: An explicit default-deny at the bottom of Access Policy ensures every new segment that lacks a matching allow rule fails closed, with the deny logged in Diagnostics so you can author the proper allow rule for the intended audience. While ZPA is default-deny natively, the named explicit rule gives audit-trail clarity. (b) is the opposite — full open. (c) makes timeout instant but doesn't prevent the session from being established. (d) is a hack that affects every app, not just the new one.
Q 8

Acme acquires Beta. A junior engineer creates one App Segment *.beta-corp.internal and one Access Policy "IF group acquired-beta-employees THEN ALLOW". An audit finds a marketing intern reading Beta's payroll database. Which TWO design choices BOTH contributed?

Why d: Two compounding mistakes — the wildcard FQDN turned 80 distinct apps into one indivisible blob, and the Access Policy used "acquired status" (essentially every Beta employee) as the authorization unit instead of role-based IdP groups. Fix is the rebuild from Section 11: 80 segments, 3 Segment Groups by function, role-based Access Policies. (a), (b), (c) describe operational issues that wouldn't produce the unauthorized-access symptom seen here.
Q 9

A user can reach jira.acme.internal from their Mumbai office over ZPA. They travel to Singapore and the same app fails with "access denied". Diagnostics → Trace User shows "Access Policy eng-allow-jira matched but condition Country IN (India, UAE) failed". What is the right NEXT step?

Why b: The country condition exists for a reason — the security owner of that app chose those countries. The right next step is to confirm intent before mutating the rule, then either expand the country list (with documented justification) or route the user through the sanctioned path. (a) silently undermines the security owner's decision. (c) bypasses Zero Trust entirely. (d) blast-radiuses every app, not just Jira.
Q 10

You need to tighten the Timeout Policy for payroll without tightening it for Jira. Both apps are reached over ZPA but sit in different Segment Groups (finance-apps vs engineering-tools). What's the correct way to model this?

Why c: Timeout Policy supports a global default plus per-Segment-Group overrides — the senior-engineer pattern is exactly this: set a sensible global, then ratchet down for sensitive Segment Groups. (a) creates the mid-meeting re-auth problem for low-risk apps. (b) doesn't scale and creates user-by-user drift. (d) is dangerous and inverts the security posture.
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 12 covers two tools that work alongside ZPA — Cloud Browser Isolation for risky web access on unmanaged devices, and Source IP Anchoring (SIPA) for SaaS allow-lists that demand a stable corporate IP.