我在 Azure Policy 下编写此内容是为了在订阅内手动创建 VM 时强制执行终止日期标记,该 VM 按预期正常工作。但是日期输入的格式设置为 MM/DD/YYY,但我无法将 MM 输入设置为仅在接下来的 2 或几个月内有效,而且它也接受超过 12 个的输入以及预期的结果。请需要指导如何正确设置。
{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Compute/VirtualMachines"
},
{
"field": "tags['TerminationDate']",
"notMatch": "['##/##/####']"
}
]
},
"then": {
"effect": "deny"
最佳答案
最终的政策将相当复杂,但我认为这是可能的。
我会研究的关键要素:
- 使用
split
函数单独验证日期参数。这也可用于强制月份在 1-12 之间 - 使用
utcNow
函数检查传递的日期是否在给定的时间范围内。可以与split
结合使用,但我可能只会在utcNow
中添加两个月,并将其与输入进行比较。请参阅https://github.com/Azure/azure-policy/issues/388
我建议您研究一些内置策略,看看它们是否执行您想要的类似操作。你可以从语法中学到很多东西。例如:Azure Policy Support for Port Ranges
关于azure - 需要通过 Azure 策略将日期格式正确强制执行为 MM/DD/YYYY 输入,以便在订阅中创建 VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72990577/