Поделиться через


Эффект denyAction в определениях политики Azure

Эффект denyAction используется для блокировки запросов исходя из предполагаемых действий с ресурсами в массовом порядке. Единственным поддерживаемым действием сегодня является DELETE. Это действие и имя действия помогает предотвратить случайное удаление критически важных ресурсов.

Оценка DenyAction

При отправке denyAction вызова запроса с соответствующим именем действия и целевой областью запрос не будет выполнен. Запрос возвращается как 403 (Forbidden). На портале Forbidden можно просмотреть как состояние развертывания, которое было запрещено назначением политики.

Microsoft.Authorization/policyAssignments, Microsoft.Authorization/denyAssignments, Microsoft.Blueprint/blueprintAssignments, Microsoft.Resources/deploymentStacks, Microsoft.Resources/subscriptions и Microsoft.Authorization/locks все эти исключены из denyAction принудительного применения, чтобы предотвратить сценарии блокировки.

Удаление подписки

Политика не блокирует удаление ресурсов, которые происходят во время удаления подписки.

Удаление группы ресурсов

Политика оценивает ресурсы, поддерживающие расположение и теги для denyAction политик во время удаления группы ресурсов. Только политики, для которых cascadeBehaviors задано значение deny в правиле политики, блокируют удаление группы ресурсов. Политика не блокирует удаление ресурсов, которые не поддерживают расположение и теги, а также любые политики с mode:all.

Каскадное удаление

Каскадное удаление происходит, когда удаление родительского ресурса неявно удаляет все дочерние и расширенные ресурсы. Политика не блокирует удаление дочерних ресурсов и ресурсов расширения, если действие удаления предназначено для родительских ресурсов. Например, Microsoft.Insights/diagnosticSettings является расширением ресурса Microsoft.Storage/storageaccounts. denyAction Если политика направлена наMicrosoft.Insights/diagnosticSettings, попытка удаления параметра диагностики (дочернего) не удаётся, но удаление учетной записи хранения (родителя) автоматически удаляет параметр диагностики (расширение).

В этой таблице описывается, защищается ли ресурс от удаления, учитывая ресурс, применимый к назначенной denyAction политике и целевой DELETE области вызова. В контексте этой таблицы индексированные ресурсы — это ресурс, поддерживающий теги и расположения, а не индексированные ресурсы — это ресурс, который не поддерживает теги или расположения. Дополнительные сведения об индексированных и неиндексированных ресурсах см. в режиме определения. Дочерними называются ресурсы, существующие только в контексте другого ресурса. Например, ресурс расширения виртуальных машин является дочерним элементом виртуальной машины, являющейся родительским ресурсом.

Сущность удаляется Сущность, применимая к условиям политики Предпринятое действие
Ресурс Ресурс Защищено
Подписка Ресурс Удалено
Группа ресурсов Индексированные ресурсы Зависит от cascadeBehaviors
Группа ресурсов Не индексированные ресурсы Удалено
Дочерний ресурс Родительский ресурс Родитель защищен; дочерний объект удален
Родительский ресурс Дочерний ресурс Удалено

Свойства DenyAction

Свойство detailsdenyAction эффекта имеет все вложенные свойства, определяющие действие и поведение.

  • actionNames (обязательно)
    • Массив, указывающий действия, которые необходимо предотвратить выполнение.
    • Поддерживаемые имена действий: delete
  • cascadeBehaviors (необязательно)
    • Объект, определяющий, какое поведение следует, когда ресурс неявно удаляется при удалении группы ресурсов.
    • Поддерживается только в определениях политик с indexed.
    • Допустимые значения: allow или deny.
    • Значение по умолчанию: deny.

Пример DenyAction

Пример. Запретить любые вызовы удаления, предназначенные для учетных записей базы данных с средой тегов, равной prod. Так как каскадное поведение будет запрещено, блокируйте любой DELETE вызов, предназначенный для группы ресурсов с соответствующей учетной записью базы данных.

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.DocumentDb/accounts"
      },
      {
        "field": "tags.environment",
        "equals": "prod"
      }
    ]
  },
  "then": {
    "effect": "denyAction",
    "details": {
      "actionNames": [
        "delete"
      ],
      "cascadeBehaviors": {
        "resourceGroup": "deny"
      }
    }
  }
}

Следующие шаги