feat(security): add Operator + Verifier roles + policies + LDAP mapping options (T14a)
This commit is contained in:
@@ -28,8 +28,16 @@ namespace ZB.MOM.WW.ScadaBridge.Security;
|
||||
/// <item><description><c>AuditReadOnly</c> → <c>Viewer</c> (COLLAPSE — keeps
|
||||
/// audit-read + nav, loses bulk export, which it never had)</description></item>
|
||||
/// </list>
|
||||
/// <c>Operator</c> and <c>Engineer</c> exist in the canonical vocabulary but are
|
||||
/// unused by ScadaBridge, so they are intentionally not declared here.
|
||||
/// <c>Engineer</c> exists in the canonical vocabulary but is unused by
|
||||
/// ScadaBridge, so it is intentionally not declared here. <c>Operator</c> is
|
||||
/// now declared (M7-A3 / T14a) for the two-person Secured Writes feature.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Secured Writes (M7-A3 / T14a): <c>Operator</c> initiates a secured write and
|
||||
/// <c>Verifier</c> approves it — two distinct global roles so a single principal
|
||||
/// cannot both initiate and approve (separation of duties). Both are coarse
|
||||
/// global roles, matching the existing role model; site scoping (if any) is
|
||||
/// layered on at the LDAP-mapping level like the other roles.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public static class Roles
|
||||
@@ -39,7 +47,15 @@ public static class Roles
|
||||
public const string Deployer = "Deployer";
|
||||
public const string Viewer = "Viewer";
|
||||
|
||||
/// <summary>Initiates a two-person Secured Write (M7-A3 / T14a). Canonical
|
||||
/// vocabulary role; pairs with <see cref="Verifier"/> who approves.</summary>
|
||||
public const string Operator = "Operator";
|
||||
|
||||
/// <summary>Approves a two-person Secured Write (M7-A3 / T14a). Held by a
|
||||
/// principal distinct from the initiating <see cref="Operator"/>.</summary>
|
||||
public const string Verifier = "Verifier";
|
||||
|
||||
/// <summary>All declared ScadaBridge roles — the single source of truth for "all
|
||||
/// permissions" (e.g. the dev auto-login principal). Stays in sync if a role is added.</summary>
|
||||
public static readonly string[] All = [Administrator, Designer, Deployer, Viewer];
|
||||
public static readonly string[] All = [Administrator, Designer, Deployer, Viewer, Operator, Verifier];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user