Overview
Polystack Extended RBAC is the per-action access control layer of the Polystack Platform. It builds on the platform’s existing identity and policy stack (Polystack Identity tokens, project scoping, service-level role policy) and adds a privilege catalog so cloud operators can construct custom roles that grant or deny specific Dashboard actions. Each grant can optionally be scoped to a tag condition — for example, “this role can act on instances taggedenv=staging only”.
- An administrator account on the Polystack Dashboard with the
rbac_adminprivilege (or the built-inadminrole) - The Polystack Platform identity layer enabled (default on every cluster)
- The RBAC gateway enabled in the deployment console → Configuration for cluster-wide enforcement on every direct platform service API call
What Fine-Grained RBAC Lets You Express
Extended RBAC was designed to express the access patterns customers expect from mature private cloud platforms. Concrete examples:Levels of Access Control
Extended RBAC is one layer in a five-layer access stack:Enabling the RBAC Gateway
Extended RBAC’s management surface is always active — privileges, custom roles, tag conditions, and the audit log are available from the Dashboard out of the box. The RBAC gateway is the additional switch that decides whether Extended RBAC enforces every direct platform service API call cluster-wide, or only the calls that go through the Dashboard extension APIs. The gateway is enabled through the deployment console — there is no other supported configuration path.Open the deployment console → Configuration
Enable the RBAC gateway
Run reconfigure
Verify
What You Can Control Per Service
Extended RBAC privileges map one-to-one to the action menus the Dashboard exposes. The lists below are the actual GUI actions available per service — every entry is independently grantable to a custom role, and most can be tag-conditioned.Compute — Instances
Compute — Instances
- Instance Status: Start, Stop, Lock, Unlock, Reboot, Soft Reboot, Suspend, Resume, Pause, Unpause, Shelve, Unshelve
- Related Resources: Attach Interface, Detach Interface, Attach Volume, Detach Volume, Associate Floating IP, Disassociate Floating IP, Manage Security Group
- Backups and Snapshots: Create Snapshot
- Clone and Template: Clone, Convert to Template
- Configuration Update: Resize, Confirm Resize or Migrate, Revert Resize or Migrate, Adjust Resources (live resize — vCPU / RAM / device hot-add), Change Password, Rebuild Instance
- Other row actions: Console, Edit Instance, Modify Instance Tags, Delete
- Batch actions: Start, Stop, Reboot, Soft Reboot, Delete
- Admin-view extras: Migrate, Live Migrate, Bulk Live Migrate
changePassword. Both privileges can be
tag-conditioned (for example, allow changePassword on env=staging
instances only).Compute — Snapshots, Images, Flavors, Keypairs, Server Groups, Templates
Compute — Snapshots, Images, Flavors, Keypairs, Server Groups, Templates
- Instance Snapshots: Edit, Browse Files (file-level recovery), Rollback, Create Instance, Create Volume, Delete
- Images: Create, Edit, Browse Files, Create Instance, Create Volume, Delete; admin extras — Manage Access, Manage Metadata
- Flavors: Create, Manage Access, Delete (read-only catalog access is itself a separate privilege)
- Keypairs: Create, Delete
- Server Groups: Create, Delete, Create Instance into the group
- VM Templates: Create Template, Edit, Deploy, Delete; admin — Manage Access
- Hypervisors (admin): Host Management
- Bare Metal Nodes (admin): Create, Manage State, Edit, Power On, Power Off, Inspect, Set Maintenance, Clear Maintenance, Set Boot Device, Create Port, Create Port Group, Delete
Storage — Volumes, Snapshots, Backups, Volume Types
Storage — Volumes, Snapshots, Backups, Volume Types
- Primary actions: Create, Accept Volume Transfer
- Row first action: Edit
- Submenu Data Protection: Create Snapshot, Create Backup, Create Image, Clone Volume, Restore
- Submenu Instance Related: Bootable, Create Instance, Attach, Detach
- Submenu Capacity and Type: Extend Volume, Change Type
- Other row actions: Create Transfer, Cancel Transfer, Delete
- Admin extras: Update Status, Migrate, Live Retype
Network — Networks, Routers, Floating IPs, Security Groups, Ports, Load Balancers, DNS
Network — Networks, Routers, Floating IPs, Security Groups, Ports, Load Balancers, DNS
- Networks: Create Network, Edit, Create Subnet, Delete
- Routers: Create, Edit, Connect Subnet, Disconnect Subnet, Set Gateway, Close Gateway, Enable SNAT, Disable SNAT, Delete
- Floating IPs: Allocate, Edit, Associate, Disassociate, Create Port Forwarding, Release
- Security Groups: Create, Edit, Create Rule, Delete
- Ports: Create, Edit, Attach Instance, Associate FIP, Disassociate FIP, Detach, Modify QoS, Manage Security Group, Delete
- Load Balancers: Create, Edit, Associate FIP, Disassociate FIP, Delete
- DNS Zones: Create, Update, Create Records, Delete
Identity — Projects, Users, Roles, Domains, User Groups
Identity — Projects, Users, Roles, Domains, User Groups
- Projects: Create, Edit, Delete, Manage Quota, Manage User, Manage User Group, Enable, Forbidden, Modify Tags
- Users: Create, Edit, System Role, Set Default Project, Password, Reset MFA (admin escape hatch), Enable, Forbidden, Delete
- Roles: Create, Edit, Delete
- Domains: Create, Edit, Enable, Forbidden, Delete
- User Groups: Create, Edit, Manage User, Delete
Key Manager — Secrets, Containers, Certificates
Key Manager — Secrets, Containers, Certificates
- Secrets: Create, Delete
- Containers: Create, Delete
- Certificates (under Network → Certificate): Create, Delete
Orchestration — Stacks
Orchestration — Stacks
- Stacks: Create, Edit, Abandon, Delete
Optimization (Resource Optimizer)
Optimization (Resource Optimizer)
- Audits: Create, Delete
- Audit Templates: Create, Delete
- Action Plans: Start (execute the plan), Delete
Instance HA — Segments, Hosts, Notifications
Instance HA — Segments, Hosts, Notifications
- Segments: Create, Update, Add Host, Delete
- Hosts: Update, Delete
- Notifications: Create, Delete
Container Infrastructure — Clusters, Cluster Templates
Container Infrastructure — Clusters, Cluster Templates
- Clusters: Create, Delete, Get Cluster Config, Show Certificate, Sign Certificate, Resize, Upgrade, Launch Dashboard
- Cluster Templates: Create, Edit, Create Cluster, Delete
Manage RBAC from the Dashboard
Extended RBAC is managed from three pages under Identity in the admin view of the Dashboard. The pages have separate responsibilities — managing roles is intentionally distinct from editing what a role can do, and from reviewing what changed.Roles — Identity → Roles
The existing Roles list is enhanced with Extended RBAC awareness. It remains the
single place where roles are created, deleted, and assigned to users.
RBAC Permissions — Identity → RBAC Permissions
The dedicated permissions editor — its single responsibility is “given a custom
role, edit what privileges it has.” No role create / delete / assignment lives
here.
Pick a Custom role
Toggle privileges in the matrix
- A checkbox to grant or revoke the privilege
- A hover tooltip showing the privilege description, prerequisite chain, and any associated service-level policy rule
- A condition chip if a tag condition is attached to this grant
Add a tag condition
equals, not_equals, contains, starts_with, any_of), and a value.
Conditions are reusable — one “env=prod” condition can be referenced by many
grants.Preview Effective Rules
Save
RBAC Audit Log — Identity → RBAC Audit Log
Every change made through Extended RBAC is recorded in an append-only log,
queryable from the Audit Log page.
Examples — Common Role Designs
These are example role designs you can build using the privilege matrix and tag conditions described above.VM Power User — power on / off but cannot resize or edit
VM Power User — power on / off but cannot resize or edit
instance.start, instance.stop, instance.reboot, instance.suspend,
instance.resume, instance.pause, and instance.unpause. Withhold
instance.resize, instance.adjust_resources (live resize), and
instance.edit. Operators keep workloads alive without changing their shape.Project DBA — act only on tagged database VMs
Project DBA — act only on tagged database VMs
prod that grants instance management privileges only
when the target VM carries the tag team=db. The user holds zero privileges on
instances tagged team=web or team=api.Storage Operator — attach but not create or delete
Storage Operator — attach but not create or delete
volume.attach, volume.detach, volume.read. Withhold
volume.create and volume.delete. The operator wires existing storage but
cannot add or remove volumes.Read-only auditor — list and view across services
Read-only auditor — list and view across services
*.list and *.read privileges. Even when the user calls
aggregator endpoints, Extended RBAC filters the response rows so the auditor
sees only resources their tag conditions permit.Decommission role — delete only
Decommission role — delete only
instance.delete and volume.delete, nothing else. Useful for
end-of-life automation.admin role remains a deliberate platform bypass. Patterns of the form
“admin has zero privileges on project X if denied” are not expressible — the
only ways to constrain admin are disable_admin_bypass (cluster-wide) or
require_system_scope_for_admin (force system-scope tokens for admin actions).Tag Conditions
Tag conditions let one privilege grant target only resources matching a tag — without creating multiple roles. They are evaluated against the resource being acted on (instance tags, volume metadata, network tags, etc.).Enforcement Model
When Extended RBAC evaluates whether a request is allowed:Anonymous check
Admin bypass
admin role passes through unless disable_admin_bypass is set.
An emergency override is available for incident response.Privilege lookup
Prerequisite walk
Rule resolution
Audit
Cross-Node Invalidation
Multi-node deployments stay coherent through a transactional invalidation log. Every role mutation, privilege grant, or condition change is appended to the log in the same database transaction as the underlying change. Other nodes poll the log every couple of seconds and refresh their local caches when they see a new event — privilege changes propagate to every node within ~5 seconds without restarting any service.Best Practices
Start with built-in roles, add Custom roles only for exceptions
Start with built-in roles, add Custom roles only for exceptions
Use tag conditions for environment isolation
Use tag conditions for environment isolation
env=prod, env=staging, or env=dev, and create
one Custom role per privilege scope, scoped to the relevant tag. Avoids
combinatorial role explosion.Preview effective rules before you save
Preview effective rules before you save
Keep admin bypass on for break-glass
Keep admin bypass on for break-glass
require_system_scope_for_admin if your
compliance framework requires project-scoped admin separation.Forward audit log to long-term storage
Forward audit log to long-term storage
