Overview
Polystack services enforce role-based access control through policy files. Each service has apolicy.yaml (or policy.json) file that maps API operations to role requirements. The default policies follow the principle of least privilege — admin gets full access, member gets project-scoped CRUD, and reader gets read-only access. This guide covers viewing default policies, creating custom roles, writing per-service overrides, and applying changes safely.
Default Policy Overview
Polystack ships with three built-in roles and a set of default policies enforced across all services:
The
admin role implies member, which implies reader — so each role inherits the permissions of those below it.
Policy files use oslo.policy syntax. Rules can reference roles, project context, object ownership, and system scope. You only need to define overrides — unspecified rules use the service’s compiled-in defaults.
Policy File Locations
Each Polystack service reads its policy file from inside its container. Overrides are placed in/etc/ironcore/<service>/ on the host and deployed by the deployment console:
Custom Roles and Per-Service Policies
Custom roles are names you create in Keystone. They have no permissions by default — you must explicitly grant them permissions in each service’s policy file.Workflow
Create the custom role in Keystone
Create a custom role
Verify
Find the policy rule names for the operations you want to allow
View the current built-in policy rules for the target service:
Show Nova's current effective policies
Show Neutron's current effective policies
Write the policy override file
Create
/etc/ironcore/<service>/policy.yaml with only the rules you want to change:/etc/ironcore/nova/policy.yaml — allow network-operator to list servers
/etc/ironcore/neutron/policy.yaml — allow network-operator to manage ports
Apply the policy changes via the deployment console
Redeploy the affected service
The new policy is active. Test with a user holding the custom role to verify enforcement.
Assign the custom role to users
Assign the custom role to a user on a project
Policy Syntax Reference
Role-based rules
Role-based rules
Common policy rule patterns
Project-scoped rules
Project-scoped rules
Project ownership rules
System-scope rules
System-scope rules
System admin rules
Combining rules with aliases
Combining rules with aliases
Define reusable aliases at the top of the policy file to avoid repetition:
Policy with reusable aliases
Per-Service Policy Examples
- Compute (Nova)
- Networking (Neutron)
- Block Storage (Cinder)
- Image (Glance)
- Identity (Keystone)
/etc/ironcore/nova/policy.yaml
Discover Policy Rule Names
Before writing an override, find the exact rule name used by the service:Audit Policy Enforcement
Regularly review and verify policy configurations across all services:Next Steps
Roles & Role Assignments
Create custom roles and assign them to users on projects and domains
Security Hardening
Apply the full security hardening checklist including policy auditing best practices
Domain Management
Manage the domain and project hierarchy that policies operate within
Admin Troubleshooting
Resolve 403 Forbidden errors caused by policy misconfigurations
