rules/AzureDevOps.Tasks.VariableGroups.Rule.ps1
# PSRule rule definitions for Azure DevOps Variable Groups # Synopsis: A Variable Group should not contain secrets when not linked to a Key Vault Rule 'Azure.DevOps.Tasks.VariableGroup.NoKeyVaultNoSecrets' ` -Ref 'ADO-VG-001' ` -Type 'Azure.DevOps.Tasks.VariableGroup' ` -If { $TargetObject.type -eq 'Vsts' } ` -Tag @{ release = 'GA'} ` -Level Error { # Description: Variable Groups should not contain secrets when not linked to a Key Vault # Reason: The Variable Group is not linked to a Key Vault and it contains secrets # Recommendation: Consider backing the Variable Group with a Key Vault # Links: https://learn.microsoft.com/en-us/azure/devops/organizations/security/security-best-practices?view=azure-devops#tasks $Assert.NotHasField($TargetObject, "variables.psobject.Properties.Value.isSecret", $false) } # Synopsis: Variable groups should have a description Rule 'Azure.DevOps.Tasks.VariableGroup.Description' ` -Ref 'ADO-VG-002' ` -Type 'Azure.DevOps.Tasks.VariableGroup' ` -Tag @{ release = 'GA'} ` -Level Information { # Description: Variable groups should have a description # Reason: No description is configured for the variable group # Recommendation: Add a description to the variable group to make it easier to understand its purpose $Assert.HasField($TargetObject, "description", $true) $Assert.NotNull($TargetObject, "description") } |