Политика Azure не запрещает создание пользовательских ролей

В настоящее время я помогаю исследовать принятие Azure для публичного облака моей организации. Одна из назначенных мне задач - блокировка учетных записей, чтобы пользователи не могли повысить свои права в рамках подписки.

Одна из вещей, которые меня особенно интересуют, - это отрицание создания пользовательских ролей, поскольку мы не хотим, чтобы люди начинали создавать свои собственные роли до тех пор, пока безопасность роли не будет проверена.

Я пытался сделать это с помощью политики Azure со следующим определением

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Authorization/roleDefinitions"
      },
      {
        "field": "Microsoft.Authorization/roleDefinitions/type",
        "equals": "CustomRole"
      }
    ]
  },
  "then": {
    "effect": "Deny"
  }
}

На самом деле это была просто скопированная встроенная политика "Audit Custom Roles", изменяющая эффект с "Audit" на "Deny".

Однако я применил эту политику к группе управления, которая содержит подписку, с которой я тестирую, и все же, когда я вхожу в CLI и пытаюсь создать новую настраиваемую роль, она запускается и создает роль.

Я гарантировал, что политика присутствует в подписке, и я подтвердил, что нахожусь в правильной подписке в CLI (используя az account show) все же мне разрешено создавать собственные роли.

Это просто не то, что поддерживает Azure, или мне чего-то не хватает? Любая помощь или руководство будут с благодарностью приняты как документы Microsoft, и многочисленные примеры, доступные в Интернете, по-видимому, не содержат никакой информации об управлении ролями с помощью политик.

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

1 ответ

Решение

Похоже, что Azure CLI создает определение роли без заполнения поля "тип". Следующая политика будет обрабатывать это:

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Authorization/roleDefinitions"
      },
      {
        "anyOf": [
          {
            "field": "Microsoft.Authorization/roleDefinitions/type",
            "equals": "CustomRole"
          },
          {
            "field": "Microsoft.Authorization/roleDefinitions/type",
            "exists": "false"
          }
        ]
      }
    ]
  },
  "then": {
    "effect": "Deny"
  }
}
Другие вопросы по тегам