Skip to content

feat(auth): add discovery-only readers and workspace scopes - #4964

Draft
TaylorMutch wants to merge 1 commit into
feat/4722-gateway-service-auth/TaylorMutchfrom
feat/4668-discovery-readers/TaylorMutch
Draft

TaylorMutch wants to merge 1 commit into
feat/4722-gateway-service-auth/TaylorMutchfrom
feat/4668-discovery-readers/TaylorMutch

Conversation

@TaylorMutch

@TaylorMutch TaylorMutch commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Allow noninteractive discovery consumers to read routes for one workspace, a selected set, or all active workspaces using narrowly authorized certificate-bound identities.

Rebased onto main containing #4864. Stacked on feat/4722-gateway-service-auth/TaylorMutch.

Related Issue

Closes #4668. Part of RFC 0017.

The linked issue has no state:accepted label; the author has verified repository ADMIN access.

Changes

  • Add administrator-managed discovery grants bound to trusted OU=discovery certificates without operator credentials or workspace membership.
  • Authorize only snapshot/watch RPCs; deny general resource APIs, mutations, credentials, supervisor APIs, and gateway application requests.
  • Bound and validate workspace selection and aggregate snapshots, preserving existing user authorization and workspace lifecycle handling.
  • Reauthorize watches against grant changes and certificate expiry; document file reload, renewal, and revocation propagation.

Release Notes

Testing

  • After the internal RPC separation in feat(supervisor): advertise accepted application route installations #4940, this rebased layer independently passed locked Rust compilation with test targets.
  • Updated stack tip: 2,494 server library tests passed (34 ignored), 306 Kubernetes driver tests, RPC tracing coverage, SDK binding regeneration, and full repository pre-commit checks passed. The public discovery schema and generated SDK bindings are unchanged by the internal RPC refactor.
  • Earlier HA validation, before the internal RPC separation: 3,136 runtime library tests passed (34 ignored), 48 Rust SDK mock tests, 8 proxy tests, full Go SDK CI, and 412 gateway + 6 workspace + 6 proxy Helm tests passed.
  • Combined stack: full repository pre-commit (including strict Clippy), strict docs, and navigation checks passed.
  • Earlier live Kubernetes validation, before the internal RPC separation: two gateways, shared supervisors, and proxy replicas; direct/proxy TLS and HTTP/WebSockets, abrupt owner-process loss/recovery, populated 2→1→2→1 scaling, route renewal/withdrawal, and discovery grant narrowing/regrant passed. Workload Pod identity, PID, and in-memory state survived owner handoff.

Qualification limits

Live HA validation exercised supervisor process/Pod loss on a local k3d cluster. Whole-node failure, real network partitions, metric-driven HPA, sustained production load, and published release artifacts remain unqualified. Grant-file projection contributes to revocation propagation time. Common hashed multi-gateway hostname integration (#4842) and installation-status presentation (#4670) remain separate work.

The example Kubernetes HTTPRoute controller is a deferred compatibility POC outside this stack.

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Relevant implementation, configuration, and API documentation updated

PR dependency order: #4936 → #4940 → #4941 → #4956 → #4963 → #4964 → #4957 → #4958.

@copy-pr-bot

copy-pr-bot Bot commented Oct 27, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions

Copy link
Copy Markdown

Implement discovery-only certificate grants, bounded single/set/all workspace views, and live grant and certificate expiry checks. Preserve existing user authorization and reject discovery credentials on other APIs and application requests.

Closes #4668

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>
@TaylorMutch
TaylorMutch force-pushed the feat/4668-discovery-readers/TaylorMutch branch from 8fef4ac to 8d568c1 Compare October 27, 2026 06:46
@TaylorMutch
TaylorMutch force-pushed the feat/4722-gateway-service-auth/TaylorMutch branch from de94456 to 3b08d4c Compare October 27, 2026 06:46

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant