core/modules/monkeyruleset/private/Test-isValidRule.ps1
# Monkey365 - the PowerShell Cloud Security Tool for Azure and Microsoft 365 (copyright 2022) by Juan Garrido # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. Function Test-isValidRule{ <# .SYNOPSIS .DESCRIPTION .INPUTS .OUTPUTS .EXAMPLE .NOTES Author : Juan Garrido Twitter : @tr1ana File Name : Test-isValidRule Version : 1.0 .LINK https://github.com/silverhack/monkey365 #> [CmdletBinding()] [OutputType([System.Boolean])] Param ( [parameter(Mandatory=$true, ValueFromPipeline = $True, HelpMessage="Rule object")] [Object]$InputObject ) Process{ Try{ $missingElements = @() #Rule valid keys $properties = @( 'serviceType', 'serviceName', 'displayName', 'description', 'rationale', 'references', 'idSuffix' ) $inputProperties = $InputObject | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty Name -ErrorAction Ignore Foreach ($key in $properties){ If ($key -in $inputProperties){ #passed test continue; } Else{ #no element was found $missingElements+=$key } } #Check if rule is present $ruleObj = $InputObject | Select-Object -ExpandProperty rule -ErrorAction Ignore If($null -eq $ruleObj){ $missingElements+='rule' } If($missingElements.Count -eq 0){ Write-Verbose ($Script:messages.ValidObjectMessage -f "rule") return $true } Else{ $missing = @($missingElements) -join ',' If($null -ne $InputObject.PsObject.Properties.Item('displayName')){ Write-Warning ($Script:messages.InvalidRuleMessage -f $InputObject.displayName) } Write-Warning ($Script:messages.MissingElementsMessage -f "rule", $missing) return $false } } Catch{ Write-Error $_ #Invalid rule return $false; } } } |