gpt4 book ai didi

azure - 如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?

转载 作者:行者123 更新时间:2023-12-03 02:29:36 24 4
gpt4 key购买 nike

我想使用 Terraform 将 Azure 的内置策略之一分配给管理组。我面临的问题是,虽然可以通过将范围正确设置为要应用策略的订阅 ID 或资源组或特定资源来相当轻松地完成使用 Terraform 分配策略,但将其更改为管理组会导致一个错误。我认为,这是因为策略定义位置需要是管理组,这样我们就可以使 azurerm_policy_assignment 的范围等于所需的管理组。我能否获得一些与此相关的帮助,以便如何定义策略,定义位置是 Terraform 中管理组的位置?例如,我尝试在策略分配 block 之前的 resource azurerm_policy_definition block 中设置 scope = 管理组 ID,但我发现“scope”是一个意外的关键字。设置“位置”也不起作用。

我还将分享我当前的解决方法。

由于我面临的问题,我目前正在做的是从门户复制策略的定义,将“定义位置”更改为等于那里的管理组 ID,然后传递新的策略定义 ID 和范围将成为我后续 Terraform 代码中的管理组,现在该代码可以在管理组的相关位置定义策略了。

但我想取消这种手动干预,并打算仅使用 Terraform 脚本来完成它。作为该领域相对较新的人,有没有一种方法可以将策略分配给 Terraform 中的特定管理组,并首先在同一范围内适当定义它,以免导致任何错误?

另外,我的问题也可以解释为如何仅使用 Terraform 脚本将 Azure 策略分配给特定的管理组范围(人们可能会假设,管理组也可以使用 Terraform 创建,尽管该部分已得到处理) .

最佳答案

要分配内置策略,我建议将所需的策略定义引用为 data source 。这样,您不需要在 Terraform 代码中声明/创建新的策略定义。 (不过,您也可以将内置策略的定义 ID 作为 azurerm_policy_assignment 资源 block 中的 policy_definition_id 的值)。

Here是在 Terraform 中引用内置策略定义作为数据源的示例。

下面是您的 Terraform 从门户获取内置策略定义并分配给管理组的示例。

# Pull in built-in definition as a data source
# Link to definition: https://portal.azure.com/#blade/Microsoft_Azure_Policy/PolicyDetailBlade/definitionId/%2Fproviders%2FMicrosoft.Authorization%2FpolicyDefinitions%2Fa451c1ef-c6ca-483d-87ed-f49761e3ffb5
data "azurerm_policy_definition" "example" {
display_name = "Audit usage of custom RBAC rules"
}

# Reference the definition data source in the policy assignment resource
resource "azurerm_policy_assignment" "example" {
name = "assign-audit-rbac"
policy_definition_id = data.azurerm_policy_definition.example.id
scope = "/providers/Microsoft.Management/managementGroups/MyManagementGroup"
}

关于azure - 如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65709821/

24 4 0
文章推荐: javascript - 使用AngularJS的视频编辑器
文章推荐: javascript - 捕获浏览器内容的屏幕截图(网站)
文章推荐: javascript - 使用 selenium python 网页抓取获取向下滚动网页的 html 源代码
文章推荐: javascript - 使用 AngularJS,如何将