mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
YAML-driven test cases for the core Azure Policy compiler. These cover alias resolution, field conditions, logical operators, type coercion, count expressions, template functions, effect compilation, and policy definition parsing. 24 files, each a self-contained scenario exercised by the test runner in the companion code PR. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
429 lines
12 KiB
YAML
429 lines
12 KiB
YAML
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
# Effects Test Suite
|
|
# Tests all 9 Azure Policy effect types and parameterized effects.
|
|
|
|
cases:
|
|
# =========================================================================
|
|
# Simple effects
|
|
# =========================================================================
|
|
|
|
- note: effect_deny
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "deny"
|
|
|
|
- note: effect_audit
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "audit"
|
|
|
|
- note: effect_disabled
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": { "effect": "disabled" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
# Azure Policy: "disabled" means the policy is inactive — no compliance
|
|
# result is produced. The compiler correctly returns undefined.
|
|
want_undefined: true
|
|
|
|
- note: effect_manual
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": { "effect": "manual" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "manual"
|
|
|
|
- note: effect_denyAction
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "denyAction",
|
|
"details": {
|
|
"actionNames": ["delete"]
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "denyAction"
|
|
|
|
# =========================================================================
|
|
# Effects with details
|
|
# =========================================================================
|
|
|
|
- note: effect_deny_with_message
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Storage/storageAccounts"
|
|
},
|
|
"then": {
|
|
"effect": "deny",
|
|
"details": {
|
|
"message": "Storage accounts must use HTTPS"
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Storage/storageAccounts"
|
|
want_effect: "deny"
|
|
|
|
- note: effect_append
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Storage/storageAccounts"
|
|
},
|
|
"then": {
|
|
"effect": "append",
|
|
"details": [
|
|
{
|
|
"field": "properties.supportsHttpsTrafficOnly",
|
|
"value": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Storage/storageAccounts"
|
|
want_effect: "append"
|
|
|
|
- note: effect_modify
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "field": "tags.environment", "exists": false }
|
|
]
|
|
},
|
|
"then": {
|
|
"effect": "modify",
|
|
"details": {
|
|
"roleDefinitionIds": [
|
|
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
|
|
],
|
|
"operations": [
|
|
{
|
|
"operation": "addOrReplace",
|
|
"field": "tags['environment']",
|
|
"value": "production"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
tags: {}
|
|
want_effect: "modify"
|
|
|
|
- note: effect_modify_multiple_operations
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "modify",
|
|
"details": {
|
|
"roleDefinitionIds": [
|
|
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
|
|
],
|
|
"operations": [
|
|
{
|
|
"operation": "addOrReplace",
|
|
"field": "tags['environment']",
|
|
"value": "production"
|
|
},
|
|
{
|
|
"operation": "add",
|
|
"field": "tags['managedBy']",
|
|
"value": "policy"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "modify"
|
|
|
|
- note: effect_auditIfNotExists
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "auditIfNotExists",
|
|
"details": {
|
|
"type": "Microsoft.Compute/virtualMachines/extensions",
|
|
"existenceCondition": {
|
|
"allOf": [
|
|
{ "field": "properties.publisher", "equals": "Microsoft.Azure.Security" },
|
|
{ "field": "properties.type", "equals": "IaaSAntimalware" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
host_await:
|
|
- key:
|
|
operation: "lookup_related_resources"
|
|
type: "Microsoft.Compute/virtualMachines/extensions"
|
|
response: null
|
|
want_effect: "auditIfNotExists"
|
|
|
|
# Related resource found and existenceCondition matches → compliant (undefined)
|
|
- note: effect_auditIfNotExists_compliant
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "auditIfNotExists",
|
|
"details": {
|
|
"type": "Microsoft.Compute/virtualMachines/extensions",
|
|
"existenceCondition": {
|
|
"allOf": [
|
|
{ "field": "properties.publisher", "equals": "Microsoft.Azure.Security" },
|
|
{ "field": "properties.type", "equals": "IaaSAntimalware" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
host_await:
|
|
- response:
|
|
properties:
|
|
publisher: "Microsoft.Azure.Security"
|
|
type: "IaaSAntimalware"
|
|
want_undefined: true
|
|
|
|
# Related resource found but existenceCondition fails → non-compliant
|
|
- note: effect_auditIfNotExists_condition_fails
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "auditIfNotExists",
|
|
"details": {
|
|
"type": "Microsoft.Compute/virtualMachines/extensions",
|
|
"existenceCondition": {
|
|
"allOf": [
|
|
{ "field": "properties.publisher", "equals": "Microsoft.Azure.Security" },
|
|
{ "field": "properties.type", "equals": "IaaSAntimalware" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
host_await:
|
|
- response:
|
|
properties:
|
|
publisher: "SomeOtherPublisher"
|
|
type: "SomeOtherExtension"
|
|
want_effect: "auditIfNotExists"
|
|
|
|
# No existenceCondition — just check if resource exists
|
|
- note: effect_auditIfNotExists_no_condition_exists
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "auditIfNotExists",
|
|
"details": {
|
|
"type": "Microsoft.Compute/virtualMachines/extensions"
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
host_await:
|
|
- response:
|
|
name: "some-extension"
|
|
properties: {}
|
|
want_undefined: true
|
|
|
|
# No existenceCondition, resource not found → non-compliant
|
|
- note: effect_auditIfNotExists_no_condition_missing
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "auditIfNotExists",
|
|
"details": {
|
|
"type": "Microsoft.Compute/virtualMachines/extensions"
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
host_await:
|
|
- response: null
|
|
want_effect: "auditIfNotExists"
|
|
|
|
- note: effect_deployIfNotExists
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "deployIfNotExists",
|
|
"details": {
|
|
"type": "Microsoft.Compute/virtualMachines/extensions",
|
|
"roleDefinitionIds": [
|
|
"/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c"
|
|
],
|
|
"existenceCondition": {
|
|
"field": "properties.publisher",
|
|
"equals": "Microsoft.Azure.Monitoring"
|
|
},
|
|
"deployment": {
|
|
"properties": {
|
|
"mode": "incremental",
|
|
"template": {
|
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
|
"contentVersion": "1.0.0.0",
|
|
"resources": []
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
host_await:
|
|
- response: null
|
|
want_effect: "deployIfNotExists"
|
|
|
|
# =========================================================================
|
|
# Parameterized effects
|
|
# =========================================================================
|
|
|
|
- note: effect_parameterized
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": {
|
|
"effect": "[parameters('effect')]"
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
parameters:
|
|
effect: "deny"
|
|
want_effect: "deny"
|
|
|
|
- note: effect_parameterized_with_details
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Storage/storageAccounts"
|
|
},
|
|
"then": {
|
|
"effect": "[parameters('effect')]",
|
|
"details": {
|
|
"message": "HTTPS required for storage accounts"
|
|
}
|
|
}
|
|
}
|
|
resource:
|
|
type: "Microsoft.Storage/storageAccounts"
|
|
parameters:
|
|
effect: "audit"
|
|
want_effect: "audit"
|
|
|
|
# =========================================================================
|
|
# Case-insensitive effect names
|
|
# =========================================================================
|
|
|
|
- note: effect_case_insensitive_Deny
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": { "effect": "Deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "Deny"
|
|
|
|
- note: effect_case_insensitive_AUDIT
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
},
|
|
"then": { "effect": "AUDIT" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "AUDIT"
|