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
。您没有显示策略定义是如何配置的,因此您需要检查策略定义中的参数设置如何,然后在策略集定义中添加参数设置。
我有一个自定义策略计划,我想使用 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
。您没有显示策略定义是如何配置的,因此您需要检查策略定义中的参数设置如何,然后在策略集定义中添加参数设置。