Terraform:在 Azure Policy Initiative 中将变量作为参数传递

Terraform: pass variable as a parameter in azure policy initiative

我有一个自定义策略计划,我想使用 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"
  }

正如我所见,azurerm_policy_set_definition iam 仅引用了策略定义,但并未在 policy_definition_reference 块中为 属性 parameter_values。您没有显示策略定义是如何配置的,因此您需要检查策略定义中的参数设置如何,然后在策略集定义中添加参数设置。