feat(ae-control): TLS on the control surface (CONTROL_TLS)#71
Conversation
Auth without TLS is half a control: tcpdump on dx→AE :9100 captured 720 cleartext `Authorization: Bearer` JWTs in 70s — the #68 token crosses the CNI in plaintext. CONTROL_TLS=true now serves TLS with server.crt/key from the service-tls-certs secret (broker/PEM already use it; dx skip-verifies). Default-OFF for incremental rollout, symmetric to CONTROL_REQUIRE_AUTH. Stacks on #68 (ae-followup-auth). dx client half: entlein/dx#88. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Validated on PG 6a3998d9 (aeprod21, tcpdump + NFR). With |
Why
Wire audit (tcpdump on dx→AE :9100) caught 720 cleartext
Authorization: Bearer eyJ…JWTs in 70s — the #68 control-surface auth token crosses the CNI in plaintext (AE_CONTROL_ADDR is a ClusterIP svc over http). Sniffable + replayable. Auth without TLS is half a control.What
CONTROL_TLS=true→ the control surface serves TLS (httpSrv.ListenAndServeTLS) withserver.crt/server.keyfrom the service-tls-certs secret the broker/PEM already use (verified present inpl). dx skip-verifies (entlein/dx#88). Default-OFF, symmetric toCONTROL_REQUIRE_AUTH— safe incremental rollout.adaptive_export_deployment.yaml: mounts service-tls-certs at/certs.ListenAndServeTLSoffers h2+http/1.1; dx's net/http client speaks http/1.1 over TLS — negotiates cleanly.Stacking
Based on
ae-followup-auth(#68). Rollout:CONTROL_REQUIRE_AUTH=true+CONTROL_TLS=truetogether, dxAE_CONTROL_ADDR→https://.Validation
Being tested now on a live PG (one image change at a time, NFRs + tcpdump confirming the :9100 exchange — incl. the auth bearer — is encrypted end-to-end). Evidence to follow.