RBAC & Authorization
Permission Model
Permissions are action:resource pairs with wildcard support:
"*":"*" — All actions on all resources
"node:*":"*" — All node actions on any resource
"node:get":"node-123" — Specific action on specific resource
Defined Actions
Each action family has a <family>:* wildcard alongside its individual actions.
Group actions:
group:*, group:create, group:createsubgroup, group:get, group:listsubentities,
group:editnodes, group:update, group:updatesubgroup, group:updatecapabilities,
group:delete, group:deletesubgroup, group:share, group:listusers,
group:listprimaryusers, group:getautomation, group:editautomation,
group:deleteautomation
Node actions:
node:*, node:get, node:update, node:deleteconfig, node:putconfig,
node:editgroups, node:writeshadow, node:readshadow, node:publishtodevice
Node admin actions:
nodeadmin:*, nodeadmin:add, nodeadmin:registerstatus, nodeadmin:reserveid,
nodeadmin:getreservation, nodeadmin:countreservations
Admin config actions — gate the rmng_admin_config table, granted only to
SystemActor and admin callers:
adminconfig:*, adminconfig:get, adminconfig:set
Access Type -> Permissions
GetGroupPermissions maps a user’s group access type to the actions granted on
that group:
Access Type |
Granted Actions |
|---|---|
|
|
|
|
|
|
A secondary user gets no group:delete, group:share, or
group:editnodes — it can manage subgroups and automations but cannot add or
remove nodes, share the group onward, or delete it.
Admin Check
Every admin endpoint establishes that the caller came through the admin Cognito
pool before doing anything else, and answers 403 if it did not. The check is on
the caller resolved from the request, not on a value in the request body.
Admin-pool membership is the whole privilege — there is no tier above it, so no
admin endpoint distinguishes one admin from another.