mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-31 12:48:10 +00:00
feat(rbac): make stack-scoped grants node-specific (#1727)
* feat(rbac): make stack-scoped grants node-specific Qualify stack role assignments as (nodeId, stackName), migrate legacy rows to the default node, and forward bound multi-action evidence on Proxy/Pilot hops so scoped users keep least-privilege remote access without shipping the full grant table. * fix: mirror scoped-stack-auth-evidence capability to frontend, sanitize node id in role assignment log Backend added the scoped-stack-auth-evidence capability without the matching frontend entry, failing the capability parity test. The role assignment log also interpolated the node id without sanitizeForLog, unlike the rest of the line. * fix(rbac): honor node-wide scopes and fix proxied DELETE cleanup Node-scoped grants now authorize that role's stack actions on the same node in the backend resolver, frontend can(), and remote evidence. Proxied DELETE cleanup uses the gate-stashed route because pathRewrite mutates req.path before proxyRes. Add proxy integration coverage and drop the stale scoped-permissions screenshot. * fix(rbac): preserve node-qualified grants during repair
This commit is contained in:
@@ -27,6 +27,16 @@ export const PROXY_ROLE_HEADER = 'x-sencho-actor-role';
|
||||
export const PROXY_DEPLOY_SOURCE_HEADER = 'x-sencho-deploy-source';
|
||||
export const PROXY_DEPLOY_ACTOR_HEADER = 'x-sencho-deploy-actor';
|
||||
|
||||
/**
|
||||
* Bound stack-scoped RBAC evidence for Proxy/Pilot hops. The hub strips any
|
||||
* client-supplied values and, when scoped elevation is required, sets the
|
||||
* exact stack name plus a comma-separated PermissionAction set conferred by
|
||||
* that tuple's hub assignments. Remotes trust these only under node_proxy /
|
||||
* pilot_tunnel machine auth.
|
||||
*/
|
||||
export const PROXY_SCOPED_STACK_NAME_HEADER = 'x-sencho-scoped-stack-name';
|
||||
export const PROXY_SCOPED_STACK_ACTIONS_HEADER = 'x-sencho-scoped-stack-actions';
|
||||
|
||||
export const DEPLOY_SOURCES = [
|
||||
'manual',
|
||||
'rollback',
|
||||
|
||||
Reference in New Issue
Block a user