Skip to content

Commit 0138d24

Browse files
committed
Docs: Update spec config block to consolidated tls_bridge schema
As-built note + corrected YAML: mode|ca_dir|passthrough_hosts|ports| upstream_ca_bundle (dropped enabled/scope/internal_cidrs/ca_source/cert+key paths/Name-Constraints; ephemeral is test-only). Signed-off-by: Hai Huang <huang195@gmail.com>
1 parent f9ddac3 commit 0138d24

1 file changed

Lines changed: 22 additions & 11 deletions

File tree

authbridge/docs/superpowers/specs/2026-06-12-authbridge-tlsbridge-design.md

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -242,20 +242,31 @@ reason (`port|non-tls|skip|in-cluster|ech|upstream-verify|handshake-fail`). Beyo
242242

243243
## Config
244244

245-
A pointer block on `Config` mirroring the `MTLS`/`SPIFFE` idiom:
245+
A pointer block on `Config` mirroring the `MTLS`/`SPIFFE` idiom.
246+
247+
> **AS-BUILT schema (simplified from the original design narrative above).** The
248+
> implemented `tls_bridge:` block is deliberately smaller than the early sketch.
249+
> Decisions folded in:
250+
> - **No `scope`/`internal_cidrs`.** The `external` vs `all` distinction was dropped:
251+
> the bridge intercepts everything eligible on the configured `ports`, full stop
252+
> (`mode: disabled|enabled`, matching the operator's `tlsBridgeMode` 1:1). No
253+
> in-cluster gate in `Decision`.
254+
> - **No `ca_source`/`ca_cert_path`/`ca_key_path`/`ca_export_path`.** A single
255+
> `ca_dir` holds the operator-mounted cert-manager Secret (keys `tls.crt`/`tls.key`/`ca.crt`
256+
> by convention). The ephemeral in-memory CA is **test-only** (`NewEphemeralSource`,
257+
> not config-selectable) — a real agent can't trust an unexported in-memory CA.
258+
> - **No X.509 Name Constraints** on the per-agent CA (unconstrained; containment =
259+
> per-agent isolation + sidecar-only `0440` key + rotation).
260+
> - **`skip_hosts``passthrough_hosts`** to disambiguate from `listener.skip_hosts`
261+
> (which bypasses the whole pipeline; these still run the egress gate, just not TLS-terminated).
246262
247263
```yaml
248-
mitm:
249-
enabled: true
250-
scope: external # external | all (which traffic to intercept)
251-
internal_cidrs: [] # treated as in-cluster when scope=external (else discovered)
252-
ca_source: file # file | ephemeral
253-
ca_cert_path: /etc/authbridge/mitm-ca/tls.crt
254-
ca_key_path: /etc/authbridge/mitm-ca/tls.key
255-
ca_export_path: /var/run/authbridge/mitm-ca.pem # ephemeral mode only
264+
tls_bridge:
265+
mode: enabled # disabled | enabled (enabled = intercept all eligible on ports)
266+
ca_dir: /etc/authbridge/tls-bridge-ca # operator-mounted cert-manager Secret: tls.crt/tls.key/ca.crt
256267
upstream_ca_bundle: "" # extra roots for re-origination (agent's private CAs); empty = system roots
257-
skip_hosts: [] # static passthrough; auto-skip augments this at runtime
258-
leaf_cache: { max: 1024, ttl: 24h }
268+
passthrough_hosts: [] # static passthrough; the runtime auto-skip set augments this
269+
ports: [] # TLS ports to intercept; empty => {443, 8443}. HTTP(S)-only.
259270
```
260271
261272
Read in `main.go` beside the `fpMTLS` block; construct `CASource` + `Minter` + `Terminator` + the upstream

0 commit comments

Comments
 (0)