Safeguard NTFS AD group reuse
This commit is contained in:
@@ -144,6 +144,8 @@ namespace C4IT.LIAM
|
||||
private const string AdditionalConfigurationGroupNameSanitizeReplacementKey = "NtfsGroupNameSanitizeReplacement";
|
||||
private const string AdditionalConfigurationPreserveAdGroupNameCaseKey = "PreserveNtfsAdGroupNameCase";
|
||||
private const string AdditionalConfigurationAdDomainControllersKey = "NtfsAdDomainControllers";
|
||||
private const string AdditionalConfigurationAdGroupReuseModeKey = "NtfsAdGroupReuseMode";
|
||||
private const string AdditionalConfigurationAdGroupMarkerBackfillKey = "NtfsAdGroupMarkerBackfill";
|
||||
public readonly cNtfsBase ntfsBase = new cNtfsBase();
|
||||
public readonly cActiveDirectoryBase activeDirectoryBase = new cActiveDirectoryBase();
|
||||
private readonly Dictionary<string, HashSet<string>> publishedShareCache = new Dictionary<string, HashSet<string>>(StringComparer.OrdinalIgnoreCase);
|
||||
@@ -1394,6 +1396,8 @@ namespace C4IT.LIAM
|
||||
engine.CanManagePermissionsForPath = IsPermissionManagedFolderPath;
|
||||
engine.CanManageTraversePermissionsForPath = IsTraversePermissionManagedPath;
|
||||
engine.forceStrictAdGroupNames = IsAdditionalConfigurationEnabled("ForceStrictAdGroupNames");
|
||||
engine.adGroupReuseMode = GetAdGroupReuseMode();
|
||||
engine.adGroupMarkerBackfill = IsAdditionalConfigurationEnabled(AdditionalConfigurationAdGroupMarkerBackfillKey);
|
||||
engine.groupNameSanitizeReplacement = GetAdditionalConfigurationValueOrDefault(
|
||||
AdditionalConfigurationGroupNameSanitizeReplacementKey,
|
||||
Helper.DefaultGroupNameSanitizeReplacement);
|
||||
@@ -1458,6 +1462,25 @@ namespace C4IT.LIAM
|
||||
return rawValue == null ? string.Empty : rawValue.Trim();
|
||||
}
|
||||
|
||||
private SecurityGroupReuseMode GetAdGroupReuseMode()
|
||||
{
|
||||
var value = GetAdditionalConfigurationValue(AdditionalConfigurationAdGroupReuseModeKey);
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
return SecurityGroupReuseMode.Safe;
|
||||
|
||||
if (value.Equals("Safe", StringComparison.OrdinalIgnoreCase))
|
||||
return SecurityGroupReuseMode.Safe;
|
||||
|
||||
if (value.Equals("Name", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
LogEntry("NtfsAdGroupReuseMode=Name is active. Existing AD groups may be reused by name without ACL/marker validation.", LogLevels.Warning);
|
||||
return SecurityGroupReuseMode.Name;
|
||||
}
|
||||
|
||||
LogEntry($"AdditionalConfiguration '{AdditionalConfigurationAdGroupReuseModeKey}' has invalid value '{value}'. Defaulting to Safe.", LogLevels.Warning);
|
||||
return SecurityGroupReuseMode.Safe;
|
||||
}
|
||||
|
||||
private string GetEffectiveTraverseBoundaryPath()
|
||||
{
|
||||
var configuredBoundaryPath = GetAdditionalConfigurationValue(AdditionalConfigurationTraverseBoundaryPathKey);
|
||||
|
||||
Reference in New Issue
Block a user