PRODUKT · EDGE POLICIESVorschau

Routing, Rewriting, Auth — einmal deklariert.

Eine Policy-Datei beschreibt, wie jeder Request an deinen Tunnel behandelt wird. In Git versioniert, zur Compile-Zeit validiert, in unter drei Sekunden an jeden PoP propagiert.

Sichere Tunnel · TLS überall · Gehostet in Deutschland
REQUESTALLOW60%REWRITE22%DENY12%RATE-LIMIT6%POLICY
< 3s
Globaler Rollout
Von git push zu jedem PoP
0.4ms
Policy-Eval
p99 zusätzliche Latenz
120+
Eingebaute Matcher
Path, Header, Geo, ASN, Body
100%
Typsicher
Kompiliert, nicht interpretiert
Vorschau
DEKLARATIVE DSL

Eine Policy-Datei liest sich wie ein Vertrag.

Die t-Gates-DSL ist eine kleine, statisch geprüfte Sprache. Keine Magie. Keine Laufzeit-Überraschungen. Wenn sie kompiliert, deployt sie. Wenn sie deployt, routet sie korrekt — garantiert.

  • Im Build scheitern, nicht zur LaufzeitDer Typchecker fängt falsche Header-Referenzen und unerreichbare Regeln ab.
  • Hot ReloadAnwenden via Dashboard, CLI oder Git-Webhook. Keine Neustarts, keine Drops.
  • Jede Version zurückrollenJedes Deploy ist immutable. t-gates policy rollback ist ein Befehl.
# policy.tg
route "/api/v1/*" {
auth = oidc("auth.t.gate")
rate_limit = "100/min/user"
cache = edge(60)
headers.add("x-trace", req.id)
}
route "/admin/*" {
require = req.user.role == "admin"
geo_allow = ["DE", "US"]
}
MATCHE ALLES

Path, Header, Land, ASN, JSON-Body — alles nur Prädikate.

Die Matcher-Sprache ist einheitlich. Jedes Signal — aus der Request-Zeile, den Headern, dem Body, den Verbindungsmetadaten — komponiert sich zu denselben booleschen Ausdrücken.

  • Geo- & ASN-MatcherMaxMind-Daten wöchentlich aktualisiert. ASN-Listen von PeeringDB.
  • JSONPath auf BodiesNach Request-Body routen, ohne in deiner App zu parsen.
  • Eigene ClaimsAuf JWT-Claims, mTLS-Subject, Session-Attribute matchen.
path/api/v1/users/:id+ params
host*.t.gatewildcard
headerx-tier=premiumexact
queryversion=v2regex ok
methodGET, POST, PATCHany of
countryDE, AT, CHgeo db
asnAS13335asn list
body.json$.user.rolejsonpath
VS NGINX

Gleiches Ergebnis. Halb so viele Zeilen. Kein Regex-Schmerz.

Realistische A/B-Routing-Regel, mit Auth und Rate-Limiting.

VORHERnginx.conf
map $http_x_tier $rate {
  default "60r/m";
  premium "600r/m";
}
limit_req_zone $binary_remote_addr
  zone=tier:10m rate=$rate;

location ~ ^/api/v1/(.*)$ {
  auth_request /_oidc;
  limit_req zone=tier burst=20;
  if ($http_user_agent ~* "bot") {
    return 403;
  }
  proxy_pass http://upstream/$1;
  proxy_set_header X-Trace $request_id;
}
Plus ein dediziertes openresty- + lua-Modul für OIDC.
NACHHERpolicy.tg
route "/api/v1/*" {
  auth = oidc("auth.t.gate")
  rate_limit = match {
    req.header("x-tier") == "premium" => "600/min"
    else => "60/min"
  }
  deny if req.ua.is_bot
  headers.add("x-trace", req.id)
}
Am Edge nativ kompiliert. Kein Laufzeit-Interpreter.
POLICY-PRIMITIVE

Zwölf Verben decken jede Routing-Entscheidung ab.

Komponiere sie. Überschreibe sie pro Route. Vererbe über Umgebungen hinweg.

↪️

rewrite

Path- und Header-Rewrites mit Capture-Gruppen.

rewrite /v1/* → /v2/$1
🛡️

auth

OIDC, JWT, mTLS, API-Key — ein einziges Schlüsselwort.

auth = jwt(jwks_url)
⏱️

rate_limit

Token-Bucket pro IP, Nutzer, Header oder Ausdruck.

100/min/user
💾

cache

Edge-Cache mit stale-while-revalidate, Purge nach Tag.

cache = edge(60)
🌍

geo_allow

ISO-3166 allow/deny, ASN-Blocklisten.

geo_deny = ["RU"]
🔁

retry

Idempotente Retries mit exponentiellem Backoff.

retry = 3 backoff=expo
GIT-NATIVE

Policies liegen neben deinem Code.

Verbinde ein Repo, zeige auf einen Ordner, und t-Gates beobachtet neue Commits. Jeder PR bekommt eine Preview-Umgebung mit der neuen Policy auf einer Kopie deines Traffics.

  • PR-PreviewsJeder PR spiegelt Live-Traffic zu 1 %, damit du Response-Formen diffen kannst.
  • Pflicht-ReviewerProduktions-Policies hinter GitHub CODEOWNERS sperren.
  • Audit-TrailJedes Deploy verweist zurück auf Commit, Autor und Reviewer.
$ git push origin main
...
policy.tg compiled (47 routes)
✓ Validated against staging traffic
✓ Rolled out to 38/38 PoPs in 2.4s
Audit: deploy_8x2af · by @priya
"
Das Ziel ist, Routing aus der nginx.conf ins Code-Review zu verlagern. Jede Routing-Änderung wird zum PR mit Typprüfung und Preview-Umgebung, statt einer handgepflegten Config auf einer Live-Box.
Platform Engineering
Wofür Edge Policies gedacht sind · Pre-Alpha
PR
JEDE ROUTING-ÄNDERUNG GEPRÜFT

Bring jede Routing-Regel in die Versionskontrolle.

Hör auf, dich um 2 Uhr nachts in Proxies einzuloggen. Hör auf, YAML von Hand zu editieren. Liefere Policies aus, wie du Code auslieferst.

Keine Karte nötig · 14 Tage Testphase · Jederzeit kündbar