Technical guidance for designing, enforcing, operating, and verifying PLC programming authority across modern and legacy OT environments.
From Network Access to Executable Industrial State
The security boundary of a production PLC is frequently drawn in the wrong place. Network diagrams naturally encourage the architect to place it at the industrial firewall, the cell/area-zone boundary, the remote-access gateway, or the controller’s Ethernet interface. Those are important enforcement points, but none of them necessarily controls the capability that matters most: the ability to alter the state from which the controller derives future industrial behavior.
For PLC security, the first architectural task is therefore to distinguish the communications plane from the engineering authority plane. A controller may legitimately need continuous network communication for HMI supervision, historian acquisition, peer-controller exchange, process-value publication, time synchronization, alarm handling, supervisory setpoints, or other operational functions. None of those requirements implies that the same communications architecture must continuously expose project download, online editing, CPU mode control, forcing, firmware management, hardware reconfiguration, or controller security administration.
That distinction should be made explicit in the security design. The question is not merely whether a host can communicate with a PLC. It is whether the architecture allows that communication relationship to become an engineering transaction capable of changing the controller’s effective control state.
This article uses executable industrial state for that protected object. The term intentionally includes more than PLC application code. For security purposes, changes to any of the following may alter what the controller does, whether it does it, or under which rules it can subsequently be changed:
- executable program blocks, routines, functions, tasks, and sequences;
- hardware and I/O configuration;
- communications configuration and controller-to-controller relationships;
- technology-object, motion, drive, or process-control configuration;
- runtime values whose modification can override normal control behavior;
- active forces and other test or commissioning mechanisms;
- CPU operating state and remote operating-mode transitions;
- retentive or persistent controller state;
- boot projects and restoration images;
- controller firmware;
- certificates, users, roles, passwords, protection levels, and other security configuration.
A PLC can therefore remain byte-for-byte unchanged at the application-program level while its effective industrial behavior has nevertheless been materially altered. Changing the mapping between a logical variable and an output channel, leaving a force active, modifying a technology-object parameter, placing a CPU in STOP, restoring an unexpected retentive state, or altering the controller’s protection configuration can be as operationally significant as modifying ladder logic. This leads to the first design rule:
Protect the effective controller state, not merely the source program.
Programming is an engineering-plane capability, not a network service
OT network design often describes PLC access in terms such as allowed, blocked, reachable, or isolated. These terms are necessary for network engineering but insufficient for controller security. Suppose an engineering workstation is permitted through an industrial firewall to communicate with a PLC. That decision establishes a communications relationship. Depending on the product and configuration, the same relationship may permit only diagnostics, or it may expose a much larger set of functions: project upload, project download, partial block transfer, online modification, test functions, forcing, operating-mode changes, firmware operations, or security administration.
The firewall normally cannot infer that distinction from the existence of the TCP session alone. Even where an industrial firewall performs protocol inspection, the security architecture should not assume that network enforcement is equivalent to controller authorization. Proprietary engineering protocols evolve, operations can be multiplexed inside permitted sessions, encrypted engineering traffic can reduce intermediary visibility, and some controller functions are meaningful only in the context of controller state and engineering-system semantics.
The correct assessment sequence is therefore:
- Path admission.
- Peer or user authentication.
- Engineering-session establishment.
- Operation authorization.
- Controller state change.
Each stage answers a different question. A path may be allowed while authentication fails. Authentication may succeed while engineering functions remain restricted. An engineering session may be established while project download is denied. Project download may be permitted while firmware replacement or user administration remains prohibited.
When those distinctions collapse into one credential, one trusted workstation, or one broad controller access level, the resulting security property should be documented accurately: successful admission to the engineering environment effectively grants a large bundle of controller authority. That is not necessarily avoidable on every brownfield platform, but it is materially different from fine-grained authorization and should be treated as such in the risk assessment.
Determine the final enforcement point for every high-consequence operation
For each state-changing PLC function, the security architect should identify the last component in the path that can independently reject the operation. This is the effective authority-enforcement point.
For example, a programming transaction may traverse:
- Remote access service.
- OT access gateway.
- Jump host.
- Engineering workstation.
- Industrial firewall.
- Controller.
Several security decisions may occur along that path, but they do not enforce the same property. The remote-access service may decide whether a vendor engineer can enter the OT access environment, while the jump host may constrain which administrative resources the engineer can reach. The firewall may determine whether the engineering workstation can initiate the controller protocol, and the engineering application may require credentials or project permissions. The controller may independently decide whether the authenticated identity can perform a download or change operating mode.
These controls are valuable precisely because they can be independent. They become much less valuable when they all resolve to the same root of trust.
Consider an architecture in which:
- the remote engineer authenticates to a VPN;
- VPN membership permits access to a shared jump host;
- the jump host can connect to every PLC;
- the engineering software holds reusable controller credentials;
- all production controllers use the same credentials;
- those credentials provide full controller access.
The architecture contains multiple visible security products, but the practical authority chain is extremely short. Compromise of the remote identity or engineering environment may be sufficient to derive programming authority over the entire controller population.
A more defensible architecture deliberately prevents that collapse. Authentication to remote access should not automatically authorize programming. Access to a jump host should not automatically authorize every controller. Possession of an engineering workstation should not automatically confer every CPU function. Authorization for one controller should not imply authorization for the cell, plant, or fleet. Permission to modify application logic should not imply authority over firmware or security configuration.
This gives a second design rule:
Do not count security layers; determine which independently enforced conditions must fail before unauthorized executable-state modification becomes possible.
Move enforcement toward the protected operation
The preferred architecture is to enforce authorization as close as technically possible to the controller function being protected. If the PLC can distinguish users, roles, applications, or function rights, use those capabilities rather than relying exclusively on upstream network admission.
Where the controller cannot provide the required granularity, the missing control must move outward into the engineering architecture: dedicated Engineering Workstations, restricted engineering conduits, privileged credential handling, physical or local mode controls, temporary access activation, and independent verification of the deployed state.
This distinction is particularly important in brownfield environments. A legacy controller protected by a shared full-access password does not acquire fine-grained authorization because it sits behind an industrial firewall. The firewall can reduce who reaches the controller; it cannot create controller function rights that the device does not implement.
The remainder of the design should therefore preserve three independent questions: which systems can reach the PLC, which identities are admitted, and which state-changing operations those identities can execute. The following sections turn those questions into a practical engineering and verification model.
Implementing the Model on Real OT Platforms
The target architecture is clear: dedicated engineering endpoints, named identities, restricted engineering conduits, controller-native authorization where available, temporary high-consequence privileges, and independent verification after changes.
The implementation, however, differs substantially by platform. The important design decision is not which protocol appears on the architecture diagram, but which component can actually distinguish and reject a privileged controller operation. A useful implementation hierarchy is:
| Platform capability | Preferred security treatment |
|---|---|
| Controller supports named users and function rights | Enforce privilege in the controller and reinforce it with network and endpoint controls |
| Engineering platform can authorize user + workstation + operation + controller | Use it to constrain engineering authority before the request reaches the PLC |
| Protocol supports identity and operation/resource authorization | Apply it to the operations that actually traverse that protocol |
| Controller exposes only coarse password/access levels | Compensate with dedicated EWS, tightly restricted conduits, temporary reachability and credential control |
| Protocol exposes unauthenticated writes | Treat network reachability to write functions as a privileged capability |
The following configurations illustrate what that means in practice.
Siemens S7-1500: use CPU user management, not merely network trust
For current S7-1500 deployments, the preferred configuration is to make the CPU itself an authorization point. Siemens S7-1500 CPUs configured with firmware V3.1 or later support User Management & Access Control based on users, roles and CPU function rights. TIA Portal manages the users and roles under the project security settings and stores the assignment of CPU function rights to roles for each configured CPU.4
This should materially change the design of the engineering environment. Do not configure Engineering VLAN → S7-1500 → shared full-access credential as the normal production model. Prefer named engineer → controlled TIA Portal workstation → authorized CPU → role/function rights.
For each CPU or security-equivalent controller group, define at least a read-oriented engineering role and one or more modification roles. Do not assign Full access simply because a user requires TIA Portal. Siemens explicitly distinguishes full, read and HMI-related access through CPU function rights in the current S7-1500 access model; loading CPU configuration requires the corresponding full-access function right.5
The practical configuration review should therefore inspect the TIA Portal project and the deployed CPU rather than merely record that password protection is enabled. For each production CPU, verify:
- configured firmware and available user-management model;
- whether local or applicable central user management is enabled;
- named users and assigned roles;
- CPU function rights attached to those roles;
- which users possess full-access rights;
- whether contractors or commissioning accounts remain configured;
- whether identical privileged credentials are reused across unrelated CPUs;
- whether TIA Portal can reach the CPU continuously or only through the intended engineering conduit.
For a new S7-1500 deployment, full-access rights should be exceptional. An engineer who normally performs diagnostics should operate using read-oriented rights. Full access should be activated only for personnel and periods in which configuration or programming work actually requires it.
The network architecture remains necessary. TIA Portal should originate from controlled engineering systems and the PLC engineering path should be limited to those systems. Controller-native authorization is the final control, not a justification for permitting arbitrary OT endpoints to reach engineering services.
OPC UA: configure RBAC for UA operations, but do not mistake it for PLC programming security
OPC UA should be configured rigorously wherever it carries operational writes, configuration Methods, recipe changes, parameterization, or other privileged functions. The specification cleanly separates authentication from authorization and permits Roles to be mapped to permissions on Nodes. Role assignment can also incorporate user identity and application identity, while the role model supports restrictions associated with applications and endpoints.89 A sensible production OPC UA configuration is therefore:
- disable anonymous access where it is not explicitly required;
- use authenticated client applications;
- authenticate users where user attribution is required;
- separate
Observer,Operator,Engineer,ConfigureAdminandSecurityAdmin-type responsibilities according to actual operational need; - make process values read-only unless the consuming application requires writes;
- restrict Methods according to role;
- restrict privileged roles by application and endpoint where supported;
- separate security administration from ordinary engineering.
The important limitation is architectural: OPC UA protects only the operations that traverse OPC UA. If TIA Portal, Studio 5000 or another vendor engineering suite uses a different protocol to download controller logic, OPC UA RBAC has no direct authority over that programming transaction.
Do not therefore accept OPC UA secured with certificates and RBAC as evidence that PLC programming is secured. The assessment must ask which protocol performs the actual project download, online edit, firmware operation or CPU mode transition and identify the authorization mechanism on that path.
Choose the enforcement model explicitly
The final design decision can therefore be made using a simple hierarchy:
- Modern controller with usable native RBAC: enforce authorization in the controller, then reinforce it with dedicated engineering endpoints and restricted conduits.
- Controller with strong engineering-platform security but limited native function rights: use engineering-platform authorization plus endpoint and network controls, and make broad controller credentials inaccessible outside that path.
- Controller with coarse password protection: treat possession of the password as highly privileged, vault it where operationally feasible, constrain the EWS-to-controller path, and make programming availability temporary.
- Legacy unauthenticated write protocol: treat allowed write-capable network paths as authority and aggressively minimize them.
No product feature removes the need to determine the actual authority chain. The design is complete only when the architect can identify the component that denies each prohibited operation and demonstrate that compromising an earlier component does not automatically bypass that decision.
Make Programming a Controlled Maintenance State
The most effective practical improvement in many PLC environments is not another authentication mechanism. It is to stop treating programming as a permanently available production service. A production plant usually needs continuous control communication. It rarely needs continuous project download, online editing, firmware maintenance, forcing or security administration.
The preferred operating model is therefore to maintain two distinct security states:
The implementation does not require every controller to understand maintenance tickets or time windows. The workflow can be distributed across PAM, jump infrastructure, firewall policy, engineering workstations, controller roles and operational procedure. What matters is that opening the programming capability is deliberate and that closing it is equally explicit.
Step 1: define the exact change before opening the path
Before privileged PLC access is enabled, identify:
- responsible engineer;
- approved engineering workstation;
- target controller or controller set;
- project or configuration baseline;
- required operation;
- maintenance or change reference;
- expected CPU/process state;
- start and expiry of the intervention;
- recovery or rollback method.
Do not open generic plant-wide programming access for a change affecting one controller. Likewise, do not enable firmware authority for an application-logic modification or enable security administration for a routine project download. The requested capability should correspond to the actual intervention.
Step 2: activate the minimum engineering path
The programming window should then activate only the communications required for the work. A typical remote engineering path should be engineer → MFA/PAM → OT jump environment → approved EWS → industrial firewall → selected PLC. The external engineer’s laptop should not become a directly trusted controller client.
Where the EWS normally has diagnostic reachability but not programming reachability, activate only the additional services or controller paths required for the change. Where protocol separation is not technically feasible, use the strongest available upstream and controller-native controls to restrict who can exploit the broader session. Temporary rules should have an explicit expiry. A firewall rule created for commissioning and left indefinitely in production is not a programming window; it is standing authority.
Step 3: elevate the required controller privilege
Network admission should be followed by operation-specific privilege. Use the narrowest available controller or engineering-platform role. If the intervention requires block download, do not elevate the engineer to security administrator. If it requires a CPU mode transition, do not automatically add firmware authority. Where the product exposes only Full Access, document that limitation and compensate for it by making the privilege:
- available only to a named user;
- usable only from the approved EWS;
- limited to the required controller;
- active only for the maintenance period;
- monitored throughout the session.
For systems using shared or device-level credentials, retrieve or expose the credential only inside the controlled engineering workflow rather than distributing it permanently to engineers.
Step 4: establish the controller’s pre-change state
Before modifying the PLC, capture the state necessary to verify and recover the intervention. Depending on platform and criticality, this should include:
- current project/version or project comparison status;
- current CPU operating mode;
- active force state;
- relevant hardware and communications configuration;
- controller diagnostics;
- firmware revision;
- security configuration where the intervention could affect it;
- recoverable backup or approved offline project.
This step has two purposes:
- It prevents an engineer from assuming that the online PLC is already identical to the repository baseline.
- It establishes evidence for determining exactly what changed during the intervention.
Step 5: perform and monitor the state-changing operation
The actual engineering operation should be observable at more than one layer where technically possible. Useful evidence sources include:
- PAM or remote-session logs;
- jump-host authentication logs;
- Engineering Workstation logs;
- engineering-platform audit records;
- industrial firewall connections;
- controller security logs;
- controller-native change detection.
Controller-proximate evidence is especially valuable. For example, current Logix change-detection facilities can identify events such as project downloads, online edits, forces, firmware attempts, mode changes and program or task-property modifications.13
Monitoring should focus on the operation, not merely on session establishment. Engineer logged into EWS is useful evidence. PLC-17 program changed is the security-significant evidence. The two should be correlatable.
Step 6: verify the resulting controller, not merely the transaction
A successful download does not prove that the correct project was downloaded. After the intervention, compare the resulting online controller state with the approved intended state. At minimum, verify where applicable:
- expected project or block version;
- online/offline consistency;
- expected CPU mode;
- no unintended forces;
- expected hardware and communications configuration;
- expected firmware version;
- expected safety state or signature;
- unchanged users, roles and protection settings unless modification was authorized;
- absence of unexpected controller faults.
For online edits, ensure that no pending, test or unassembled edits remain in an unintended state. The reference used for this verification should be controlled independently of the individual engineering workstation. If malware on the EWS can alter both the PLC and the only copy of the “approved” project, post-change comparison provides little independent assurance.
Treat emergency access as an accelerated version of the same model
Break-glass engineering access may be necessary where delaying intervention could threaten safety, availability or equipment integrity. It should not become an undocumented bypass around the architecture. A good emergency mechanism relaxes approval latency, not identity, attribution or subsequent verification. Emergency access should therefore still establish:
- who activated it;
- from which engineering endpoint;
- which controllers became accessible;
- when access began;
- which privileged operations occurred;
- when access was revoked;
- what controller state resulted.
Post-event review can occur after the urgent intervention, but the technical evidence must survive it. The final operational principle is simple:
A production PLC should not be perpetually programmable merely because somebody may eventually need to program it.
Programming authority should be deliberately assembled for the required maintenance activity from a named engineer, a controlled engineering endpoint, a constrained network path, the minimum controller privilege and a defined target. When the work finishes, those conditions should be dismantled and the resulting controller state independently verified. That is the practical difference between protecting access to a PLC and controlling programming authority.
Verify the Programming Boundary, Not the Security Features
A PLC programming architecture should be accepted on demonstrated behavior, not on the presence of security features. A design can contain firewalls, MFA, certificates, RBAC, a jump host, an Engineering Workstation, and controller passwords and still leave programming authority effectively unrestricted. The relevant acceptance question is whether those mechanisms, in their deployed configuration, actually prevent unauthorized controller operations. For this reason, FAT, SAT, cybersecurity commissioning, and periodic OT security assessments should test the complete engineering path.
The minimum test object is not the PLC alone. It is: identity → access infrastructure → engineering endpoint → network conduit → engineering protocol → effective authorization point → controller state. Every control claimed by the design should be observable somewhere on that path.
Prove the normal production state first
Testing should begin with the plant in its normal security configuration, outside a programming window. The expected result is that required production communications continue while high-consequence engineering operations are unavailable. Verify at least that:
- HMIs retain required monitoring and control functions;
- SCADA, DCS, historian and supervisory communications operate normally;
- peer-controller communications remain unaffected;
- diagnostic access works only from authorized sources where required;
- an ordinary workstation cannot initiate PLC engineering;
- a corporate endpoint containing vendor engineering software cannot become a programming endpoint;
- vendor remote access does not independently provide a controller path;
- unused or temporary commissioning routes are absent;
- accounts intended only for observation cannot modify the controller;
- programming credentials are not permanently exposed to ordinary users.
This test is important because it proves that removing standing programming authority does not require impairing production operation. If unrestricted project download remains possible in this normal state simply because an engineer is logged onto the engineering workstation, the architecture has not implemented temporary programming authority.
Test the programming window as a state transition
Programming-window controls should also be tested as a sequence rather than as an administrative concept:
- Start from the production state and verify that the required operation is impossible.
- Open the approved engineering path.
- Verify that only the specified:
- user;
- engineering endpoint;
- controller;
- operation;
- and maintenance period have become available.
- Perform the approved operation.
- Close the intervention.
- Then repeat the access test and prove that the temporary authority has disappeared.
This final denial test is particularly important. Temporary firewall rules, PAM entitlements, remote sessions, controller roles, and engineering accounts frequently survive maintenance because functionality testing normally stops once the change itself has succeeded. Security acceptance should continue until the environment has returned to the intended production state.
Verify engineering-endpoint containment
The Engineering Workstation should be treated as a likely future compromise point during testing. The assessor should determine what authority is obtained if the EWS itself is assumed compromised. Check whether the workstation can:
- reach all PLCs or only its assigned controller population;
- retrieve reusable credentials for other controller groups;
- administer firewall or remote-access infrastructure;
- modify the authoritative project repository;
- disable controller security;
- reach safety controllers unnecessarily;
- connect directly to unrelated OT zones;
- access the Internet without mediation;
- communicate with corporate endpoints outside required management paths.
The preferred result is that compromise of the EWS creates a serious but bounded incident. It should not automatically create programming authority over the entire plant. This is one of the strongest tests of whether the architecture contains genuine independent controls or merely several security layers surrounding one highly trusted workstation.
Verify the controller after the test
Every successful state-changing test should finish with controller-state verification. Depending on platform and operational criticality, confirm:
- deployed project or program identity;
- expected online/offline comparison;
- CPU operating mode;
- force state;
- controller diagnostics;
- hardware and communications configuration;
- firmware revision;
- safety signatures or locks where applicable;
- controller users and roles;
- certificate and trust configuration;
- absence of unintended residual engineering state.
The baseline used for verification should be under controlled configuration management. It should not exist solely on the workstation that performed the change. This provides a second trust source: the device that modifies the PLC is not also the only authority determining what the PLC was supposed to contain.
Require evidence that can reconstruct a programming event
The final acceptance criterion is forensic.
For a representative programming operation, the organization should be able to reconstruct:
- who requested or performed the intervention;
- how the engineer authenticated;
- which engineering workstation was used;
- which PLC was targeted;
- when the exceptional engineering capability was activated;
- what privileged operation occurred;
- whether the controller accepted or rejected it;
- what controller state resulted;
- when the temporary authority was removed.
Not every piece of evidence must come from the PLC. In many real systems that is impossible. PAM, jump-host logs, EWS records, firewall telemetry, engineering-software audit data, controller logs, change-detection mechanisms, and the change-management system can collectively provide the chain.
What should be avoided is an architecture in which the only available evidence is: EWS-01 communicated with PLC-17. That proves network activity. It says almost nothing about programming authority.
A Reference PLC Programming Security Baseline
The most useful way to conclude the analysis is to state what a defensible production configuration should look like. For a modern PLC installation, the target baseline is:
- Separate normal control from engineering. Process communication remains continuously available as operationally required. Project download, firmware, mode-change, forcing, and security-administration capabilities do not become permanent side effects of that connectivity.
- Allow programming only from controlled engineering endpoints. Vendor engineering software on an arbitrary OT or corporate laptop must not be sufficient to create a programming path.
- Preserve named identity toward the controller. Use individual accounts and controller-native identity where supported. Avoid collapsing multiple engineers and multiple PLCs behind one reusable privileged credential.
- Use controller-native authorization as the final enforcement point where available. Network segmentation controls who can present a request. The controller should still reject operations the current identity is not authorized to perform.
- Separate controller privileges. Diagnostics, logic modification, CPU mode control, forces, firmware maintenance, and security administration should not automatically form one
Full Accessprivilege. - Restrict controller scope. Programming authority over one unit, line, cell, or plant area should not automatically imply programming authority over the rest of the controller estate.
- Make high-consequence authority temporary. Project modification, forcing, mode changes, firmware maintenance, and security administration should be activated for an engineering activity rather than permanently available.
- Treat the Engineering Workstation as privileged OT infrastructure. Harden it, restrict its connectivity, control software and project content, protect credentials, and assume its compromise in the architecture threat model.
- Monitor controller-changing operations. A network session is not the event of interest. Downloads, edits, mode changes, forces, firmware operations and security modifications are.
- Verify and revoke. After engineering work, verify the actual controller state and explicitly remove the additional authority that enabled the intervention.
For brownfield systems, some of these controls will not exist natively. A PLC with no named-user model cannot suddenly acquire modern RBAC through a firewall. A controller with one full-access password cannot distinguish firmware authority from logic modification. An unauthenticated industrial protocol cannot attribute a write to a human user.
The correct response is not to describe these limitations as equivalent security controls. It is to move the missing enforcement outward and document the residual risk. The hierarchy should remain:
controller-native enforcement where possible
engineering-platform enforcement where available
dedicated endpoint and credential controls
restricted network conduits
temporary operational activation
monitoring and independent state verification
The weaker the controller, the more deliberate the surrounding engineering architecture must become. This also provides a useful procurement criterion. Asking whether a PLC supports cybersecurity is nearly meaningless. Asking whether it supports TLS or RBAC is better, but still insufficient. For each proposed controller platform, ask instead:
- Can individual engineering users be identified?
- Can engineering endpoints or applications be authenticated?
- Can read access be separated from modification?
- Can logic modification be separated from CPU mode changes?
- Can forces be controlled independently?
- Can firmware authority be separated from application programming?
- Can security administration be assigned to another role?
- Can controller privileges be scoped to individual assets?
- Can privileged changes be logged?
- Can the deployed state be independently verified?
- Can the production system operate normally while programming authority is disabled?
Those answers describe the real security capability of the engineering platform far more accurately than the protocol names on its datasheet. The central design question is therefore no longer:
Who can connect to the PLC?
It is:
Under the normal production configuration, what must deliberately change before a named engineer on an approved engineering endpoint can modify this specific controller, and what prevents every other combination of identity, endpoint, target and operation from doing the same?
If that question has a precise technical answer, the PLC has an identifiable programming boundary. If the answer is simply the engineering network is trusted, it does not.
See also cybersecurity longforms
VEX Standards from First Principles
The December 2025 Cyberattack on Poland’s Energy Sector
See also enterprise architecture longforms
ArchiMate 4 and the Cartography of Complexity
Process Mining in Manufacturing with Purchased Components and Variable Lead Times
Process Mining as Computational Process Intelligence
See also enterprise risk management longforms
Operational Technology in the Crosshairs: What the 2025–2026 Attacks Reveal About Industrial Cyber Risk
Measuring Cyber Risk in the Italian Corporate Sector
When Digital Trust Expires: Quantum Computing and the Collapse of Signature-Based Security
See also posts
A CVE Is Not an Article 14 Report: What Actually Makes a Vulnerability Reportable?
Does the CRA Require Vulnerability Scanning from 11 September 2026? No, but It Does Require a Reporting Decision Process
After the Hugging Face Intrusion: What the New Technical Record Changes
The Withdrawal of HAWK
AI Mathematics Crosses the Systems Boundary
When Digital Trust Gets a Deadline
Footnotes
OPC Foundation. (2025). OPC 10000-2: OPC Unified Architecture — Part 2: Security Model, Version 1.05.06. OPC Foundation. Specification↩︎
OPC Foundation. (2025). OPC 10000-18: OPC Unified Architecture — Part 18: Role-Based Security, Version 1.05.06. OPC Foundation. Specification↩︎
Rockwell Automation. (n.d.). Finalize All Edits in Program/Phase Command. Studio 5000 Logix Designer Online Help. Official documentation↩︎
Siemens AG. (2024). SIMATIC S7-1500, ET 200MP Automation System: System Manual — Local User Management. Siemens Industry Online Support. Official documentation↩︎
Siemens AG. (2024). SIMATIC S7-1500, ET 200MP Automation System: System Manual — Local User Management. Siemens Industry Online Support. Official documentation↩︎
Rockwell Automation. (n.d.). Use FactoryTalk Security with the Logix Designer Application. Studio 5000 Logix Designer Online Help. Official documentation↩︎
Rockwell Automation. (n.d.). Change Detection. ControlLogix 5580 and GuardLogix 5580 Controllers Documentation. Official documentation↩︎
OPC Foundation. (2025). OPC 10000-2: OPC Unified Architecture — Part 2: Security Model, Version 1.05.06. OPC Foundation. Specification↩︎
OPC Foundation. (2025). OPC 10000-18: OPC Unified Architecture — Part 18: Role-Based Security, Version 1.05.06. OPC Foundation. Specification↩︎
ODVA. (n.d.). CIP Security. ODVA Technologies. Official technical documentation↩︎
Modbus Organization. (2012). MODBUS Application Protocol Specification V1.1b3. Modbus Organization. Specification↩︎
Modbus Organization. (2021). MODBUS/TCP Security Protocol Specification, MB-TCP-Security-v36_2021-07-30. Modbus Organization. Specification↩︎
Rockwell Automation. (n.d.). Change Detection. ControlLogix 5580 and GuardLogix 5580 Controllers Documentation. Official documentation↩︎