Terraform:将变量作为天蓝色策略计划中的参数传递

时间:2020-10-29 08:55:40

标签: terraform terraform-provider-azure azure-policy

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

1 个答案:

答案 0 :(得分:0)

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