DSCResources/Resources/windows.AccessControl.ps1
# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. $rules = $stig.RuleList | Select-Rule -Type PermissionRule foreach ($rule in $rules) { # Determine PermissionRule type and handle switch ($rule.dscresource) { 'RegistryAccessEntry' { $ruleForce = $null [void][bool]::TryParse($rule.Force, [ref]$ruleForce) RegistryAccessEntry (Get-ResourceTitle -Rule $rule) { Path = $rule.Path Force = $ruleForce AccessControlList = @( foreach ($acentry in $rule.AccessControlEntry.Entry) { $aceEntryForcePrincipal = $null [void][bool]::TryParse($acentry.ForcePrincipal, [ref]$aceEntryForcePrincipal) AccessControlList { Principal = $acentry.Principal ForcePrincipal = $aceEntryForcePrincipal AccessControlEntry = @( AccessControlEntry { AccessControlType = $( if (-not ([string]::IsNullOrEmpty($acentry.Type))) { $acentry.Type } else { 'Allow' } ) Inheritance = $( if (-not ([string]::IsNullOrEmpty($acentry.Inheritance))) { $acentry.Inheritance } else { 'This Key and Subkeys' } ) Rights = $acentry.Rights.Split(',') Ensure = 'Present' } ) } } ) } break } 'NTFSAccessEntry' { $ruleForce = $null [void][bool]::TryParse($rule.Force, [ref]$ruleForce) NTFSAccessEntry (Get-ResourceTitle -Rule $rule) { Path = $rule.Path Force = $ruleForce AccessControlList = @( foreach ($acentry in $rule.AccessControlEntry.Entry) { $aceEntryForcePrincipal = $null [void][bool]::TryParse($acentry.ForcePrincipal, [ref]$aceEntryForcePrincipal) NTFSAccessControlList { Principal = $acentry.Principal ForcePrincipal = $aceEntryForcePrincipal AccessControlEntry = @( NTFSAccessControlEntry { AccessControlType = $( if (-not ([string]::IsNullOrEmpty($acentry.Type))) { $acentry.Type } else { 'Allow' } ) Inheritance = $( if (-not ([string]::IsNullOrEmpty($acentry.Inheritance))) { $acentry.Inheritance } else { 'This folder only' } ) FileSystemRights = $acentry.Rights.Split(',') Ensure = 'Present' } ) } } ) } break } 'FileSystemAuditRuleEntry' { $ruleForce = $null [void][bool]::TryParse($rule.Force, [ref]$ruleForce) FileSystemAuditRuleEntry (Get-ResourceTitle -Rule $rule) { Path = $rule.Path Force = $ruleForce AuditRuleList = @( foreach ($acentry in $rule.AccessControlEntry.Entry) { FileSystemAuditRuleList { Principal = $acentry.Principal ForcePrincipal = $false AuditRuleEntry = @( FileSystemAuditRule { AuditFlags = 'Success' FileSystemRights = $acentry.Rights.Split(',') Inheritance = $( if (-not ([string]::IsNullOrEmpty($acentry.Inheritance))) { $acentry.Inheritance } else { 'This folder only' } ) Ensure = 'Present' } FileSystemAuditRule { AuditFlags = 'Failure' FileSystemRights = $acentry.Rights.Split(',') Inheritance = $( if (-not ([string]::IsNullOrEmpty($acentry.Inheritance))) { $acentry.Inheritance } else { 'This folder only' } ) Ensure = 'Present' } ) } } ) } break } } } |