mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-07 00:37:36 +00:00
191 lines
5.9 KiB
Markdown
191 lines
5.9 KiB
Markdown
# Role-Based Access Control (RBAC)
|
|
|
|
RBAC lets you define custom roles with granular permissions and assign them to users. This restricts what each user can see and do in Pulse.
|
|
|
|
**Requires:** Pro, Pro+, or Cloud license with the `rbac` capability.
|
|
|
|
For plan details, see [PULSE_PRO.md](PULSE_PRO.md). For API endpoints, see [API Reference](API.md#-rbac--role-management-pro).
|
|
|
|
---
|
|
|
|
## Concepts
|
|
|
|
### Roles
|
|
|
|
A role is a named set of permissions. Each permission is an `(action, resource)` pair:
|
|
|
|
- **action**: `read`, `write`, `delete`, or `admin`
|
|
- **resource**: A Pulse resource type (e.g., `alerts`, `settings`, `nodes`, `ai`)
|
|
|
|
Pulse ships with built-in roles: `admin` (full access), `operator` (manage alerts and resources), `viewer` (read-only), and `auditor` (audit log access). You can create additional custom roles for more granular control.
|
|
|
|
### Role Assignment
|
|
|
|
Users can hold multiple roles. Their effective permissions are combined across all assigned roles. Explicit `deny` rules take precedence over `allow` grants.
|
|
|
|
### OIDC Group Mapping
|
|
|
|
When using OIDC/SSO, roles can be automatically assigned based on group membership. See [OIDC Group-to-Role Mapping](OIDC.md#group-to-role-mapping-pro) for configuration.
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
1. Activate a Pro, Pro+, or Cloud license in **Settings → License**.
|
|
2. Go to **Settings → Security → Access Control**.
|
|
3. Create roles with the permissions you need.
|
|
4. Assign roles to users.
|
|
|
|
---
|
|
|
|
## Managing Roles
|
|
|
|
### Creating a Role
|
|
|
|
**UI:** Settings → Security → Access Control → Create Role
|
|
|
|
**API:**
|
|
```bash
|
|
curl -X POST http://localhost:7655/api/admin/roles \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"id": "operator",
|
|
"name": "Operator",
|
|
"description": "Can view and manage alerts",
|
|
"permissions": [
|
|
{"action": "read", "resource": "alerts"},
|
|
{"action": "write", "resource": "alerts"},
|
|
{"action": "read", "resource": "nodes"}
|
|
]
|
|
}'
|
|
```
|
|
|
|
### Listing Roles
|
|
|
|
```bash
|
|
curl http://localhost:7655/api/admin/roles \
|
|
-H "Authorization: Bearer $TOKEN"
|
|
```
|
|
|
|
### Updating a Role
|
|
|
|
```bash
|
|
curl -X PUT http://localhost:7655/api/admin/roles/operator \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"name": "Operator",
|
|
"description": "Updated description",
|
|
"permissions": [
|
|
{"action": "read", "resource": "alerts"},
|
|
{"action": "write", "resource": "alerts"},
|
|
{"action": "read", "resource": "nodes"},
|
|
{"action": "read", "resource": "ai"}
|
|
]
|
|
}'
|
|
```
|
|
|
|
### Deleting a Role
|
|
|
|
```bash
|
|
curl -X DELETE http://localhost:7655/api/admin/roles/operator \
|
|
-H "Authorization: Bearer $TOKEN"
|
|
```
|
|
|
|
---
|
|
|
|
## Managing User Assignments
|
|
|
|
### Listing Users and Their Roles
|
|
|
|
```bash
|
|
curl http://localhost:7655/api/admin/users \
|
|
-H "Authorization: Bearer $TOKEN"
|
|
```
|
|
|
|
### Setting Roles for a User
|
|
|
|
Role assignments are set as a complete list — the user's roles are replaced with the provided set:
|
|
|
|
```bash
|
|
curl -X PUT http://localhost:7655/api/admin/users/jane/roles \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"roleIds": ["operator", "viewer"]}'
|
|
```
|
|
|
|
To remove all custom roles from a user, send an empty list:
|
|
|
|
```bash
|
|
curl -X PUT http://localhost:7655/api/admin/users/jane/roles \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"roleIds": []}'
|
|
```
|
|
|
|
Note: Users cannot modify their own role assignments (self-escalation prevention).
|
|
|
|
---
|
|
|
|
## Automatic Role Assignment via OIDC
|
|
|
|
If you use an OIDC identity provider, Pulse can automatically assign roles based on group membership on each login.
|
|
|
|
**UI:** Settings → Security → Single Sign-On → Group Role Mappings
|
|
|
|
**Environment variable:**
|
|
```bash
|
|
# Format: group1=role1,group2=role2
|
|
OIDC_GROUP_ROLE_MAPPINGS="oidc-admins=admin,oidc-operators=operator,oidc-viewers=viewer"
|
|
```
|
|
|
|
How it works:
|
|
- On each login, Pulse reads the user's groups from the OIDC groups claim.
|
|
- Matching groups are mapped to Pulse roles.
|
|
- A user can receive multiple roles from multiple group mappings.
|
|
- When at least one mapped role is found, role assignments are updated to match. Note: logins with zero matching groups do not clear existing role assignments.
|
|
- Role changes are logged to the [audit log](AUDIT_LOGGING.md) as `oidc_role_assignment` events.
|
|
|
|
See [OIDC documentation](OIDC.md#group-to-role-mapping-pro) for full configuration details.
|
|
|
|
---
|
|
|
|
## Organization Roles (Multi-Tenant)
|
|
|
|
In multi-tenant deployments (Cloud Enterprise), each organization has its own role hierarchy:
|
|
|
|
| Role | Permissions |
|
|
|------|------------|
|
|
| **Owner** | Full control. Can transfer ownership and delete the org. |
|
|
| **Admin** | Manage members, shares, and org settings. Cannot transfer ownership. |
|
|
| **Editor** | Read/write access to org resources. Cannot manage members. |
|
|
| **Viewer** | Read-only access to all org data. |
|
|
|
|
These organization roles are separate from the RBAC custom roles described above. Organization roles control access within a specific tenant, while RBAC roles control access to Pulse features globally.
|
|
|
|
See [Multi-Tenant Organizations](MULTI_TENANT.md) for details.
|
|
|
|
---
|
|
|
|
## Example: Team Setup
|
|
|
|
A typical team configuration:
|
|
|
|
| User | Role | Access |
|
|
|------|------|--------|
|
|
| alice | `admin` | Full access to everything |
|
|
| bob | `operator` | Can view nodes/VMs and manage alerts |
|
|
| carol | `viewer` | Read-only access to dashboards and metrics |
|
|
| monitoring-bot | API token with `alerts:read` scope | Automated alert polling |
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- [Plans and Entitlements](PULSE_PRO.md) — RBAC availability by plan
|
|
- [OIDC / SSO](OIDC.md) — Automatic role assignment from identity providers
|
|
- [Audit Logging](AUDIT_LOGGING.md) — Track role changes and access events
|
|
- [Multi-Tenant Organizations](MULTI_TENANT.md) — Organization-level roles
|
|
- [API Reference](API.md#-rbac--role-management-pro) — RBAC API endpoints
|
|
- [Security Policy](../SECURITY.md) — Core security model
|