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


Структура исключения из Политики Azure

Функция исключений из Политики Azure используется для исключения иерархии ресурсов или отдельного ресурса из оценки инициатив или определений. Ресурсы, освобожденные от учёта, учитываются при определении общего соответствия, но не могут оцениваться или получить временное освобождение. Дополнительные сведения см. в разделе Применимость в Azure Policy. Исключения из политики Azure также применимы к следующим режимам диспетчера ресурсов: Microsoft.Kubernetes.Data, Microsoft.KeyVault.Data, и Microsoft.Network.Data.

Для создания исключения политики используется нотация объектов JavaScript (JSON). Исключение из политики содержит следующие элементы:

Исключение политики создается как дочерний объект в иерархии ресурсов или для отдельного ресурса, для которого предоставлено исключение. Исключения невозможно создать на уровне компонента режима поставщика ресурсов. Если родительский ресурс, к которому применяется исключение, удаляется, то исключение также удаляется.

Например, в следующем JSON показано исключение из политики в категории waiver для ресурса в рамках назначения инициативы с именем resourceShouldBeCompliantInit. Ресурс освобожден только от двух определений политики в инициативе: customOrgPolicy от настраиваемого определения политики ( policyDefinitionReferenceId: requiredTags) и от встроенного определения политики Разрешенные расположения ( policyDefinitionReferenceId: allowedLocations).

{
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
  "apiVersion": "2020-07-01-preview",
  "name": "resourceIsNotApplicable",
  "type": "Microsoft.Authorization/policyExemptions",
  "properties": {
    "displayName": "This resource is scheduled for deletion",
    "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
    "metadata": {
      "requestedBy": "Storage team",
      "approvedBy": "IA",
      "approvedOn": "2020-07-26T08:02:32.0000000Z",
      "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
    },
    "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
    "policyDefinitionReferenceId": [
      "requiredTags",
      "allowedLocations"
    ],
    "exemptionCategory": "waiver",
    "expiresOn": "2020-12-31T23:59:00.0000000Z",
    "assignmentScopeValidation": "Default"
  }
}

Отображаемое имя и описание

Вы используете displayName и description, чтобы определить исключение политики и предоставить контекст для его использования с определенным ресурсом. displayNameимеет максимальную длину 128 символов и максимальную длину description символов.

Метаданные

Свойство metadata позволяет создавать любые дочерние свойства, необходимые для хранения соответствующей информации. В примере свойства requestedBy, approvedBy, approvedOn и ticketRef содержат значения клиентов для предоставления сведений о том, кто запрашивал исключение, кто одобрил его и когда, а также внутренний трекинговый тикет для запроса. Эти metadata свойства являются примерами, но они не являются обязательными и metadata не ограничиваются этими дочерними свойствами.

Идентификатор назначения политики

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

Идентификаторы определения политик

Если policyAssignmentId предназначено для назначения инициативы, то свойство policyDefinitionReferenceId может использоваться для указания определения политики в инициативе, для которой ресурс рассматриваемого элемента имеет исключение. Так как ресурс может быть исключен из одного или нескольких включенных определений политик, это свойство является массивом. Значения должны соответствовать значениям в определении инициативы в полях policyDefinitions.policyDefinitionReferenceId.

Категория исключения

Существуют две категории исключения, которые используются для группирования исключений:

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

Истечение срока действия

Чтобы указать, что иерархия ресурсов или отдельный ресурс больше не исключены из назначения, настройте свойство expiresOn. Это необязательное свойство должно представлять собой дату и время в универсальном формате ISO 8601: yyyy-MM-ddTHH:mm:ss.fffffffZ.

Примечание.

Исключения из политик не удаляются по достижении даты expiresOn. Объект сохраняется для учета, но исключение больше не выполняется.

Селекторы ресурсов

Исключения поддерживают необязательное свойство resourceSelectors, которое работает так же, как и в назначениях. Свойство позволяет постепенно развертывать или откатывать освобождение для определенных подмножеств ресурсов управляемым образом на основе типа ресурса, местоположения ресурса или наличия у ресурса местоположения. Дополнительные сведения об использовании селекторов ресурсов можно найти в структуре назначения. Следующий код JSON является примером исключения, использующего селекторы ресурсов. В этом примере только ресурсы westcentralus исключены из назначения политики:

{
  "properties": {
    "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "resourceSelectors": [
      {
        "name": "TemporaryMitigation",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "westcentralus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Регионы можно добавить или удалить из resourceLocation списка в примере. Селекторы ресурсов обеспечивают большую гибкость в том, где и как можно создавать и управлять исключениями.

Проверка области назначения задания (предварительная версия)

В большинстве случаев область исключения проверяется, чтобы убедиться, что она находится в пределах области назначения политики или ниже. Необязательное свойство assignmentScopeValidation может предоставить возможность для исключения обхода этого процесса проверки и быть созданным вне области назначения. Эта проверка предназначена для ситуаций, когда подписка должна быть перемещена из одной группы управления (MG) в другую, но перемещение будет заблокировано политикой из-за свойств ресурсов в подписке. В этом сценарии можно создать освобождение для подписки, находящейся в текущей MG, чтобы исключить её ресурсы из назначения политики на целевую MG. Таким образом, когда подписка перемещается в целевую MG, операция не блокируется, так как ресурсы уже освобождены от назначенной политики. Использование этого свойства показано в следующем примере:

{
  "properties": {
    "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgName}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "assignmentScopeValidation": "DoNotValidate",
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Разрешены следующие значения для assignmentScopeValidation: Default и DoNotValidate. Если не указано, происходит процесс проверки по умолчанию.

Необходимые разрешения

Разрешения управления доступом на основе ролей Azure (Azure RBAC), необходимые для управления объектами исключения политик, находятся в Microsoft.Authorization/policyExemptions группе операций. Встроенные роли Участник политики ресурсов и Администратор безопасности имеют разрешения read и write, а Средство записи данных Policy Insights (предварительная версия) — разрешение read.

Исключения имеют дополнительные меры безопасности из-за эффекта предоставления исключения. Помимо выполнения операции Microsoft.Authorization/policyExemptions/write с иерархией ресурсов или отдельным ресурсом, создатель исключения должен включить в целевое назначение команду exempt/Action.

Создание исключений и управление ими

Исключения рекомендуется применять в сценариях, ограниченных по времени или в особых ситуациях, когда необходимо отслеживать ресурсы или иерархию ресурсов, которые обычно подлежат оценке, но есть конкретная причина, по которой их не следует оценивать на соответствие требованиям. Например, если среда имеет встроенное определение Storage accounts should disable public network access (идентификатор b2982f36-99f2-4db5-8eff-283140c09693) с назначением эффекта на аудит. При оценке соответствия ресурс StorageAcc1 не соответствует требованиям, но StorageAcc1 должен иметь доступ к общедоступной сети для бизнес-целей. В тот момент необходимо отправить запрос на создание ресурса исключения, предназначенного для StorageAcc1. После создания исключения StorageAcc1 отображается как освобождён в проверке соответствия требованиям.

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

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