internal/orca/check-ORCA107.ps1
| 
                                # Generated by .\build\orca\Update-OrcaTests.ps1 using module ".\orcaClass.psm1" [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingEmptyCatchBlock', '')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSPossibleIncorrectComparisonWithNull', '')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidGlobalVars', '')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingCmdletAliases', '')] param() <# ORCA-107 Check if End-user Spam notification is enabled and the notification frequency is less than equal to 3 days #> class ORCA107 : ORCACheck { <# CONSTRUCTOR with Check Header Data #> ORCA107() { $this.Control="ORCA-107" $this.Area="Quarantine Policies" $this.Name="End-user Spam notifications" $this.PassText="End-user spam notification is enabled" $this.FailRecommendation="Enable End-user Spam notifications on a quarantine policy" $this.Importance="Enable End-user Spam notifications to let users manage their own spam-quarantined messages (Release, Block sender, Review). End-user spam notifications contain a list of all spam-quarantined messages that the end-user has received during a time period. Policies that do not apply to a spam policy as either a spam, or bulk action, will appear disabled below." $this.ExpandResults=$True $this.CheckType=[CheckType]::ObjectPropertyValue $this.ObjectType="Quarantine Policy" $this.ItemName="Setting" $this.DataType="Current Value" $this.Links= @{ "Microsoft 365 Defender Portal - Anti-spam settings"="https://security.microsoft.com/antispam" "Configure end-user spam notifications in Exchange Online"="https://aka.ms/orca-antispam-docs-2" "Recommended settings for EOP and Office 365 Microsoft Defender for Office 365 security"="https://aka.ms/orca-atpp-docs-6" } } <# RESULTS #> GetResults($Config) { $GlobalPolicy = $Config["QuarantinePolicyGlobal"] ForEach($QuarantinePolicy in $Config["QuarantinePolicy"]) { $AppliesSpam = $False $AppliesPhish = $False ForEach($Policy in $Config["HostedContentFilterPolicy"]) { if($Config["PolicyStates"][$Policy.Guid.ToString()].Applies -eq $True) { # Check Spam action if($Policy.SpamAction -eq "Quarantine" -and $Policy.SpamQuarantineTag -eq $QuarantinePolicy.Name) { $AppliesSpam = $True } # Check HC Spam Action if($Policy.HighConfidenceSpamAction -eq "Quarantine" -and $Policy.HighConfidenceSpamQuarantineTag -eq $QuarantinePolicy.Name) { $AppliesSpam = $True } # Check Bulk Action if($Policy.BulkSpamAction -eq "Quarantine" -and $Policy.BulkQuarantineTag -eq $QuarantinePolicy.Name) { $AppliesSpam = $True } # Check Phish Action if($Policy.PhishSpamAction -eq "Quarantine" -and $Policy.PhishQuarantineTag -eq $QuarantinePolicy.Name) { $AppliesPhish = $True } # Check HC Phish Action if($Policy.HighConfidencePhishAction -eq "Quarantine" -and $Policy.HighConfidencePhishQuarantineTag -eq $QuarantinePolicy.Name) { $AppliesPhish = $True } } } $ConfigObject = [ORCACheckConfig]::new() $ConfigObject.Object=$QuarantinePolicy.Name $ConfigObject.ConfigReadonly=($QuarantinePolicy.Name -eq "DefaultFullAccessWithNotificationPolicy" -or $QuarantinePolicy.Name -eq "DefaultFullAccessPolicy" -or $QuarantinePolicy.Name -eq "AdminOnlyAccessPolicy") $ConfigObject.ConfigItem="ESNEnabled" $ConfigObject.ConfigData = $QuarantinePolicy.ESNEnabled if($AppliesSpam) { if($QuarantinePolicy.ESNEnabled -eq $True) { $ConfigObject.SetResult([ORCAConfigLevel]::Standard,[ORCAResult]::Pass) } else { $ConfigObject.SetResult([ORCAConfigLevel]::Standard,[ORCAResult]::Fail) } $this.AddConfig($ConfigObject) } else { # Quarantine policy does not apply to any spam policy if($QuarantinePolicy.ESNEnabled -eq $False) { $ConfigObject.ConfigDisabled = $True $ConfigObject.SetResult([ORCAConfigLevel]::All,[ORCAResult]::Informational) $ConfigObject.InfoText = "This quarantine policy has notifications turned off, however, it is not used in any spam related action. It is being flagged for awareness purposes only." $this.AddConfig($ConfigObject) } } } } }  |