Как определить и назначить политику Azure для области действия группы управления с помощью Terraform?

Я хочу назначить одну из встроенных политик Azure группе управления с помощью Terraform. Проблема, с которой я сталкиваюсь, заключается в том, что назначение политик с помощью Terraform может быть довольно легко выполнено, правильно установив область действия для идентификатора подписки или группы ресурсов или конкретного ресурса, к которому должна применяться политика, изменение его на группу управления приводит к ошибка. Я считаю, что это связано с тем, что местоположение определения политики должно быть в порядке, поэтому мы можем сделать область действия azurerm_policy_assignment равной желаемой группе управления. Могу ли я получить некоторую помощь по этому поводу, чтобы определить политику, при этом местоположение определения - это группа управления в Terraform? Например, я попытался установить область действия = идентификатор группы управления в блоке ресурса azurerm_policy_definition, предшествующем блоку назначения политики, но я получаю неожиданное ключевое слово в области видимости. Также не работает установка местоположения.

Я также поделюсь своим текущим обходным путем.

В результате проблемы, с которой я столкнулся, то, что я сейчас делаю, - это дублирование определения политики с портала, изменение местоположения определения, чтобы оно было равно идентификатору группы управления, а затем передача нового идентификатора определения политики. и область действия - это группа управления в моем последующем коде Terraform, который теперь работает, когда политика определена в соответствующем местоположении группы управления.

Но я хочу покончить с этим ручным вмешательством и намерен завершить его исключительно с помощью скрипта Terraform. Поскольку я относительно новичок в этой области, могу ли я назначить политику определенной группе управления в Terraform, должным образом определив ее сначала в той же области, чтобы не приводить к какой-либо ошибке?

В качестве альтернативы мой вопрос можно также интерпретировать, как назначить политику Azure определенной области управления группой, используя только сценарий Terraform (можно предположить, что группы управления также будут созданы с использованием Terraform, хотя об этой части уже позаботились).


person Swarnabja Bhaumik    schedule 13.01.2021    source источник


Ответы (1)


Чтобы назначить встроенную политику, я бы предложил ссылаться на желаемое определение политики как на источник данных. Таким образом, вам не нужно объявлять / создавать новое определение политики в вашем коде Terraform. (Хотя в качестве альтернативы вы можете просто поместить идентификатор определения для встроенной политики в качестве значения policy_definition_id в блоке ресурсов azurerm_policy_assignment).

Здесь приведен пример ссылки на встроенный -В определении политики в качестве источника данных в 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"
}
person noahb    schedule 14.01.2021
comment
Большое вам спасибо ... @ noahb, он отлично работает ... У меня возник вопрос. Однако ссылка на определение политики как на источник данных не позволяет мне писать правила политики и прочее внутри блока определения ... как это было бы применимо без них? Есть ли способ включить это? - person Swarnabja Bhaumik; 25.01.2021