Repository navigation
🔒 Harden the dashboard and make provider failures visible - #602
Merged
Merged
Conversation
… credentials stable
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.
Hardens the dashboard and delivery paths after the rc, and simplifies the dashboard surface.
Security and stability
<release>-dashboardempty; kwatch fillspasswordandtokenonce (get/update on that one Secret).existingSecretstill uses env refs.dashboard.trustedProxies(CIDR list) replacestrustProxyandmode; forwarded headers count only from listed peers,X-Forwarded-Foris walked right to left. Shared mode is derived (trusted proxies or own TLS).HeldMax(6h); then it resolves as unconfirmed. Signal exit codes no longer confirm a crash on their own.Simplify
dashboard.pushstate key dropped at start./api/kwatch,/api/trends,/api/insightsmerged into/api/statusand/api/overview.rbac.readyzremoved; dead helpers removed; license signing moved to tests.Delivery
/api/status.Docs:
docs/dashboard.mdcut to the operator contract (UI notes moved tointernal/dashboard/UI_NOTES.md), new restart page.Scenario guard:
TestScenariosNeverResolveUnverifiableRootshides a root kind for the whole replay, which is a permanent refusal. After the 6hHeldMaxbound those incidents now end, so the guard allows a resolve only when its reason is the bound's mark ("stopped tracking after 6h; could not confirm recovery"). A normal "healthy for" recovery is still an error. Boot and node-replacement cases that really do regain sight keep holding and resolve normally, because the bound counts only continuous unobservable time and clears when sight returns.