How the Merak zero trust network works

Marketing has worn the phrase “zero trust” down to an attitude. It is not an attitude. It is a set of very specific engineering decisions: who opens the connection, what represents an identity, where the private key lives, at which layer authorisation happens, and what occurs when something fails.

This article takes a zero trust network access (ZTNA) network of the kind Merak builds and pulls it apart into eight mechanisms, one diagram each. If you know roughly how TCP opens a connection and roughly what a certificate is, you have enough to read it. Every term is listed again at the end with a link to its specification.

What problem this is solving

Traditional network security is a perimeter model: put the assets behind a wall, put one door in the wall (a VPN gateway or a firewall), and check people at the door. Whoever passes gets an internal IP address, and from then on what they can reach is decided by subnets and firewall rules — not by who they are.

The weakness is not that the door is flimsy. It is that there is no second decision behind it. Steal one set of working credentials and movement inside the network is close to unimpeded — the technique catalogued as lateral movement, and the stage that turns a single compromised laptop into a breach.

Perimeter model: network first, permissions later / Identity model: identity first, then a tunnelOn the left, the perimeter model: once past the gateway an attacker moves laterally to every host, which the animation walks through step by step. On the right, the identity model: each connection is authorised on its own and unauthorised services never answer.Perimeter model: network first, permissions laterInternal segment!Stolen accountGatewayFile serverERPDatabaseMonitoringOne check at the door; reachability is decided by the subnetOne foothold = every host on the segmentIdentity model: identity first, then a tunnelUser + device certidentity: aliceFile serverERP (authorised)DatabaseMonitoringno answerEvery connection is authorised on its own; probes get nothing backA stolen identity reaches only what it already could
  • paths open to the attacker
  • the one authorised connection
  • network perimeter
FIG 01 Left, the perimeter model: one check at the door, reachability decided by the subnet afterwards. Right, the identity model: connections are authorised one service at a time, and an unauthorised service does not exist as far as that identity is concerned.
Text version of this diagram

Two trust models side by side: on the left, reachability follows network position; on the right, it follows per-connection authorisation.

Left — perimeter model (network first, permissions later)

  • A stolen account passes the gateway from outside and lands inside the internal segment.
  • The segment holds four hosts: file server, ERP, database, monitoring.
  • Once the attacker has a foothold, they move laterally across the segment and reach all four hosts in turn.
  • Authentication happens once at the door; the subnet decides who can reach whom afterwards.
  • Result: one foothold equals every host on the segment.

Right — identity model (identity first, then a tunnel)

  • The client holds a user certificate and a device certificate, presenting identity: alice.
  • The same four services are on offer: file server, ERP, database, monitoring.
  • Policy authorises ERP only, so exactly one connection is established.
  • The other three services return nothing to this identity — a probe gets no answer at all.
  • Result: a stolen identity reaches only what it could already reach; the blast radius does not grow.

The whole claim of zero trust fits in one sentence: a position on the network is not a reason to trust anything. Making that real starts with separating “can reach” from “is authorised” in the architecture itself.

1. Split deciding from carrying

The first structural decision is plane separation, borrowing the control plane and forwarding plane split from network hardware.

  • The control plane handles enrolment, policy, certificate issuance and the authorisation decision for every connection. It decides — and it never touches application data.
  • The data plane is a set of interconnected edge nodes forming a mesh that carries the traffic. It moves bytes, and makes no authorisation decisions of its own; it enforces what the control plane synchronised to it.
Control plane / Data plane — mesh of edge nodesThe control plane handles enrolment, policy, certificate issuance and per-connection authorisation, and never forwards application data. The data plane is a mesh of edge nodes that carries the traffic. The three link types are control, link and edge connections.Control planeenrolment · policy · certificate issuance · per-connection authorisationnever touchesapplication dataData plane — mesh of edge nodesEdge node AEdge node BEdge node CClientin-app SDK or local proxyProtected serviceno inbound listenerAll three link types are mutual TLS — both ends present a certificate. No hop is plaintext or anonymous.
  • control: node to control plane
  • link: node to node
  • edge: application to node
FIG 02 The control plane decides, the data plane carries. All three link types — control, link and edge — are mutual TLS, and every end presents its own certificate.
Text version of this diagram

How the control plane and the data plane divide the work, and the three link types that join them.

Control plane

  • Handles enrolment, policy definition, certificate issuance and per-connection authorisation decisions.
  • Never touches application data.

Data plane — mesh of edge nodes

  • Edge nodes A, B and C form a mesh and carry the actual traffic.
  • The client joins through an in-app SDK or a local proxy.
  • The protected service has no inbound listener.

Three link types

  • Control links, between an endpoint and the control plane, for enrolment, authorisation and policy.
  • Link connections, between edge nodes, forming the mesh data path.
  • Edge connections, between an endpoint and an edge node — the hop traffic actually travels.
  • All three are mutual TLS: both ends present a certificate, and no hop is plaintext or anonymous.

Two consequences follow directly. First, the vendor is not on the data path — the control plane sees who asked to reach what and when, and nothing of the contents. In cross-border transfer reviews and regulated industries, that distinction usually matters more than any throughput number. Second, there is no central gateway in the data plane, and therefore no single point of failure whose loss disconnects everyone.

All three link types run mutual TLS. Ordinary web TLS authenticates only the server; the client stays anonymous. Mutual TLS requires a certificate from both ends, so the connection itself carries both identities. No hop is plaintext and no hop is anonymous.

2. An identity is a certificate, not a username

In a network like this, every principal — person, device, service, workload — has an identity that is an X.509 certificate.

If PKI is new to you, this is the model to hold: a certificate is a statement that “this public key belongs to this subject”, signed by a trusted issuer with the issuer’s own private key. Check the signature and you know the statement has not been altered. But a certificate is public information. Holding one proves nothing; proving an identity means proving you hold the matching private key.

Which makes the design goal of the enrolment flow singular: the private key must never leave the endpoint, from generation onward.

4. Generate the key pair locallyEnrolment in order: a one-time token reaches the endpoint out of band, the endpoint verifies the control plane certificate, generates a key pair locally and sends only a signing request. The control plane verifies it and issues the certificate chain, which is then renewed automatically before expiry. The private key never leaves the device.Endpoint (person / device / service)Control plane1. One-time enrolment token (JWT) delivered out of band2. Connect to the address inside the token, ask for its certificate3. Certificate returned; endpoint proves the holder owns the key5. Send the certificate signing request (CSR) + the token6. Verified → certificate chain issued; the identity now exists4. Generate the key pair locallyprivate key stays in local storage; only the public key leaves, inside a CSR7. Steps 5–6 re-run automatically before expiry, with no manual workThe private key never leaves the device — recording the whole exchange still does not clone the identity
  • messages that cross the network
  • steps that happen only locally
  • automatic renewal loop
FIG 03 Enrolment. The one-time token only bootstraps trust; the key pair is generated on the endpoint, and the only thing that leaves the device is the public key, wrapped in a CSR. The same exchange re-runs automatically before the certificate expires.
Text version of this diagram

The full sequence by which an endpoint gains a certificate identity — seven steps, built so the private key never leaves the device.

Participants

  • The endpoint (a person, device or service).
  • The control plane.

Steps

  • 1. A one-time enrolment token (a JWT) is delivered to the endpoint out of band.
  • 2. The endpoint connects to the address inside the token and asks for the control plane certificate.
  • 3. The certificate comes back; the endpoint verifies the holder really owns the matching private key.
  • 4. The endpoint generates a key pair locally, writes the private key to local storage and wraps only the public key in a CSR.
  • 5. The certificate signing request goes out together with the enrolment token.
  • 6. Once verified, the control plane issues the certificate chain and the identity exists.
  • 7. Steps 5 and 6 re-run automatically before expiry, with no manual reissue.

The point

  • The private key never leaves the device — record the entire exchange and you still cannot clone the identity.

Step 4 is where it turns. The endpoint generates an asymmetric key pair locally, writes the private key to local storage, and wraps the public key in a certificate signing request (CSR, RFC 2986). The control plane verifies it and signs a certificate chain back.

So: recording the entire enrolment exchange still does not reconstruct the identity — all an observer captured was a public key. That is a categorically different security model from shipping a password or an API key over the wire, where a single weak point in transport or storage hands the credential over intact.

The one-time token in step 1 is typically a short-lived JWT (RFC 7519), usable once, whose only job is to tell the endpoint where to connect and let the control plane recognise this particular enrolment. It is spent the moment it becomes a certificate.

Worth knowing: even if your primary sign-in is OpenID Connect or a password, the client still has to obtain a short-lived certificate before it can reach an edge node — the data plane insists on mutual TLS end to end, and without a certificate there is no connection to make. How a human authenticates and what carries the connection’s identity are two separate things.

3. Why encrypt twice

Seeing both “mutual TLS everywhere” and “end-to-end encryption” usually prompts the same question: isn’t one of those redundant?

No. They protect different things, and they nest.

Order of encapsulation (inside out) / Who can decrypt what along the pathOn the left, the order of encapsulation: the payload is sealed end to end with AEAD, then wrapped again by per-hop mutual TLS. On the right, who can decrypt what along the path: only the two ends hold the end-to-end key, so a relay node forwards ciphertext it cannot open.Order of encapsulation (inside out)mTLS 1.2+ · a separate key per hopAEAD seal · key held only by the two endsApplication payloadHTTP / SQL / any protocolTwo independent layers — change one, the other is unaffectedWho can decrypt what along the pathend-to-end key KemTLS 1mTLS 2App ARelay edge nodeApp Bholds Keholds Keforwards ciphertextCompromise the relay and you still only get ciphertext
  • mTLS: per hop, separate keys
  • AEAD: end to end, keys at the ends only
  • the original payload
FIG 04 Left: the order of encapsulation. The payload is sealed end to end first, then wrapped again per hop. Right: how decryption ability is distributed along the path — a relay can open its own hop, but not the payload inside it.
Text version of this diagram

On the left, the order of encapsulation; on the right, what each node along the same path can actually decrypt.

Order of encapsulation (inside out)

  • Innermost: the application payload — HTTP, SQL or any other protocol.
  • Middle: an AEAD seal whose key exists only at the two ends.
  • Outermost: mutual TLS 1.2 or later, with a separate key for every hop.
  • The two layers are independent: replace one and the other is unaffected.

Who can decrypt what along the path

  • The path runs App A → relay edge node → App B, split into mTLS hop 1 and mTLS hop 2.
  • App A holds the end-to-end key Ke.
  • App B holds the end-to-end key Ke.
  • The relay edge node does not hold Ke and forwards ciphertext it cannot open.
  • So compromising the relay still yields nothing but ciphertext.
  • The transport layer is per hop. Client to node A is one segment; node A to node B is another, with its own keys. It answers “who is on the other end of this hop, and can anyone else hear it”.
  • The application data layer is end to end. The payload is sealed at the source with authenticated encryption (AEAD, RFC 5116), and only the two endpoints hold that key. In practice that means an algorithm such as ChaCha20-Poly1305 (RFC 8439) that provides confidentiality and integrity together — “authenticated” meaning that a single flipped bit makes decryption fail outright rather than produce garbage.

The consequence is blunt: a relay node forwards ciphertext it cannot open. For the confidentiality of the payload, the data plane is an untrusted component; take a whole node and you still hold ciphertext.

Where the end-to-end boundary actually sits depends on how the application connects. Embed the encryption boundary in the application itself and it runs application to application. When a legacy system cannot be modified and a local proxy takes over instead, the boundary runs proxy to proxy — still covering the entire network path, with the short local hop from proxy to application outside it. That is a trade-off worth stating explicitly during a rollout rather than discovering later.

4. Every connection asks again

A valid certificate completes authentication — who you are. It says nothing about authorisation — what you may do. Conflating the two is where a great many access control designs go wrong.

Each time someone opens a new connection to a service, four checks run in order:

A certificate only proves authentication. Every new connection walks all four gates again.Every connection passes four checks in order: the certificate is valid and enrolled, policy grants this identity the service, the nodes and path are authorised, and the endpoint posture meets the policy. Only all four together open a tunnel to that one service; any failure denies it.A certificate only proves authentication. Every new connection walks all four gates again.New connection1Certificate valid& identity enrolledidentity2Policy allows thisidentity → servicepolicy3Nodes and pathare authorisedpath4Endpoint posturemeets the policypostureTunnel opensto that service onlyAny gate fails → denied, and nothing comes back that would confirm the service existsThe grant is the tunnel itself — it cannot reach a service nobody authorised
  • the decision chain
  • all four pass: tunnel to that service
  • any failure: denied
FIG 05 Per-connection authorisation. All four gates open a tunnel, and that tunnel leads to exactly one service; any failure denies the request without returning anything that would confirm the service exists.
Text version of this diagram

Every connection walks four checks in order, and only all four together open a tunnel.

Premise

  • Holding a certificate only proves authentication. Every new connection walks all four gates again.

The four gates, in order

  • 1. identity — the certificate is valid and the identity is enrolled.
  • 2. policy — policy grants this identity access to this service.
  • 3. path — the connection travels authorised nodes and routes.
  • 4. posture — the endpoint posture meets what the policy requires.

Outcome

  • All four pass → a tunnel opens, and it leads to that one service only.
  • Any gate fails → denied, and nothing comes back that would confirm the service exists.
  • The grant is the tunnel itself — it cannot reach a service nobody authorised.

What matters is the granularity and the timing. Granularity is a single service rather than a subnet; timing is every connection rather than every login. Together they are the principle of least privilege implemented at the network layer: compromise an endpoint and the attacker reaches only the services that identity was already authorised for. The unreachable boxes on the right of Figure 01 stay unreachable for them too.

A trap worth designing around: multiple policies granting the same service are usually combined as an OR union — one passing policy is enough. Attach both a policy with a posture check and a policy without one to the same identity and service, and the second silently disables the posture check. Nothing errors, because both policies are individually valid. Count the union in whenever you write policy.

5. Passing once is not enough

The fourth gate — the posture check — deserves its own section, because it is one of the few mechanisms that keeps acting after the connection is already up.

Checked once, at connection time / Evaluated for the life of the connectionTop: posture checked only when the connection is set up — the endpoint drifts out of compliance later and the connection stays up. Bottom: posture evaluated for the life of the connection — the moment it drifts, the existing connection is torn down. A playhead sweeps both lanes to compare them.the endpoint drifts out of complianceChecked once, at connection timepasses at setupthe connection lives on until the user closes itEvaluated for the life of the connectionevery comparison passesauthorisation gone → connection torn downtime →Reporting is change-driven: the endpoint compares its own state on a cycle and sends only what changed
  • evaluation passes
  • endpoint state changes
  • authorisation lost, connection closed
FIG 06 Top: checked once at connection time, so an endpoint that loses compliance afterwards keeps its connection. Bottom: evaluated continuously, so authorisation disappears the moment posture drifts and the existing connection is torn down.
Text version of this diagram

Two posture models compared on the same timeline: checked once, versus evaluated for the life of the connection.

Top lane — checked once, at connection time

  • The endpoint passes the check at the moment the connection is set up.
  • Some time later it drifts out of compliance.
  • The existing connection lives on regardless, until the user closes it.

Bottom lane — evaluated for the life of the connection

  • After setup, every state comparison keeps passing.
  • The moment the endpoint drifts out of compliance, that change is seen.
  • Authorisation disappears and the existing connection is torn down on the spot.

How reporting works

  • Reporting is change-driven: the endpoint compares its own state on a cycle and sends only what changed, rather than reporting everything on a timer.

Conventional access control checks at the door, so a laptop that was compliant this morning and had something installed on it this afternoon keeps its connection until the user closes it. Continuous evaluation changes exactly that: the moment the endpoint drifts, the existing connection closes — no waiting for the next reconnect.

The common check types look roughly like this:

CheckWhat it evaluatesTypical use
Operating system / versionA named OS, optionally a version range (a Semver-style expression)Keep out builds that no longer receive security updates
Network interface addressThe endpoint’s interface address is on an allow listBind access to company-issued hardware
Multi-factorThe endpoint has passed TOTP (RFC 6238) verification, with a configurable timeoutRequire recent verification for sensitive services
ProcessMatched by executable path, binary hash or signing fingerprintConfirm endpoint protection is actually running
Domain membershipThe endpoint belongs to a named domainSeparate corporate assets from personal devices

Multi-factor is the only one with time semantics: you can require verification within the last N seconds, and re-prompt after the device locks or wakes.

The reporting model is worth noting too. Posture reporting is change-driven — the endpoint compares its own state on a cycle and sends a report only when something changed, rather than uploading full state every few seconds. That is what makes it scale, and it also explains why drift detection lands in seconds rather than milliseconds.

6. Why the service cannot be scanned: reverse the direction

This is the least intuitive mechanism in the architecture and the most effective.

Start from a plain fact about opening a TCP connection. For a service to be reachable, it must open an inbound listening port — which is a broadcast to the entire network saying “I am here, and this port will talk to you”. Any open port shows up under a port scan: the scanner sends a SYN, and a SYN-ACK confirms something is there. Version fingerprinting, certificate probing, known-vulnerability matching and login brute force all follow. The first step of the whole attack chain is that answer.

The listener is the attack surface. So the answer a zero trust network gives is: do not have one.

Conventional: the service opens an inbound listener and waits / Outbound dial: the service only dials out, never accepts inboundTop row, a conventional service: an inbound listener answers a TCP SYN with a SYN-ACK, which is how a scanner finds it. Bottom row, the outbound dial: the service has no listener at all, so scans get nothing, and it instead dials out to an edge node. Authorised traffic travels back down that already-established connection.Conventional: the service opens an inbound listener and waitsScanneranyone on the internetFirewall: inbound needs an allow ruleService host:443 LISTENTCP SYN →← SYN-ACK: found youAn answer is the start of fingerprinting and brute forceOutbound dial: the service only dials out, never accepts inboundScanneranyone on the internetFirewall: inbound can be default-denyService hostno listenerTCP SYN →No SYN-ACK. No RST. Nothing at all.Edge node121. The service dials out over TCP, on its own initiative2. Authorised traffic returns down that same connection
  • the scanner's probe
  • an answer means it was found
  • the connection the service opens
  • traffic returning down that connection
FIG 07 Top, the conventional pattern: a listener answers a SYN with a SYN-ACK and the service is found. Bottom, the outbound dial: no listener exists, so a scan gets nothing, and the service instead dials out itself — authorised traffic returns down that already-established connection.
Text version of this diagram

Two exposure models compared: a conventional inbound listener, versus a service that only dials out and never accepts inbound.

Top row — conventional: the service opens an inbound listener and waits

  • The scanner can be anyone on the internet, and sends the service a TCP SYN.
  • The firewall needs an allow rule for inbound traffic.
  • The service host sits at :443 LISTEN.
  • It answers with a SYN-ACK, which is exactly how it gets found.
  • An answer is the starting point for fingerprinting, certificate probing and login brute force.

Bottom row — outbound dial: the service only dials out, never accepts inbound

  • The service host has no listener at all.
  • Inbound firewall rules can be default-deny across the board.
  • The scanner sends a TCP SYN and gets no SYN-ACK, no RST — nothing at all.
  • 1. The service dials out to an edge node over TCP, on its own initiative.
  • 2. Authorised traffic travels back to the service down that same established connection.

The node hosting the service opens no inbound listener at all. It dials out to the data plane over TCP and, on that already-established connection, registers itself as the terminator for the service. Every authorised request for that service afterwards travels back down the existing channel from an edge node. The service side only ever dialled out, and never accepted an inbound connection from the internet.

From the scanner’s side:

AspectConventional inbound serviceOutbound dial
Connection directionclient → service (inbound)service → edge node (outbound)
Externally reachable portrequiredno listener at all
Result of a SYN scanSYN-ACK, service foundno answer; indistinguishable from nothing
Inbound firewall rulesneeds an allow rulecan be entirely default-deny
Public IP / NAT configurationusually requirednot required

Note the practical weight of the last two rows. Because only outbound needs to be permitted — usually 443, which is generally open already — the service side can deny all inbound. And because the connection is established from the inside out, it traverses NAT and CGNAT naturally. That is why a service can sit in a private range with no public address at all and still be reachable by authorised users: it never needed to be dialled into.

It is worth being precise about what this does and does not stop. It removes the possibility of being scanned and probed at all — the front of the attack chain. It does not make application bugs disappear. When an authorised identity connects, your SQL injection is still a SQL injection.

7. How traffic gets there: cost-based routing and failover

Once legitimate traffic is inside the data plane, one question remains: which way does it go?

The path is computed: measured latency plus per-link cost, always taking the cheapest totalThe data plane is a mesh and every link carries a cost. The animation first sends traffic down the cheapest total path, then fails one link so routing moves to the next-cheapest on its own. There is no central gateway to become a single point of failure.12409251411ABCDEClientServiceoriginal 9 + 11 = 20after failover 12 + 14 = 26The path is computed: measured latency plus per-link cost, always taking the cheapest total
  • the original cheapest path
  • failed link
  • path after automatic failover
FIG 08 Every link carries a cost and traffic takes the cheapest total path. When the link from B to D fails, routing moves to the next-cheapest alternative; with no central gateway there is no single component whose loss takes everything down.
Text version of this diagram

Cost-based routing across the mesh data plane, and what happens when one link fails.

Topology

  • Several edge nodes form a mesh between the client and the service, offering more than one viable path.
  • Every link carries a cost value.

Normal state

  • Traffic takes the cheapest total path, at a cost of 9 + 11 = 20.

After a link fails

  • One link goes down and routing moves to the next-cheapest path on its own.
  • The rerouted path costs 12 + 14 = 26.
  • No central gateway has to fail over, so there is no single point of failure.

The point

  • The path is computed: measured latency plus per-link cost, always taking the cheapest total.

The data plane keeps measuring per-link latency, and path selection is cost-based: measured latency, plus the operator-assigned cost of each link, plus the terminator’s own cost and precedence — lowest total wins. Conceptually it is a shortest path problem over a weighted graph whose weights move as conditions change.

When a link fails or congests, routing shifts to an alternative with almost nothing visible to the application above. The contrast with a single-gateway architecture is structural rather than incremental: when the gateway goes, everyone goes — and a mesh data plane has no “everyone”.

8. What this architecture costs you

Any document claiming an architecture has no trade-offs is not worth reading. These belong on the table during evaluation:

  • A component has to be deployed on the endpoint or service side. An environment where nothing can be installed, and where no separate host can front the service either, is not a fit.
  • Control plane availability is on the critical path. Authorisation decisions depend on it, so its high-availability design belongs in the architecture review rather than in an appendix.
  • It does not replace application-level permissions. This machinery decides whether an identity may reach a service. Roles, row-level permissions and audit trails inside that service remain the application’s job.
  • Existing network monitoring goes blind. End-to-end encryption means intermediate nodes see nothing, so monitoring and DLP that inspected traffic at a gateway need rethinking — usually by moving visibility to the endpoint or the application.
  • The union semantics of policy invite mistakes. The OR-union trap above is the most common misconfiguration once policy counts grow, and it is worth a review process of its own.

Terms and further reading

TermOne-line explanationSource
Zero trust architectureTreating network position as no basis for trustNIST SP 800-207
TLS 1.3The current transport encryption standardRFC 8446
Mutual TLSTLS where both ends present a certificateMutual authentication
X.509 certificateThe standard binding of a public key to a subjectRFC 5280
PKIThe system that issues, verifies and revokes certificatesPublic key infrastructure
CSRA signing request carrying only the public keyRFC 2986
Revocation statusChecking whether a certificate has been revokedRFC 6960
JWTA signed token format, used for enrolment and sign-inRFC 7519
OpenID ConnectAn identity layer on top of OAuth 2.0OIDC Core
PKCEProtects authorisation codes for public clientsRFC 7636
AEADEncryption providing confidentiality and integrity togetherRFC 5116
ChaCha20-Poly1305A widely used AEAD algorithmRFC 8439
TOTPTime-based one-time passwords, common in MFARFC 6238
TCP connection setupThe three-way handshake, SYN and SYN-ACKRFC 9293
Port scanningProbing which ports answerPort scanner
NAT / CGNATAddress translation, and carrier-grade shared spaceRFC 3022 · RFC 6598
Lateral movementSpreading from one internal host to the nextMITRE ATT&CK TA0008
Least privilegeGranting only what is neededPrinciple of least privilege
Control / data planeSeparating what decides from what carriesForwarding plane
Single point of failureOne component whose loss takes down the wholeSingle point of failure
Semantic versioningVersion comparison rules, used by posture checksSemantic Versioning

The diagrams here are simplified for clarity: the full weighting of cost-based routing, posture reporting intervals and the high-availability topology of the control plane are left out, and product documentation is authoritative for actual values and behaviour. If you want to discuss a rollout for a specific environment, or need the fuller technical specification, get in touch.

Back to the blog

What SDP v3.0 Changed: SPA Is No Longer the Definition

SDP v3.0 demotes single packet authorisation from definition to option. What the new guide actually changed, why SPA struggles on IoT and cloud functions, where the line between SDP and microsegmentation really falls, and what to do first.

What zero trust architecture actually is

For the people who sign off the budget rather than build the systems: what zero trust solves, how it differs from what came before, what it is worth, and what to ask your IT team.