Skip to content

Platform RBAC

Platform RBAC controls what platform users and API keys can do. Platform roles (platform_admin, platform_operator, platform_viewer) are stored in the unified roles table under org_platform and use the same RBAC infrastructure as tenant roles.


Three roles are available out of the box:

RoleDescriptionKey Capabilities
platform_adminFull platform accessAll operations including user management, write impersonation, and key management
platform_operatorOperational accessTenant management, full impersonation, read access to users/keys/roles
platform_viewerRead-only accessView users, keys, roles, tenants, and audit logs; read-only impersonation

Built-in roles cannot be deleted or modified.


Assign roles when creating a user:

Terminal window
ironflow platform users create --email ops@example.com --name "Operator" \
--role-ids role_platform_admin

Or via the API:

Terminal window
curl -X POST http://localhost:9123/api/v1/platform/users \
-H "Authorization: Bearer $PLATFORM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "ops@example.com",
"password": "secure-password",
"name": "Operator",
"role_ids": ["role_platform_admin"]
}'

Assign roles when creating a key:

Terminal window
ironflow apikey create ops-key --platform

Platform actions control access to specific operations:

ActionDescription
platform:users:readList and view platform users
platform:users:manageCreate, update, and delete platform users
platform:keys:readList and view platform API keys
platform:keys:manageCreate, rotate, and delete platform API keys
platform:roles:readList and view platform roles and policies
platform:roles:manageCreate, update, and delete custom roles and policies
platform:tenants:readList and view tenant organizations
platform:tenants:manageProvision and delete tenant organizations
platform:impersonate:readRead-only access to tenant data via impersonation
platform:impersonateWrite access to tenant data via impersonation (POST, PUT, DELETE)
platform:audit:readQuery the platform audit log
ActionAdminOperatorViewer
platform:users:readYesYesYes
platform:users:manageYes
platform:keys:readYesYesYes
platform:keys:manageYes
platform:roles:readYesYesYes
platform:roles:manageYes
platform:tenants:readYesYesYes
platform:tenants:manageYesYes
platform:impersonate:readYesYesYes
platform:impersonateYesYes
platform:audit:readYesYesYes

AspectPlatform RBACTenant RBAC
ScopeCross-tenant platform operationsSingle organization
Rolesplatform_admin, platform_operator, platform_vieweradmin, developer, viewer
Actionsplatform:* namespacefunctions:*, events:*, etc.
Custom rolesCEL policiesCEL policies
Key prefixifplatform_ifkey_

Create a custom role with specific policies:

Terminal window
ironflow platform roles create support-role --policy-ids pol_abc123

Custom roles allow fine-grained access beyond the three built-in roles. For example, a “support” role that can read tenant data and view audit logs but cannot manage users or keys.

See Custom Roles & CEL Policies for details on writing CEL policy expressions.