Glossary · Security

Role (Part 18)

In OPC UA, a Role is the Part 18 unit of authorisation: a named set of permissions that identities are mapped into, rather than permissions granted to users directly. A session is assigned its roles at activation, and per-node RolePermissions decide what those roles may do. Roles are browsable in the server's RoleSet.

The well-known roles

Part 18 defines a standard set so that products mean the same thing by the same name: Anonymous, AuthenticatedUser, Observer, Operator, Engineer, Supervisor, ConfigureAdmin and SecurityAdmin. Observer reads, Operator changes process values, Engineer changes configuration, SecurityAdmin manages certificates and trust lists. Servers may add their own roles, but mapping onto the well-known set is what makes a multi-vendor plant administrable by one policy.

Identity mapping is the mechanism

Roles are not stored on users; each Role object in the RoleSet carries identity mapping rules that say which identities belong to it - by username, by user certificate thumbprint or subject, by a group claim from an external identity provider, or by the blanket criteria anonymous and authenticated user. At ActivateSession the server evaluates the rules against the presented identity token and fixes the session's role list. Change the mapping and existing sessions do not necessarily re-evaluate, so plan for a reconnect.

The application role most people miss

Part 3 defines a well-known TrustedApplication role, which is granted on the basis of the application instance certificate rather than the user - the reference stack assigns it automatically to applications whose certificate is trusted. That gives you a genuinely useful distinction: an anonymous session from a trusted application is not the same thing as an anonymous session from an unknown one, and you can permit more to the former without inventing a user account for a gateway.

Enforcement lives on the nodes

A role by itself grants nothing. The RolePermissions attribute on a node lists role and permission pairs, UserRolePermissions shows the effective permissions for the current session, and AccessRestrictions can additionally demand signing, encryption or a session. Nodesets ship default per-node permission tables as .NodeIds.permissions.csv files, which is a useful starting point rather than something to write from scratch.

Example

Roles as they appear when you browse a server, with an identity mapping

Server
  ServerCapabilities
    RoleSet
      Anonymous          Identities: [ { criteriaType: Anonymous } ]
      AuthenticatedUser  Identities: [ { criteriaType: AuthenticatedUser } ]
      Observer           Identities: [ { criteriaType: UserName,  criteria: "hmi_view" } ]
      Operator           Identities: [ { criteriaType: GroupId,   criteria: "line3-operators" } ]
      Engineer           Identities: [ { criteriaType: Thumbprint, criteria: "3f9a1c..." } ]
      SecurityAdmin      Identities: [ { criteriaType: UserName,  criteria: "pki_admin" } ]

# Part 3 also defines a well-known TrustedApplication role, granted from the
# application instance certificate rather than from the user identity.
The mistake people make: Configuring roles and identity mappings and then never setting RolePermissions on any node. Every session gets its roles correctly and every role can still do everything, because the server falls back to its default node permissions. Check UserRolePermissions on a node you expect to be protected - that attribute is the only proof the policy is actually in force.

Defined in: Part 18 - Role-Based Security; Part 3 - Address Space Model for the permission attributes and the TrustedApplication role.

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login