我有一个自定义策略计划,我想使用terraform进行分配,其中一个策略确实有参数。 我知道对于单个策略分配,我们可以使用类似的方法,然后将变量作为参数传递。
parameters = jsonencode({
"operationName": {
"value": var.allowed_values,
}
})
但是,我是主动尝试过的,这似乎并不会让它抱怨参数丢失。
实际上,我尝试将参数硬编码到azurerm_policy_assignment的正文中,我什至认为这都不起作用。
resource "azurerm_policy_assignment" "example" {
name = "mcs_governance_policy_assignment"
scope = var.scopes
policy_definition_id = azurerm_policy_set_definition.iam.id
description = "example"
display_name = "Governance Policy"
metadata = <<METADATA
{
"category": "General"
}
METADATA
parameters = <<PARAMETERS
{
"operationName": {
"value": "Microsoft.Authorization/policyAssignments/write"
}
}
PARAMETERS
}
政策倡议定义政策如下,它使用内置的政策,我没有将所有政策都包括在该倡议中,只是针对抱怨参数的人
resource "azurerm_policy_set_definition" "iam" {
name = "mcs_iam"
policy_type = "Custom"
display_name = "MCS IAM Governance Policy Set"
description = "Contains MCS Governance policies"
metadata = <<METADATA
{
"category": "General"
}
METADATA
policy_definition_reference {
# An activity log alert should exist for specific Policy operations
policy_definition_id = "/providers/Microsoft.Authorization/policyDefinitions/c5447c04-a4d7-4ba8-a263-c9ee321a6858"
reference_id = "MCS IAM 3.1"
}
答案 0 :(得分:0)
如我所见,azurerm_policy_set_definition
iam
仅引用策略定义,但未在属性parameter_values
的policy_definition_reference块中设置参数。您没有显示策略定义的配置方式,因此需要检查如何在策略定义中设置参数,然后在策略集定义中添加参数设置。