Blog Zscaler

Recevez les dernières mises à jour du blog de Zscaler dans votre boîte de réception

Products & Solutions

Zscaler Adaptive Access Engine: Turning Logs into Logic

NISHANT KUMAR, ANEETH S
janvier 31, 2026 - 6 Min de lecture

There’s a quiet misconception in enterprise security that access is static. A one-time cryptographic handshake that holds until a token expires.

But entropy doesn’t stop at the login screen. 

Risk shifts mid-session. Devices drift. Credentials change in the background. Context moves and mutates like a living system.

In a hyper-connected environment, a user’s risk profile isn’t static. It oscillates. A user who looks “safe” at 9:00 AM may become a liability by 9:05 AM if their endpoint surfaces a new CVE or their identity provider flags a credential update.

Yet static access policies are blind to all of this. They only see a valid token. 

We Built an Engine for Entropy

When it comes to modern access, identity, device posture, and user behavior all generate rich signals — the kind that can sharpen decisions dramatically when they’re interpreted together.

Picture a user logging in at 9:00 AM. Their SAML/OIDC assertion is clean. Everything looks normal.

By 9:04 AM, though:

  • CrowdStrike may drop their ZTA score from 50 → 5
  • Microsoft Defender may detect a new CVE
  • Okta may register a password reset or MFA exhaustion pattern
  • ZIA may see anomalous download behavior
  • ZPA may observe access to a sensitive private app the user has never touched
  • UEBA may detect a deviation in behavioral baselines

Image

These signals need to be automatically propagated to your enforcement points. The opportunity is simple: orchestrate the signals, kill the noise, and wire every tool into one nervous system.

Without a central nervous system to aggregate them, you are forced to manage "one-off signal sharing" — building fragile bridges between your IdP and your SSE, or your EDR and your gateway.

This is why we built the Adaptive Access Engine—to take this unbounded entropy and turn it into deterministic, enforceable logic.

What is Adaptive Access Engine

We designed the Adaptive Access Engine as the real-time logic layer between your telemetry and your enforcement. It doesn’t replace your policies, it makes them kinetic. It ingests raw telemetry — what we call “Context Nuggets” — from Zscaler’s own data lakes and from partners like CrowdStrike, Microsoft, and Okta. Then it normalizes that input into a unified risk signal and pushes that context, instantly, to enforcement points like ZIA and ZPA.

The Mechanics of the "Nugget"

Let’s look at the architecture. The system relies on a few core concepts that change how you write policy.

1. Turning Signals into Context Nuggets

Context Nugget is the atomic unit of risk —clean, usable data that your policy engine understands immediately. It associates a subject (User or Device) with a specific data point. A Nugget includes:

  • Subject
    • userId, deviceId, originating source IDs (Zscaler, Okta, CrowdStrike, etc.)
  • Type
    • integer, boolean, enumeration, timestamp-based, or composite
  • Value
    • e.g., zta_score=8, credential_change=true, user_risk=High
  • LogTime / StartTime /
    • captured in the schema (ref: profile conclusion JSON)

This is documented across the Context Producer / Nugget Type Catalog sections of the PRDs you provided.

Key design constraints:

  • Nuggets must be non-fuzzy. No machine-learning probability fields.
  • Nuggets must be deterministic.
  • Nuggets must be traceable to a source system.
  • Nuggets must be evaluatable at high frequency without ambiguity.
  • Nuggets preserve state until TTL expiry or revocation — enabling mid-session enforcement

It answers specific questions:

  • Has a user downloaded more sensitive documents than their normal baseline?
  • Has an endpoint’s Defender risk level crossed a threshold?
  • Has a user performed five password resets in a week?
  • Did an Okta "Credential Change" event occur in the last 5 minutes?
  • Is the ZIA User Risk Score "High"?

Context Nuggets are explicit, logical, and built for evaluation — integers, enumerations, booleans. Nothing fuzzy. Nothing ephemeral. Nothing that breaks policy logic.

 

2. Combining Nuggets into Adaptive Access Profiles

Here’s where Zscaler made an architectural leap. Adaptive Access Engine let admins express conditions that matter, combining multiple signals into one reusable definition.

Instead of embedding risk logic inside hundreds of ZIA/ZPA rules, Adaptive Access Engine introduces Adaptive Access Profiles — reusable logical objects constructed from nuggets.

A profile is essentially a Boolean expression tree:

ImageImage

Why this matters:

  • Profiles decouple context evaluation from policy evaluation.
  • ZIA/ZPA don’t need to know how to interpret Okta or CrowdStrike models.
  • Profiles act as a semantic layer — one definition, many policy surfaces.

This is the same model used by modern policy engines (OPA, Cedar), but implemented at Zscaler scale and optimized for inline, per-request evaluation.

 

3. Distribution Pipeline: How Enforcement Points Receive Context

When a profile evaluates to true for a user/device, the Context Engine publishes an applicability message:

Image

This means ZIA/ZPA enforcement engines always hold a current, in-memory view of:

  • applicable profiles
  • nugget state
  • TTL
  • versioned changes

There are no API calls at enforcement time. No round trips. No synchronous dependencies. This is what makes it scalable.

 

4. Enforcement: Inline, Per-Request, Real-Time

On ZIA:

  • Profiles appear as a first-class criteria in URL Filtering and Cloud App Control.
  • When traffic hits ZEN, the engine evaluates:
    • URL/App category
    • user identity
    • device identity
    • policy match
    • profile applicability (from Adaptive Access Engine)
  • Enforcement action is taken (allow, block, isolate, or step-up if tied to another system).

On ZPA:

The evaluation model is similar:

  • Connector path
    • private app segment
    • identity provider mapping
    • device trust
    • profile applicability

Private app access adapts based on signals just like internet/SaaS traffic.

Mid-Session Adaptation

This is the major technical unlock:

If a user’s context changes at T+17 seconds, ZIA/ZPA adapts at the very next request.
No need to wait for session expiry.

This is the part most SSE vendors cannot replicate because their enforcement model is not inline.

Keeping the Human in the Loop

We know that automation without observability is dangerous. A "High Risk" flag shouldn't always mean a hard block, especially for a CEO traveling for a keynote.

We built Adaptive Access Engine with an ability to override the context. This puts the controls back in your hands. If the system flags a user as risky but you know the context (e.g., a known travel scenario), you can manually override that specific signal for a set duration (e.g., 24 hours).

It keeps the system fast, but it keeps the operator in command.

What This Unlocks for the Enterprise

Consistent cross-surface context semantics: ZIA and ZPA now consume identical context objects. No more rewriting posture logic in two places.

Immediate availability of new context types- No more multi-system upgrade cycles. New context types become usable immediately.

Third-party integrations without custom plumbing- CrowdStrike, Defender, Okta, UEMs — integrated through consistent ingestion, not bespoke pipelines.

False positives don’t break access anymore- Admins can override incorrect signals centrally.

Policy sprawl collapses into reusable profiles- Instead of editing 2000 rules, admins modify a single profile.

Policies that adapt mid-session- Access isn’t static — it reflects the real world’s fluctuations.

And all of this sits on the Zero Trust Exchange, without adding new appliances, latency, or operational drag.

Want to learn more? Speak to our experts.

form submtited
Merci d'avoir lu l'article

Cet article a-t-il été utile ?

Clause de non-responsabilité : Cet article de blog a été créé par Zscaler à des fins d’information uniquement et est fourni « en l’état » sans aucune garantie d’exactitude, d’exhaustivité ou de fiabilité. Zscaler n’assume aucune responsabilité pour toute erreur ou omission ou pour toute action prise sur la base des informations fournies. Tous les sites Web ou ressources de tiers liés à cet artcile de blog sont fournis pour des raisons de commodité uniquement, et Zscaler n’est pas responsable de leur contenu ni de leurs pratiques. Tout le contenu peut être modifié sans préavis. En accédant à ce blog, vous acceptez ces conditions et reconnaissez qu’il est de votre responsabilité de vérifier et d’utiliser les informations en fonction de vos besoins.

Recevez les dernières mises à jour du blog de Zscaler dans votre boîte de réception

En envoyant le formulaire, vous acceptez notre politique de confidentialité.