SS-26 · Network Fabric & SASE

SASE & private access

The core of the product. Default-deny ZTNA, network segments and residency paths, an application-aware SD-WAN overlay, a Tailscale-style tailnet, the zero-knowledge multi-tenant mesh (SDP control plane), native WireGuard coordination that retired Headscale, EVE-NG digital twins, and the write-once UPO policy compiler that renders one policy to ZTNA / SD-WAN / firewall targets.

SS-26 shared service82 operations8 sub-capabilities

What it does

ZTNA, the sovereign mesh, native WireGuard coordination, SD-WAN and the UPO policy compiler — one fabric.

ZTNA — default-deny access

Author default-deny access policies (allow-groups, min-trust, posture-required, ports, resource) and evaluate each request into a recorded session verdict. ZTNA decisions target ≤100 ms.

Sovereign mesh overlay / SDP

Create a per-tenant mesh with MTU/MSS clamping (the 1280–1420 trap), enroll peers by public key only, keep an ephemeral endpoint cache with roaming, and pull topology changes from a cursor-based delta engine.

Native WireGuard coordination

Generate each node's netmap and a zero-knowledge wg-quick config, serve a delta-driven coordination poll (the Headscale map-poll replacement), and perform seamless mesh-wide re-keys — ADR-0072 route 2.

UPO policy compiler

Write one versioned UnifiedPolicy, validate fail-closed, compile to ztna / sdwan / firewall rulesets, and apply with a diff against the last-applied baseline. Compilers render; they never mutate the enforcement stores.

SD-WAN overlay

Build tunnels over ≥1 link, set app-aware path-selection and QoS classes with protected floors, record SLA probes, and compute a live steering decision that reroutes an app onto the healthier link — reroute on loss targets ≤1 s.

Tailnet private access

Enroll devices with ephemeral/reusable auth keys, gate them with ACLs + device posture, resolve private names over MagicDNS, fall back through DERP relays, advertise subnet routes (advertise → approve), run exit nodes, and expose a k8s Service into the tailnet.

SASE controls

Secure Web Gateway policies, CASB SaaS controls, FWaaS rules, DLP inspection profiles and a SASE PoP registry — the security controls that sit close to users and workloads.

EVE-NG network emulation

Build a lab of nodes and links, start/stop/snapshot it, validate a proposed change against the emulated topology before it touches production, and reach the console only over a private mesh overlay address.

Worked examples

Real calls on the real route shapes.

Auth on every call is the platform standard: an SS-01 Bearer token plus your X-Tenant-Id. $BASE is the service's /api/v1 base; ${H[@]} carries the auth headers.

Author a ZTNA default-deny policy

A ZTNA policy is deny-by-default: it names exactly who may reach one resource, on which ports, at what trust level, with posture enforced. Everything not named is denied.

Author a ZTNA default-deny policy
curl -sX POST "$BASE/sase/ztna/policies" "${H[@]}" \
  -d '{
    "name": "payments-api",
    "resource": "svc://payments.prod",
    "allow_groups": ["sre", "payments-oncall"],
    "ports": [443],
    "min_trust": 70,
    "require_posture": true
  }'
# → 201 { "id": "ztna-7", "default_action": "deny", "version": 1 }

# Evaluate a request → a recorded session verdict
curl -sX POST "$BASE/sase/ztna/grant" "${H[@]}" \
  -d '{ "policy":"ztna-7", "user":"ada", "groups":["sre"],
        "device":"dev-1", "trust":82, "posture":true,
        "resource":"svc://payments.prod" }'
# → 200 { "decision": "allow", "session": "sess-1a2b", "ttl_s": 900 }

Compile one UPO policy to three enforcement targets + apply-diff

Write one abstract policy; validate fail-closed; render it to ztna, sdwan and firewall; then apply and get a reviewable diff. The compilers render configs — they never mutate the enforcement stores.

Compile one UPO policy to three enforcement targets + apply-diff
# 1. Author the unified policy (bumps the version)
curl -sX POST "$BASE/upo/policy" "${H[@]}" -d '{
  "name": "corp-baseline",
  "user_groups": ["eng","sales"],
  "segments": ["prod","corp"],
  "applications": ["payments","crm"],
  "access_rules": [{ "user_group":"eng", "segment":"prod", "action":"allow" }],
  "egress_policies": [{ "target":"crm", "action":"inspect", "inspection_level":"deep" }]
}'

# 2. Validate fail-closed (an invalid policy cannot compile)
curl -sX POST "$BASE/upo/policy/validate" "${H[@]}"
# → { "valid": true, "errors": [] }

# 3. Compile → a deterministic ruleset per target
curl -sX POST "$BASE/upo/compile" "${H[@]}" \
  -d '{ "targets": ["ztna","sdwan","firewall"] }'
# → { "ztna": {...}, "sdwan": {...}, "firewall": {...}, "policy_version": 4 }

# 4. Apply firewall → a diff vs the last-applied baseline
curl -sX POST "$BASE/upo/apply" "${H[@]}" -d '{ "target":"firewall" }'
# → { "target":"firewall", "added":["deny corp→prod"],
#     "removed":[], "unchanged_count": 12 }

Enroll a node with zero-knowledge into a per-tenant mesh

Enroll by public key only — private material is rejected with 400. The control plane emits the netmap and a wg-config whose PrivateKey line is a comment, never an assignable value.

Enroll a node with zero-knowledge into a per-tenant mesh
# Create a tenant mesh (MTU validated 1280–1420 → MSS = MTU − 40)
curl -sX POST "$BASE/mesh" "${H[@]}" \
  -d '{ "name":"corp-overlay", "mtu":1420 }'   # → { "id":"mesh-1", "mss":1380 }

# Enroll a peer by PUBLIC KEY ONLY (private_key → 400)
curl -sX POST "$BASE/mesh/mesh-1/peers" "${H[@]}" \
  -d '{ "name":"laptop", "public_key":"kA", "region":"eu-central" }'

# Pull the zero-knowledge wg-quick config
curl -s "$BASE/mesh/mesh-1/peers/peer-1/wg-config" "${H[@]}"
#   [Interface]
#   # PrivateKey: supplied by the node — control plane is zero-knowledge
#   Address = 100.100.1.1/32   ListenPort = 51820   MTU = 1420

Endpoints

A slice of the 82 real operations in SS-26.

Method · path from services/26's openapi.json. The complete catalog for every group is on the docs page.

POST/api/v1/sase/ztna/policiesCreate a ZTNA access policy (default-deny)
GET/api/v1/sase/ztna/policiesList ZTNA access policies
POST/api/v1/sase/ztna/grantEvaluate a ZTNA request and record the session verdict
POST/api/v1/upo/policyAuthor (create/replace) the tenant's unified policy; bumps version
POST/api/v1/upo/policy/validateValidate the current unified policy (fail-closed)
POST/api/v1/upo/compileCompile the policy to target rulesets (ztna|sdwan|firewall)
POST/api/v1/upo/applyApply a compiled target; returns the diff vs the last-applied baseline
GET/api/v1/upo/applied/{target}Get the last-applied compiled config for a target
POST/api/v1/meshCreate a sovereign mesh overlay (SDP control plane)
POST/api/v1/mesh/{id}/peersZero-knowledge peer enrollment (public key only; private material rejected)
GET/api/v1/mesh/{id}/peers/{device}/netmapGenerate the peer's WireGuard netmap (datapath instruction set)
GET/api/v1/mesh/{id}/peers/{device}/wg-configExport a zero-knowledge wg-quick config (no private key)
GET/api/v1/mesh/{id}/peers/{device}/coordNative coordination poll (delta-driven Headscale map-poll replacement)
POST/api/v1/mesh/{id}/peers/{device}/rekeySeamless mesh-wide re-key: rotate a peer's WireGuard public key
POST/api/v1/mesh/{id}/peers/{device}/connectivityCompute a NAT-traversal plan (direct or DERP relay fallback)
GET/api/v1/mesh/{id}/deltasPull topology deltas since a cursor
POST/api/v1/sdwan/tunnelsCreate an SD-WAN overlay tunnel
POST/api/v1/sdwan/steerCompute an app-aware steering decision for a tunnel
POST/api/v1/tailnet/devicesEnroll a device into the tenant tailnet (approval required)
PUT/api/v1/tailnet/aclSet the tailnet ACL/policy (ACLs + posture rules)
POST/api/v1/sase/dlp/profilesSet a DLP inspection profile
POST/api/v1/emulation/labs/{lab}/validateValidate a proposed change against the emulated topology

Architecture placement

Where SS-26 sits in the fabric.

SS-26 is reached only through the SS-07 edge (which validates the SS-01 JWT); east-west is mTLS. State lives as SS-02 claims, tunnel keys come from SS-05 Vault (ADR-0056), and every state change emits a Vault-Transit-signed SS-06 audit-chain entry (ADR-0014). Tenancy is first-class and hierarchical (ADR-0019/0059); cross-tenant access returns zero rows by construction.