Skip to main content

Role-Based Access Control (RBAC)

Being authenticated tells OmniWeb who you are. RBAC decides what you may do. Access is granted at a fine grain — per element type, per HTTP method — which maps directly to the real operations an operator performs: view, modify, or delete.

← Authentication & Access Control · ← Operations Guide

Permission Levels

Each element type can be granted to a user at one of three levels. The level is expressed as the set of HTTP methods the user may use against that element through the proxy:

PermissionMethods allowedWhat the operator can do
Read-onlyGETView data only — no changes
Read-writeGET, POST, PUT, PATCHView and modify — e.g. add a subscriber, edit a route, change a QoS rule
FullGET, POST, PUT, PATCH, DELETEEverything, including deletion and clearing sessions

Because permissions are keyed to HTTP methods, they line up exactly with the generic editing model: an "Add" form is a POST, an "Edit" is a PUT/PATCH, and a "Delete"/"clear" is a DELETE.

Per-Element Granularity

Permissions are assigned independently per element type. A user can hold different levels on different elements:

In this example Jane can clear UPF sessions, can view but not change the HSS, can add SMSC routes, and cannot see the OCS at all. This lets you give, say, a dataplane engineer full control of the UPF while keeping subscriber data read-only.

Administrators

Administrators have full access to all element types automatically. The admin role is also what grants access to user and permission management. Keep the number of administrators small, and prefer specific per-element grants for everyone else.

Managing Roles & Permissions

Permissions are managed under Settings → Permissions. For each user you choose, per element type, whether they have read-only, read-write, or full access (or none).

How Enforcement Works

RBAC is enforced in two complementary places:

  1. In the UI — controls for actions you cannot perform are not shown. If you only have read access to the HSS, you will not see Add/Edit/Delete buttons there.
  2. In the backend — every proxied request is re-checked against your permissions server-side. Even a request crafted to bypass the UI is rejected if your role does not permit that element/method.

This "defence in depth" means the UI is a convenience, not the security boundary — the backend proxy is.

The Permissions tab where each user is granted per-element, per-method access

Settings → Permissions — select a user, then grant a level (read-only, read-write, or full) per element type.

Good Practice

  • Least privilege — grant the lowest level that lets someone do their job; widen only when needed.
  • Read-only by default for elements an operator only needs to observe.
  • Reserve Full (DELETE) for those who genuinely need to clear sessions or remove records.
  • Few admins — use targeted per-element grants instead of handing out admin.