mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
50 end-to-end test cases derived from real Azure built-in policies. Each file contains a complete policy definition, sample resources, and expected evaluation results. Coverage spans storage, networking, compute, security, monitoring, database, identity, governance, and update management scenarios. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
205 lines
7.2 KiB
YAML
205 lines
7.2 KiB
YAML
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
# E2E Test: Portal/SharedDashboardInlineContent_Deny
|
|
# Real Azure Policy: "Shared dashboards should not have markdown tiles with inline content"
|
|
# Source: regolator/policyDefinitions/Portal/SharedDashboardInlineContent_Deny.json
|
|
#
|
|
# Features exercised:
|
|
# - Doubly-nested wildcard: lenses[*].parts[*]
|
|
# - Field count with where clause on deeply-nested metadata paths
|
|
# - requestContext().apiVersion guard with NOT (double negation pattern)
|
|
# - "anyof" (lowercase 'o') variant
|
|
|
|
aliases: test_aliases.json
|
|
|
|
policy_definition: |
|
|
{
|
|
"properties": {
|
|
"displayName": "Shared dashboards should not have markdown tiles with inline content",
|
|
"policyType": "BuiltIn",
|
|
"mode": "Indexed",
|
|
"parameters": {
|
|
"effect": {
|
|
"type": "string",
|
|
"defaultValue": "Audit",
|
|
"allowedValues": ["Audit", "Deny", "Disabled"]
|
|
}
|
|
},
|
|
"policyRule": {
|
|
"if": {
|
|
"allOf": [
|
|
{
|
|
"field": "type",
|
|
"equals": "Microsoft.Portal/dashboards"
|
|
},
|
|
{
|
|
"anyof": [
|
|
{
|
|
"not": {
|
|
"value": "[requestContext().apiVersion]",
|
|
"greaterOrEquals": "2020-09-01-alpha"
|
|
}
|
|
},
|
|
{
|
|
"count": {
|
|
"field": "Microsoft.Portal/dashboards/lenses[*].parts[*]",
|
|
"where": {
|
|
"allOf": [
|
|
{
|
|
"field": "Microsoft.Portal/dashboards/lenses[*].parts[*].metadata.type",
|
|
"equals": "Extension/HubsExtension/PartType/MarkdownPart"
|
|
},
|
|
{
|
|
"anyOf": [
|
|
{
|
|
"field": "Microsoft.Portal/dashboards/lenses[*].parts[*].metadata.Extension-HubsExtension-PartType-MarkdownPart.settings.content.settings.markdownUri",
|
|
"exists": "false"
|
|
},
|
|
{
|
|
"field": "Microsoft.Portal/dashboards/lenses[*].parts[*].metadata.Extension-HubsExtension-PartType-MarkdownPart.settings.content.settings.markdownSource",
|
|
"exists": "false"
|
|
},
|
|
{
|
|
"field": "Microsoft.Portal/dashboards/lenses[*].parts[*].metadata.Extension-HubsExtension-PartType-MarkdownPart.settings.content.settings.markdownSource",
|
|
"equals": "1"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"greater": 0
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"then": {
|
|
"effect": "[parameters('effect')]"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
cases:
|
|
# =========================================================================
|
|
# Old API version → triggers (not greaterOrEquals "2020-09-01-alpha")
|
|
# =========================================================================
|
|
|
|
- note: audit_old_api_version
|
|
resource:
|
|
type: "Microsoft.Portal/dashboards"
|
|
name: "old-api-dashboard"
|
|
properties:
|
|
lenses: []
|
|
request_context:
|
|
apiVersion: "2019-01-01"
|
|
want_effect: "Audit"
|
|
|
|
# =========================================================================
|
|
# New API version, markdown part with inline content (no markdownUri)
|
|
# =========================================================================
|
|
|
|
- note: audit_inline_markdown_no_uri
|
|
resource:
|
|
type: "Microsoft.Portal/dashboards"
|
|
name: "inline-md"
|
|
properties:
|
|
lenses:
|
|
- parts:
|
|
- metadata:
|
|
type: "Extension/HubsExtension/PartType/MarkdownPart"
|
|
Extension-HubsExtension-PartType-MarkdownPart:
|
|
settings:
|
|
content:
|
|
settings:
|
|
markdownSource: "1"
|
|
request_context:
|
|
apiVersion: "2022-12-01"
|
|
want_effect: "Audit"
|
|
|
|
# =========================================================================
|
|
# New API version, markdown part with markdownUri set → compliant
|
|
# =========================================================================
|
|
|
|
- note: pass_markdown_with_uri
|
|
resource:
|
|
type: "Microsoft.Portal/dashboards"
|
|
name: "external-md"
|
|
properties:
|
|
lenses:
|
|
- parts:
|
|
- metadata:
|
|
type: "Extension/HubsExtension/PartType/MarkdownPart"
|
|
Extension-HubsExtension-PartType-MarkdownPart:
|
|
settings:
|
|
content:
|
|
settings:
|
|
markdownUri: "https://raw.githubusercontent.com/org/repo/main/README.md"
|
|
markdownSource: "url"
|
|
request_context:
|
|
apiVersion: "2022-12-01"
|
|
want_undefined: true
|
|
|
|
# =========================================================================
|
|
# Non-markdown part → compliant
|
|
# =========================================================================
|
|
|
|
- note: pass_non_markdown_part
|
|
resource:
|
|
type: "Microsoft.Portal/dashboards"
|
|
name: "chart-dashboard"
|
|
properties:
|
|
lenses:
|
|
- parts:
|
|
- metadata:
|
|
type: "Extension/HubsExtension/PartType/MonitorChartPart"
|
|
request_context:
|
|
apiVersion: "2022-12-01"
|
|
want_undefined: true
|
|
|
|
# =========================================================================
|
|
# Multiple lenses/parts, mixed: one inline, one external → triggers
|
|
# =========================================================================
|
|
|
|
- note: audit_mixed_parts_one_inline
|
|
resource:
|
|
type: "Microsoft.Portal/dashboards"
|
|
name: "mixed-dashboard"
|
|
properties:
|
|
lenses:
|
|
- parts:
|
|
- metadata:
|
|
type: "Extension/HubsExtension/PartType/MonitorChartPart"
|
|
- metadata:
|
|
type: "Extension/HubsExtension/PartType/MarkdownPart"
|
|
Extension-HubsExtension-PartType-MarkdownPart:
|
|
settings:
|
|
content:
|
|
settings:
|
|
markdownSource: "1"
|
|
- parts:
|
|
- metadata:
|
|
type: "Extension/HubsExtension/PartType/MarkdownPart"
|
|
Extension-HubsExtension-PartType-MarkdownPart:
|
|
settings:
|
|
content:
|
|
settings:
|
|
markdownUri: "https://example.com/md.md"
|
|
markdownSource: "url"
|
|
request_context:
|
|
apiVersion: "2022-12-01"
|
|
want_effect: "Audit"
|
|
|
|
# =========================================================================
|
|
# Wrong type → skip
|
|
# =========================================================================
|
|
|
|
- note: skip_wrong_type
|
|
resource:
|
|
type: "Microsoft.Storage/storageAccounts"
|
|
name: "storage"
|
|
properties: {}
|
|
want_undefined: true
|