自动分配多个内置 Azure 策略

问题描述

我正在尝试通过单击将多个内置的 azure 策略分配给我的 azure 环境。我怎样才能以更优雅的方式做到这一点?

我尝试了以下方法

  1. 使用打包程序创建策略定义并构建映像。通过 terraform 部署图像
  2. 我已将策略定义 ID 传递给 terraform 脚本中的资源组,类似于以下脚本。
    resource "azurerm_policy_assignment" "example" {
      name = "test"
      policy_deFinition_id = data.azurerm_policy_deFinition.example.id
      scope = "/providers/Microsoft.Management/managementGroups/MyManagementGroup"
    }

如何传递多个定义策略定义 ID?任何提示将不胜感激。

解决方法

您可以将其分解为子模块,使用父模块调用单独的子模块,这样您就可以reuse/mix-n-match 等。例如假设每个子模块仅管理 1 种资源类型,例如 /modules/policy-definitions 管理 Azure_RM 策略定义。

现在,父模块调用所有子模块,如果子模块需要,我们可以在此处设置输入变量值。

这是调用 /modules/MyPolicy-assignments 并为 4 个输入变量设置这些值的父模块。

module "policy_assignments" {
  source = "./modules/MyPolicy-assignments"

  tag_governance_policyset_id             = "${module.policyset_definitions.assetTag_governance_policyset_id}"
  iam_governance_policyset_id             = "${module.policyset_definitions.iam_governance_policyset_id}"
  security_governance_policyset_id        = "${module.policyset_definitions.security_governance_policyset_id}"
  data_protection_governance_policyset_id = "${module.policyset_definitions.data_protection_governance_policyset_id}"
  AD... = "${module.policyset_definitions.AD...}"
}