Попытка настроить, какие идентификаторы (роли) определений ролей Azure могут быть назначены посредством назначения ролей с использованием политики Azure.
Все приведенные ниже политики создаются без ошибок, но назначение ролей Azure по-прежнему возможно для всех ролей, несмотря на создание / назначение этой политики.
Я пробовал значение параметра snytax '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c', а также просто идентификатор роли 'b24988ac-6180-42a0-ab88-20f7382dd24c'
Кажется, ничего не имеет значения, когда дело доходит до политики, фактически предотвращающей назначение ролей.
У меня есть жестко запрограммированные значения, а также проверенные параметры
Политика следования этой теме, которая не запрещает назначение ролей:
resource "azurerm_policy_definition" "allowedRoleAssignments" {
name = "${var.project_ident}-${var.cs_env_ident}-allowedRoleAssignments"
policy_type = "Custom"
mode = "Indexed"
display_name = "${var.project_ident}-${var.cs_env_ident}-allowedRoleAssignments"
management_group_name = var.mgmtGroupName
metadata = <<METADATA
{
"category": "General"
}
METADATA
policy_rule = <<POLICY_RULE
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Authorization/roleAssignments"
},
{
"not": {
"field": "Microsoft.Authorization/roleAssignments/roleDefinitionId",
"in": "[parameters('roleDefinitionIds')]"
}
}
]
},
"then": {
"effect": "deny"
}
}
POLICY_RULE
parameters = <<PARAMETERS
{
"roleDefinitionIds": {
"type": "Array",
"metadata": {
"displayName": "roleDefinitionIds",
"description": "This policy defines a blacklist of role definitions that cannot be used in IAM, for role assignments"
}
}
}
PARAMETERS
}
Параметры инициативы:
policy_definition_reference {
policy_definition_id = azurerm_policy_definition.allowedRoleAssignments.id
parameters = {
roleDefinitionIds = "[parameters('roleDefinitionIds')]"
}
}
Назначение политики:
resource "azurerm_policy_assignment" "set-assignment-1" {
name = "${var.cs_env_ident}-sec-controls"
scope = var.policy_assignment_scope
description = "policy set definition assignment to specified management groups"
display_name = "${var.project_ident}-${var.cs_env_ident}-sec-controls"
policy_definition_id = var.policy_set_definition_id
identity { type = "SystemAssigned" }
location = var.location
parameters = <<PARAMETERS
{
"roleDefinitionIds": {
"value": ${jsonencode(var.roleDefinitionIds)}
}
}
PARAMETERS
}
Параметры, передаваемые в назначении политики через переменную Terraform:
variable "roleDefinitionIds" {
description = "List of allowed role definition Ids"
default = [
"/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4"
]
}
Политики, применяемые для других потоков, которые имеют аналогичную, но другую логику для достижения той же цели, но также не препятствуют назначению ролей:
Очень полезное руководство, составленное сотрудником Azure, но, опять же, политика не ограничивает назначение ролей
Другие похожие темы Пользовательская роль Azure: авторизация назначения ролей для определенного набора ролей
resource "azurerm_policy_definition" "allowedRoleAssignments" {
name = "${var.project_ident}-${var.cs_env_ident}-allowedRoleAssignments"
policy_type = "Custom"
mode = "Indexed"
display_name = "${var.project_ident}-${var.cs_env_ident}-allowedRoleAssignments"
management_group_name = var.mgmtGroupName
metadata = <<METADATA
{
"category": "General"
}
METADATA
policy_rule = <<POLICY_RULE
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Authorization/roleAssignments"
},
{
"value": "[last(split(field('Microsoft.Authorization/roleAssignments/roleDefinitionId'),'/'))]",
"notIn": "[parameters('roleDefinitionIds')]"
}
]
},
"then": {
"effect": "Deny"
}
}
POLICY_RULE
parameters = <<PARAMETERS
{
"roleDefinitionIds": {
"type": "Array",
"metadata": {
"displayName": "roleDefinitionIds",
"description": "This policy defines a blacklist of role definitions that cannot be used in IAM, for role assignments"
}
}
}
PARAMETERS
}
Любая помощь приветствуется. Политики не терпят неудачу при создании и кажутся логически разумными.
Я не понимаю, почему, независимо от того, создан он как белый или черный список, назначение ролей не срабатывает.
Я создаю и назначаю эти политики группе управления, поэтому проверяйте, используя подписку / ресурсы в группе управления.
Я пробовал массив идентификаторов определений ролей, идентификаторов отдельных определений, но ничего успешно не препятствует назначению соответствующей роли для каждой политики.