Session permissions are not gateway permissions
Ignition has more than one place to say “only certain people may do this”. They protect different things, they are not equally powerful, and the weaker one is easy to mistake for a boundary it is not.
A note on the words first
Inductive Automation uses “project security” for something specific: a Designer feature governing who may view, save and delete project resources, and who may access ones marked protected. That is an administrative control, and it explicitly does not apply to clients.
This post is about a different thing — the permissions a project applies to its own running sessions, configured in project properties, on individual views, and on component event actions. To keep those apart, the rest of this calls them session permissions.
How access is actually expressed
The vocabulary changed in 8.0, the release that introduced Perspective, and it matters because the older terms are still in wide circulation.
For Perspective, access is expressed in Security Levels granted through an Identity Provider, with Security Level Rules and User Grants deciding who receives them. Roles have not disappeared, but they appear as one branch of that tree rather than as the model itself. The classic user-source role model remains available for the Designer and for Vision. Since 8.1 either can also be pointed at an Identity Provider — and in Vision’s case the security levels are converted back into roles and zones, so roles remain its access-control model either way.
So if you are reasoning about a Perspective screen on a current gateway in terms of “which role opens this”, you are using vocabulary that describes a different part of the product. That is worth correcting before you audit anything, because it changes where you look.
Why this is not two equal halves
It is tempting to picture two independent axes: what the gateway permits and what a session permits, either of which might be strict while the other is loose. That picture is wrong in a way that matters.
Every input to session permissions is configured on the gateway. User sources, identity providers, security levels, security level rules, user grants and security zones all live there. Someone who can administer the gateway can grant themselves any level a project checks for, or open the Designer and remove the check. There is no inheritance in the sense of a gateway role silently satisfying a session check — but there is nothing stopping an administrator from arranging one.
In practice the overlap is larger still. On a deployment using the internal user source, the security level that gates gateway configuration — usually Authenticated/Roles/Administrator on a fresh gateway — is very often the same one projects check. The honest summary is that gateway administration is a superset of session authority. Session permissions constrain operators; they do not constrain administrators.
A view is not a sandbox
Here is the assumption most worth abandoning: that a screen can only do screen-shaped things.
Perspective scripting runs on the gateway, and gateway-scoped scripting functions are reachable from a session. Adding, removing or reconfiguring a database connection is available as a scripting call in Perspective session scope. So a view can absolutely change a database connection, if somebody wrote a script on it that does.
Nothing stops this by default. Ignition does give you the tools — view permissions, and security levels on the component event action itself — but it applies none of them for you. The separation between operational screens and administrative capability is a boundary you configure and maintain, not one that exists until you switch it off. Which means the question to ask of a screen is not “what is this screen for” but “what can the scripts on it reach”.
Where write authority actually lives
Session permissions govern what a person can open. They are not the mechanism that governs what a person can change in the process.
That is tag security, configured on the tags themselves, and it is the control that decides whether a write succeeds regardless of which screen it came from. A permission model built entirely on view access will happily let a user reach a tag through a screen nobody thought to restrict.
Which control, and how much of it
A reasonable first filter is whose decision the function represents. Editing a shift note or a target is an operational decision, and session permissions are the right control. Changing how the gateway behaves is the gateway owner’s decision and belongs behind gateway access.
That filter decides which control applies. It does not decide how much. A setpoint change is genuinely the operator’s decision by ownership, and if getting it wrong hurts somebody it also wants tag-level write security, a confirmation step and an audit trail. Ownership and consequence are separate questions and both need answering — a heuristic that only asks the first will under-protect exactly the actions that matter most.
This is the reasoning behind how Company News splits its own functions. Slide editing is a Perspective component governed by whatever already protects the view it sits on, because putting a safety number on a screen is an operational act. Licensing and full-library export sit behind a gateway login, because those are the gateway owner’s decisions.
The origin axis
Security zones classify gateways, computers and IP addresses into groups that can carry their own policies, adding a dimension that is neither “who is this person” nor “what may they do in this project”, but “where is this request coming from”.
In Perspective this is not abstract: zones appear alongside roles in a view’s permission dialog, so a view can require both an identity and an origin. One caveat worth knowing before you rely on it — the project stores the zone name as a string, so renaming a zone on the gateway breaks the check silently.
Questions worth asking about your own setup
- Which views have no permissions configured? Empty adds no restriction of its own — it does not fall back to a stricter default, and there is no folder-level inheritance. The only thing in front of such a view is whatever the session-level permission already requires.
- What can the scripts on your operational screens reach, as opposed to what those screens are for?
- Is write authority enforced on the tags, or only implied by which screens exist?
- Who can administer the gateway, and are you comfortable that this is a superset of every session permission you have configured?
- Would you make the same call about a request arriving from outside the plant network as one from inside it?
None of these require changing anything to answer. They require looking, and the looking is worth an afternoon.
Common questions
What is the difference between gateway security and session permissions in Ignition?
Is Ignition access still based on roles?
Can a Perspective view change gateway configuration?
What happens if a view has no permissions configured?
What are security zones for?
References
- Inductive Automation — Security (8.3)
- Inductive Automation — Security in Perspective (8.3)
- Inductive Automation — Security Levels (8.3)
- Inductive Automation — Project Security in the Designer (8.3)
- Inductive Automation — Gateway General Security Settings (8.3)
- Inductive Automation — Security Zones (8.3)
- Inductive Automation — Scripting in Perspective (8.3)
- Inductive Automation — system.db.addDatasource: scope includes Perspective Session (8.3)
- Inductive Automation — Tag Security Properties (8.3)
Not sure who can do what on your gateway? We work on Ignition systems across California’s Central Valley, and in our experience a review of this kind tends to surface at least one permission nobody meant to grant.
Contact us