Conversation
bce2e1d to
5557aeb
Compare
|
I really like this proposal. Just to be sure: It would be still possible to have an One use-case would be in the |
Enable authenticated and authorized app-to-app communication via GoRouter using mutual TLS (mTLS). Applications connect to a shared internal domain (apps.mtls.internal), where GoRouter validates client certificates and enforces per-route access control using a default-deny model. Key features: - Phase 1a: Domain-specific mTLS in GoRouter (validates instance identity) - Phase 1b: Authorization enforcement via allowed_sources route option - Phase 2 (optional): Egress HTTP proxy for simplified client adoption Depends on RFC-0027 (Generic Per-Route Features) for route options support.
5557aeb to
8f3900a
Compare
@silvestre I have update the RFC with: |
|
|
||
| ## Proposal | ||
|
|
||
| ### Architecture Overview |
There was a problem hiding this comment.
Hey @rkoster, I think this proposal is a great enhancement for app developers.
Do you think we could also integrate an operator-switch for people deploying a TLS-terminating reverse-proxy in front of gorouter? This proxy would need to take some parts of the logic, and set the XFCC header. The per-route logic would be similar, but gorouter gets the data from the header instead of the actual TLS handshake.
There was a problem hiding this comment.
Why would you want to use a TLS-terminating reverse-proxy in front of gorouter for app to app traffic? The idea is that bosh dns would point app 2 app traffic directly at the gorouters. Traffic would stay on the private network. How would bosh dns even know about this reverse-proxy? The idea is to make this feature self contained within CF.
|
This idea is really interesting but will be possible to have communication to app containers on different ports or different protocol than http? |
Give credit to Beyhan and Max for the initial work on this RFC
This RFC currently focuses on HTTP traffic via GoRouter, but non-HTTP protocol support is an interesting future direction. Current constraints:
What would be needed for non-HTTP support:
For now, this is out of scope to keep the RFC focused and achievable. But feel free to create a follow up RFC for Non-HTTP use cases. |
Summary
This RFC proposes enabling authenticated and authorized app-to-app communication via GoRouter using mutual TLS (mTLS).
View the full RFC
Applications connect to a shared internal domain (
apps.mtls.internal), where GoRouter:allowed_sourcesKey Points
allowed_sourcesapps.mtls.internalis a separate domain tree, avoiding conflicts with existingapps.internalroutesallowed_sourcessupportImplementation Phases
allowed_sources(co-requisite with 1a)cc @cloudfoundry/toc @cloudfoundry/wg-app-runtime-interfaces