Consolidate LDAP roles into OPC UA session roles with granular write permissions
Map LDAP groups to custom OPC UA role NodeIds on RoleBasedIdentity.GrantedRoleIds during authentication, replacing the username-to-role side cache. Split ReadWrite into WriteOperate/WriteTune/WriteConfigure so write access is gated per Galaxy security classification. AnonymousCanWrite now behaves consistently regardless of LDAP state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -130,21 +130,27 @@ When `Ldap.Enabled` is `true`, credentials are validated against the configured
|
||||
| `Ldap.ServiceAccountPassword` | `string` | `""` | Service account password |
|
||||
| `Ldap.TimeoutSeconds` | `int` | `5` | Connection timeout |
|
||||
| `Ldap.ReadOnlyGroup` | `string` | `ReadOnly` | LDAP group granting read-only access |
|
||||
| `Ldap.ReadWriteGroup` | `string` | `ReadWrite` | LDAP group granting read-write access |
|
||||
| `Ldap.WriteOperateGroup` | `string` | `WriteOperate` | LDAP group granting write access for FreeAccess/Operate attributes |
|
||||
| `Ldap.WriteTuneGroup` | `string` | `WriteTune` | LDAP group granting write access for Tune attributes |
|
||||
| `Ldap.WriteConfigureGroup` | `string` | `WriteConfigure` | LDAP group granting write access for Configure attributes |
|
||||
| `Ldap.AlarmAckGroup` | `string` | `AlarmAck` | LDAP group granting alarm acknowledgment |
|
||||
|
||||
#### Permission Model
|
||||
|
||||
When LDAP is enabled, authenticated users receive permissions based on their LDAP group membership:
|
||||
When LDAP is enabled, LDAP group membership is mapped to OPC UA session role NodeIds during authentication. All authenticated LDAP users can browse and read nodes regardless of group membership. Groups grant additional permissions:
|
||||
|
||||
| LDAP Group | Permission |
|
||||
|---|---|
|
||||
| ReadOnly | Browse and read nodes |
|
||||
| ReadWrite | Browse, read, and write tag values |
|
||||
| ReadOnly | No additional permissions (read-only access) |
|
||||
| WriteOperate | Write FreeAccess and Operate attributes |
|
||||
| WriteTune | Write Tune attributes |
|
||||
| WriteConfigure | Write Configure attributes |
|
||||
| AlarmAck | Acknowledge alarms |
|
||||
|
||||
Users can belong to multiple groups. The `admin` user in the default GLAuth configuration belongs to all three groups.
|
||||
|
||||
Write access depends on both the user's role and the Galaxy attribute's security classification. See the [Effective Permission Matrix](Security.md#effective-permission-matrix) in the Security Guide for the full breakdown.
|
||||
|
||||
Example configuration:
|
||||
|
||||
```json
|
||||
@@ -161,7 +167,9 @@ Example configuration:
|
||||
"ServiceAccountPassword": "serviceaccount123",
|
||||
"TimeoutSeconds": 5,
|
||||
"ReadOnlyGroup": "ReadOnly",
|
||||
"ReadWriteGroup": "ReadWrite",
|
||||
"WriteOperateGroup": "WriteOperate",
|
||||
"WriteTuneGroup": "WriteTune",
|
||||
"WriteConfigureGroup": "WriteConfigure",
|
||||
"AlarmAckGroup": "AlarmAck"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user