Designed for Reliable Performance and Enterprise Security
FrameworX combines deterministic real-time performance with comprehensive security architecture. Built on the [Technology Foundation] of 100% managed .NET code, the platform delivers millisecond response times while maintaining defense-in-depth protection and full compliance capabilities.
Operational Excellence:
Layer | Optimization | Impact |
---|---|---|
Application | Efficient scripts, optimized queries | CPU usage |
Runtime | Thread pool tuning, memory management | Response time |
Database | Indexing, partitioning, archiving | Query speed |
Network | Compression, protocol selection | Bandwidth |
Hardware | CPU cores, RAM, SSD storage | Overall capacity |
Metric | Target | Measurement |
---|---|---|
Tag Update Rate | <100ms | Device to display. Test case: 100,000 Modbus tags in < 1s |
Alarm Response | <1 second | Condition to notification, keeping 1ms timestamp on logs |
Client Response | <200ms | User display action to feedback |
Displays Update | < 50ms | Code behind execution and realtime updates on diaplays |
Historian Write | <1 second | Tag change to storage, keeping 1ms timestamp on logs |
Failover Time | <5 seconds | Primary to standby |
(*) Those are expected numbers in a typical implementation. Exact metrics depending on solution design and hardware
Layer | Protection Level | Components |
---|---|---|
Layer 1: Network. Security | Perimeter defense |
|
Layer 2: Application Security | Access control |
|
Layer 3: Data Security | Information security |
|
Layer 4: Operational Security | Process integrity |
|
TSecureGateway enables secure data transfer across zones, bridging Level 2 (factory floor) to Level 4 (enterprise) while maintaining isolation and protection against threats.
Enterprise Integration | Native Options |
---|---|
|
|
Standard | Implementation | Key Features |
---|---|---|
ISA-95 | UNS design patterns | Enterprise/control integration model |
ISA-101 | HMI design compliance | Operator effectiveness standards |
FDA 21 CFR Part 11 | Electronic records/signatures | Audit trails, data integrity, validation |
High Performance HMI | Display design principles | Situational awareness, alarm management |
IEC 62443 | Cybersecurity guidelines | Security zones, defense in depth |
NERC-CIP | Critical infrastructure | Access control, monitoring, recovery |
Native Tool | Feature |
---|---|
JSON-Git Export | Human-readable diffs for Git integration |
Change Tracking | Keep track of changes at object level, with automated version numbering |
Cross Reference | Dependency analysis and automated rename for all configuration objects |
Build Procedure | Validation of all server scripts and all displays scripts |
Publish Procedure | Readonly deployment files for regulated areas |
Execution Profiles | Management for Development, Validation, Production and Custom environments. |
DevOps APIs | Programmatic control of configuration and execution |
Health Monitoring | Built-in runtime metrics and web dashboard |
Container Support | Docker deployment including support for App Hosting in Cisco Routers |
Execution Integrity | Built-in diagnostics to verify if running solution matches a given configuration. |
Feature | Specification | Benefit |
---|---|---|
Automatic Failover | <5 seconds switchover | Minimal disruption |
Data Synchronization | <5 seconds switchover | No data loss |
Client Reconnection | Transparent to operators | Continuous operation |
State Preservation | Full context maintained | Seamless recovery |
(*) Those are expected numbers in a typical implementation. Exact metrics depending on solution design and hardware
Supported Redundancy Modes:
"Overview"
Tagline: Designed for Reliable Performance
(Refer and link to the Technology Stack/Foundation as the number one importance on both performance and security
Enterprise Unlimited (Distributed) (*2)
100,000+
Enterprise Unlimited (Stand-alone)
15,000-100,000 I/O (*)
Enterprise Scaled
1,500 to 15,000 I/O
MachineHMI
Up to 1,000 I/O
Security and Reliability
We prioritize stability and security throughout our platform's design, from technology selection to module architecture.
Easy Configuration and Maintenance
Our platform offers secure, straightforward configuration and maintenance for various scenarios, ensuring scalability and consistency.
Operational Stability
Operational stability is guaranteed with our platform's 100% managed code implementation, featuring robust exception handling and seamless failure recovery.
Redundancy and Availability
For high availability, our platform offers redundancy with a proven hot-standby system for real-time databases, alarms, and historians, catering to diverse network setups.
The software platform has a range of security and compliance features that can be used to help organizations meet the requirements of FDA 21 CFR Part 11. It is important to note that compliance is an ongoing process, and therefore, organizations should regularly monitor and update their systems and policies to ensure adherence to the standards established by the FDA.
The platform was also designed following the applicable recommendations from NERC CIP, such as the CIP-007-1 - Cyber Security-System Management.
Title 21 CFR Part 11 is the part of Title 21 of the Code of Federal Regulations that establishes the United States Food and Drug Administration (FDA) regulations on electronic records and electronic signatures (ERES).
Part 11, as it is commonly called, defines the criteria under which electronic records and electronic signatures are considered trustworthy, reliable, and equivalent to paper records.
Listed below and described are some security-related features available in the product:
|
For detailed Explanation on how to add security management in project consist with these rules, go to the page FDA 21 CRT Compliance page.
For addition information on NERC CIP-007-1 - Cyber Security-System Management, go to the page NERC CIP Overview.
FrameworX development is built on the .NET framework, following strict security protocols. Each module adheres to specific guidelines aligned with its function, such as FDA compliance for the Alarms module and adherence to standards like IEC61850 for modules handling electrical device communications.
Below are the main security topics along with essential details about each.
Security implementation is ingrained at the core level rather than being applied externally. The platform's modules incorporate built-in security components designed from their very core. For more detailed insights into security in .NET, refer to Microsoft's documentation available at: Microsoft .NET Security Information |
HTML5 provides flexibility in choosing between "http" or "https/ssl" protocols.
The production servers will use HTTPS, but the allowing http connection on development, simplifies the early state of the projects.
The HTTPS uses TLS security.
The TSecureGateway is a crucial part of our platform, enabling smooth data transfer across different security network zones. It serves as a bridge, moving data from lower levels, like the factory floor (Level 2), to higher levels such as the enterprise (Level 4).
Acting as a protective barrier, the TSecureGateway shields internal networks from insecure traffic. Enterprises rely on it to guard employees and users against potential threats from malicious web traffic, websites, viruses, and malware.
License/Softkey
The "License/Softkey" feature employs the .NET class System.Security.Cryptography.Rijndael, utilizing symmetric encryption with a key size of 256 bits.
Digital signature
All assemblies created by Tatsoft are signed digitally.
Project format (Configuration protection)
All project settings, including security measures like cryptography, power recovery, and user/password protections, are stored in a relational database (.dbsln file). The source code and compiled binaries for Scripts and Displays are also stored in this file. This centralized storage method streamlines project management and deployment, making access and maintenance easier.
Our platform offers integration with various systems for user authentication:
|
Active-Directory / Windows Authentication
Enabling Windows Authentication bypasses the project's configured user list, relying on Windows policies instead. Windows manages user authentication directly, utilizing the currently logged-in Windows user for system access.
LDAP
When LDAP is used, the project ignores its configured user list and relies on policies managed by Windows and the LDAP Server. Authentication is handled by both Windows and the LDAP Server, with the external user logged into the LDAP Server being utilized within the system.
Runtime Users
The system dynamically generates users and stores their credentials in SQL databases. It seamlessly integrates with Active Directory or third-party systems to retrieve users, enabling integrated security and unified login capabilities.
Group and User Permissions
Our users have complete flexibility to define privileges based on groups or specific individuals. Permissions can be set globally or linked to particular displays, objects, or input actions, offering granular control over access levels.
User Policies
Our platform offers a comprehensive array of user management features, including identification policies, session duration control, automated logoff mechanisms, electronic signature capabilities, and robust audit-trail functionality.
In database operations involving stored procedures, there is a significant concern about SQL injection. SQL injection can occur if parameters are passed as plain text within SQL statements, which could allow malicious code to be executed. To prevent this, we use the .NET API, where parameters are added to a command object’s parameter list. This approach makes SQL injection impossible by safely handling user input.
Regularly the platform is accessed by Veracode, or third-party companies, on penetration testing report, gap analysis, and various other topics.
Any issues that would prevent a 100% approval are corrected.
Security & Users management in FrameworX 10.1 provides comprehensive access control, authentication, authorization, and audit capabilities to protect your industrial systems. This guide covers user management, role-based security, integration with enterprise authentication systems, and cybersecurity best practices following industry standards including ISA-99/IEC 62443.
Security Architecture
Account Type | Purpose | Permissions | Best Practice |
---|---|---|---|
Administrator | System configuration | Full access | Limit to 2-3 users |
Engineer | Solution development | Design, configure | Individual accounts |
Supervisor | Operations oversight | View all, control critical | Shift-based |
Operator | Daily operations | View assigned, basic control | Area-specific |
Viewer | Monitoring only | Read-only access | Contractors, visitors |
User Configuration:
??? Identity
? ??? Username: john.smith
? ??? Full Name: John Smith
? ??? Email: jsmith@company.com
? ??? Employee ID: EMP001
??? Authentication
? ??? Type: Forms / Windows / Certificate
? ??? Password: (if Forms)
? ??? Domain: COMPANY (if Windows)
??? Authorization
? ??? Role: Operator
? ??? Groups: [Production, Maintenance]
? ??? Areas: [Line1, Line2]
??? Settings
??? Account Enabled: Yes
??? Password Expires: 90 days
??? Session Timeout: 20 minutes
??? Concurrent Sessions: 1
csv
# Users.csv format
Username,FullName,Email,Role,Groups,Password
jsmith,John Smith,jsmith@company.com,Operator,"Production,Line1",TempPass123!
mjones,Mary Jones,mjones@company.com,Supervisor,"All",TempPass456!
bwilson,Bob Wilson,bwilson@company.com,Engineer,"Engineering",TempPass789!
Import process:
Policy | Setting | Recommended | Maximum Security |
---|---|---|---|
Minimum Length | Characters | 8 | 12+ |
Complexity | Requirements | 3 of 4 types | All 4 types |
History | Previous passwords | 5 | 12 |
Maximum Age | Days | 90 | 60 |
Minimum Age | Days | 1 | 2 |
Lockout Threshold | Failed attempts | 5 | 3 |
Lockout Duration | Minutes | 30 | 60 |
Requirements (3 of 4):
? Uppercase letters (A-Z)
? Lowercase letters (a-z)
? Numbers (0-9)
? Special characters (!@#$%^&*)
Additional Rules:
? Cannot contain username
? Cannot contain common words
? No sequential characters (123, abc)
? No repeated characters (aaa)
Administrator (Level 0)
??? Full system access
??? User management
??? Security configuration
??? All operations
Engineer (Level 100)
??? Solution configuration
??? Display design
??? Script development
??? No user management
Supervisor (Level 200)
??? All operator functions
??? Setpoint changes
??? Alarm management
??? Report generation
Operator (Level 300)
??? View displays
??? Acknowledge alarms
??? Basic control
??? No configuration
Viewer (Level 999)
??? View only
??? No control
??? No acknowledgment
??? No configuration
xml
<!-- Custom Role Definition -->
<Role Name="MaintenanceTech" Level="250">
<Permissions>
<!-- Display Permissions -->
<Display View="All" Control="Maintenance" />
<!-- Tag Permissions -->
<Tags Read="All" Write="Maintenance/*" />
<!-- Alarm Permissions -->
<Alarms View="All" Acknowledge="Maintenance" Configure="None" />
<!-- Report Permissions -->
<Reports View="All" Generate="Maintenance" Configure="None" />
<!-- Script Permissions -->
<Scripts Execute="Maintenance" Develop="None" />
<!-- System Permissions -->
<System Backup="Yes" Restore="No" Configure="No" />
</Permissions>
<Restrictions>
<TimeWindow Start="06:00" End="18:00" />
<DaysOfWeek>Monday,Tuesday,Wednesday,Thursday,Friday</DaysOfWeek>
<IPRange>192.168.1.0/24</IPRange>
</Restrictions>
</Role>
Feature | Admin | Engineer | Supervisor | Operator | Viewer |
---|---|---|---|---|---|
View Displays | ? | ? | ? | ? | ? |
Control Equipment | ? | ? | ? | ? | ? |
Change Setpoints | ? | ? | ? | ? | ? |
Acknowledge Alarms | ? | ? | ? | ? | ? |
Configure Alarms | ? | ? | ? | ? | ? |
Design Displays | ? | ? | ? | ? | ? |
Write Scripts | ? | ? | ? | ? | ? |
Manage Users | ? | ? | ? | ? | ? |
System Config | ? | ? | ? | ? | ? |
Integration with Active Directory:
xml
<Authentication Type="Windows">
<Domain>COMPANY.LOCAL</Domain>
<DefaultDomain>COMPANY</DefaultDomain>
<AllowLocalAccounts>false</AllowLocalAccounts>
<GroupMappings>
<Map ADGroup="Domain\SCADA_Admins" Role="Administrator" />
<Map ADGroup="Domain\SCADA_Engineers" Role="Engineer" />
<Map ADGroup="Domain\SCADA_Operators" Role="Operator" />
</GroupMappings>
<UserSync>
<Enabled>true</Enabled>
<Schedule>0 2 * * *</Schedule> <!-- Daily at 2 AM -->
<BaseDN>OU=SCADA,DC=company,DC=local</BaseDN>
</UserSync>
</Authentication>
Built-in user database:
csharp
// Login validation
public bool ValidateLogin(string username, string password)
{
// Hash password
string hashedPassword = HashPassword(password);
// Check database
var user = GetUser(username);
if (user != null && user.PasswordHash == hashedPassword)
{
// Check account status
if (!user.IsEnabled)
return LogFailure("Account disabled");
if (user.IsLocked)
return LogFailure("Account locked");
if (user.PasswordExpired)
return RequirePasswordChange();
// Success
CreateSession(user);
LogSuccess(user);
return true;
}
// Failed
IncrementFailedAttempts(username);
return false;
}
Smart card and certificate-based:
xml
<Authentication Type="Certificate">
<TrustedRootCA>CN=Company Root CA</TrustedRootCA>
<RequiredFields>
<Field>SubjectName</Field>
<Field>Thumbprint</Field>
</RequiredFields>
<Mappings>
<Map Certificate="CN=John Smith" User="jsmith" />
<Map Certificate="OU=Engineering" Role="Engineer" />
</Mappings>
<Validation>
<CheckRevocation>true</CheckRevocation>
<RequireSmartCard>true</RequireSmartCard>
</Validation>
</Authentication>
csharp
// 2FA Implementation
public class TwoFactorAuth
{
public bool ValidateLogin(string username, string password, string token)
{
// First factor - password
if (!ValidatePassword(username, password))
return false;
// Second factor - token
if (!ValidateToken(username, token))
return false;
return true;
}
private bool ValidateToken(string username, string token)
{
// Time-based OTP (TOTP)
var secret = GetUserSecret(username);
var totp = new Totp(secret);
return totp.VerifyTotp(token, out long timeStepMatched);
}
}
xml
<!-- Tag Security Configuration -->
<TagSecurity>
<Tag Name="Production.Setpoint">
<Read>Operator, Supervisor, Engineer, Administrator</Read>
<Write>Supervisor, Engineer, Administrator</Write>
</Tag>
<Tag Name="Maintenance.*">
<Read>All</Read>
<Write>MaintenanceTech, Engineer, Administrator</Write>
</Tag>
<Tag Name="Security.*">
<Read>Administrator</Read>
<Write>Administrator</Write>
</Tag>
</TagSecurity>
xml
<!-- Display Access Control -->
<DisplaySecurity>
<Display Name="Overview">
<View>All</View>
<Elements>
<Button Name="StartProcess" Roles="Operator,Supervisor" />
<Button Name="EmergencyStop" Roles="All" />
<Input Name="Setpoint" Roles="Supervisor,Engineer" />
</Elements>
</Display>
<Display Name="Engineering">
<View>Engineer, Administrator</View>
<Control>Engineer, Administrator</Control>
</Display>
<Display Name="UserManagement">
<View>Administrator</View>
<Control>Administrator</Control>
</Display>
</DisplaySecurity>
Plant Security Zones:
??? Area 1 (Production)
? ??? Line 1
? ? ??? Operators: [User1, User2]
? ? ??? Supervisor: [Super1]
? ??? Line 2
? ??? Operators: [User3, User4]
? ??? Supervisor: [Super1]
??? Area 2 (Packaging)
? ??? Operators: [User5, User6]
? ??? Supervisor: [Super2]
??? Area 3 (Utilities)
??? Operators: [User7]
??? Supervisor: [Super3]
xml
<AuditConfiguration>
<General>
<Enabled>true</Enabled>
<Storage>Database</Storage>
<Retention>7 years</Retention>
</General>
<Events>
<Login>true</Login>
<Logout>true</Logout>
<FailedLogin>true</FailedLogin>
<TagWrite>true</TagWrite>
<AlarmAck>true</AlarmAck>
<SetpointChange>true</SetpointChange>
<ConfigChange>true</ConfigChange>
<UserModification>true</UserModification>
</Events>
<Details>
<IncludeOldValue>true</IncludeOldValue>
<IncludeNewValue>true</IncludeNewValue>
<IncludeWorkstation>true</IncludeWorkstation>
<IncludeTimestamp>true</IncludeTimestamp>
</Details>
</AuditConfiguration>
sql
CREATE TABLE AuditLog (
ID BIGINT IDENTITY PRIMARY KEY,
Timestamp DATETIME2 NOT NULL,
Username NVARCHAR(50) NOT NULL,
FullName NVARCHAR(100),
Workstation NVARCHAR(50),
IPAddress NVARCHAR(45),
Action NVARCHAR(50) NOT NULL,
ObjectType NVARCHAR(50),
ObjectName NVARCHAR(255),
OldValue NVARCHAR(MAX),
NewValue NVARCHAR(MAX),
Result NVARCHAR(20),
Comments NVARCHAR(MAX),
Signature VARBINARY(256)
);
-- Index for performance
CREATE INDEX IX_AuditLog_Timestamp ON AuditLog(Timestamp);
CREATE INDEX IX_AuditLog_Username ON AuditLog(Username);
CREATE INDEX IX_AuditLog_Action ON AuditLog(Action);
Electronic signatures and records:
csharp
public class Part11Compliance
{
public void RecordChange(string tagName, object oldValue, object newValue)
{
// Require authentication
var credentials = RequestCredentials();
if (!ValidateCredentials(credentials))
throw new SecurityException("Invalid credentials");
// Require reason
string reason = RequestReason();
if (string.IsNullOrEmpty(reason))
throw new ValidationException("Reason required");
// Create audit record
var audit = new AuditRecord
{
Timestamp = DateTime.UtcNow,
Username = credentials.Username,
Action = "Tag Modification",
TagName = tagName,
OldValue = oldValue,
NewValue = newValue,
Reason = reason,
ElectronicSignature = GenerateSignature(credentials)
};
// Store with integrity check
StoreAuditRecord(audit);
}
private byte[] GenerateSignature(Credentials creds)
{
// Generate cryptographic signature
using (var rsa = RSA.Create())
{
var data = Encoding.UTF8.GetBytes($"{creds.Username}:{DateTime.UtcNow}");
return rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
}
}
xml
<SecuritySettings>
<!-- Session Management -->
<Sessions>
<Timeout>20</Timeout> <!-- Minutes -->
<MaxConcurrent>1</MaxConcurrent>
<ExtendOnActivity>true</ExtendOnActivity>
<WarningBefore>5</WarningBefore> <!-- Minutes -->
</Sessions>
<!-- Communication Security -->
<Communication>
<RequireEncryption>true</RequireEncryption>
<TLSVersion>1.2</TLSVersion>
<CipherSuites>
<Suite>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</Suite>
<Suite>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</Suite>
</CipherSuites>
</Communication>
<!-- Client Restrictions -->
<ClientRestrictions>
<AllowedIPs>
<Range>192.168.1.0/24</Range>
<Range>10.0.0.0/8</Range>
</AllowedIPs>
<BlockedIPs>
<IP>192.168.1.99</IP>
</BlockedIPs>
</ClientRestrictions>
</SecuritySettings>
Security Status Dashboard
????????????????????????????????????????????????
? Current Sessions: 12 ?
? Failed Logins (24h): 3 ?
? Configuration Changes (24h): 2 ?
? Suspicious Activities: 0 ?
????????????????????????????????????????????????
? Recent Security Events: ?
? 10:23 - User login: jsmith ?
? 10:15 - Failed login: unknown ?
? 09:45 - Password changed: mjones ?
? 09:30 - Role modified: Operator ?
????????????????????????????????????????????????
sql
-- Failed login attempts report
SELECT
Timestamp,
Username,
IPAddress,
COUNT(*) as Attempts
FROM SecurityLog
WHERE Action = 'Login Failed'
AND Timestamp > DATEADD(day, -7, GETDATE())
GROUP BY Timestamp, Username, IPAddress
HAVING COUNT(*) > 3
ORDER BY Timestamp DESC;
-- Privilege usage report
SELECT
Username,
Action,
COUNT(*) as Count
FROM AuditLog
WHERE Action IN ('Setpoint Change', 'Force Value', 'Config Change')
AND Timestamp > DATEADD(month, -1, GETDATE())
GROUP BY Username, Action
ORDER BY Count DESC;
Incident Detected
?
?
Classify Severity
?
??? Critical: Immediate response
??? High: Within 1 hour
??? Medium: Within 4 hours
??? Low: Next business day
?
?
Contain Threat
?
??? Isolate affected systems
??? Disable compromised accounts
??? Block suspicious IPs
?
?
Investigate
?
??? Review logs
??? Identify root cause
??? Assess damage
?
?
Remediate
?
??? Apply patches
??? Reset credentials
??? Restore from backup
?
?
Document & Learn
Issue | Possible Cause | Solution |
---|---|---|
Cannot login | Account locked | Check failed attempts, unlock account |
Access denied | Insufficient permissions | Verify role assignments |
Session timeout | Inactivity | Adjust timeout settings |
Certificate error | Expired certificate | Renew certificates |
AD sync failing | Network/credentials | Verify domain connectivity |
Audit logs missing | Storage full | Archive old logs |
Slow authentication | Network latency | Check DC connectivity |
<details> <summary>Structured Information for AI Tools</summary>
json
{
"page": "Security & Users",
"type": "Security Reference",
"purpose": "Comprehensive security and user management documentation",
"sections": {
"architecture": ["Defense in depth", "Security zones", "ISA-99/IEC 62443"],
"userManagement": ["Account types", "Password policies", "Bulk import"],
"authentication": ["Windows/AD", "Forms", "Certificates", "Two-factor"],
"authorization": ["RBAC", "Tag security", "Display security", "Areas"],
"compliance": ["Audit trail", "21 CFR Part 11", "Electronic signatures"],
"monitoring": ["Real-time dashboard", "Security reports", "Incident response"]
},
"standards": {
"industrial": "ISA-99/IEC 62443",
"regulatory": "21 CFR Part 11",
"enterprise": "Active Directory, LDAP"
},
"bestPractices": [
"Least privilege principle",
"Individual accounts",
"Strong passwords",
"Regular audits",
"Comprehensive logging"
]
}
</details>