feat(console): serve web channels to allowlisted targets - #37
Merged
Merged
Conversation
Signed-off-by: Travis Wu <travis.wu@bigstack.co>
Signed-off-by: Travis Wu <travis.wu@bigstack.co>
Signed-off-by: Travis Wu <travis.wu@bigstack.co>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
/kind feature
What
The node-side half of the web console (#9): a
webtunnel target, resolvedagainst an allowlist the node owns.
internal/console/web.go—WebAllowlist, one symbolic name to exactly onehost:port, loaded from/etc/cube-advisor-agent/web-targets.jsonserveConsolegains aTargetWebarm beside the existing SSH one-web-targetsconfigures the file; absent means the node exposes no webtarget and still serves SSH, malformed stops the agent at startup
Why
ADR 0002 says the node decides what it exposes. A web channel is the same
bargain as the SSH one: the SaaS names a target symbolically and the node maps
it, so a compromised SaaS cannot reach an address the node never offered.
Notes for reviewers
Targetcarries a name and nothingelse, so a name meaning several addresses could not say which it wanted. An
app and its identity provider are two names; grouping is the SaaS's job.
dependency to read four lines of config.
RefusedReason; the distinguishing detailis logged locally and never sent, so a probing SaaS cannot map the cluster by
watching which refusals differ.
serveSSHConsoleis the pre-existing SSH logic extracted unchanged.a console and 3 web targets for ky3haclust01/sky141,and CMP reached through it end to end.
Part of #9 — not
Fixes, because #9's criteria include nested WebSocket,which is a later slice.
🤖 Generated with Claude Code
https://claude.ai/code/session_01PZ5umjjCedZwWtbAbiMjfj