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

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

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

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

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

{
    "id": "/subscriptions/{subId}/resourceGroups/ExemptRG/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",
        "policyDefinitionReferenceIds": [
            "requiredTags",
            "allowedLocations"
        ],
        "exemptionCategory": "waiver",
        "expiresOn": "2020-12-31T23:59:00.0000000Z",
        "assignmentScopeValidation": "Default"
    }
}

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

Параметры displayName (отображаемое имя) и description (описание) используются для обозначения исключения из политики и предоставления контекста для его использования в определенном ресурсе. Максимальная длина displayName составляет 128 символов, а description — 512 символов.

Метаданные

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

Разрешения RBAC Azure, необходимые для управления объектами исключений из политик, находятся в группе операций 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назначается с набором эффектов для аудита. При оценке соответствия ресурс "служба хранилища Acc1" не соответствует требованиям, но служба хранилища Acc1 должен иметь доступ к общедоступной сети для бизнес-целей. В то время необходимо отправить запрос, чтобы создать ресурс исключения, предназначенный для служба хранилища Acc1. После создания исключения служба хранилища Acc1 будет отображаться как исключение в проверке соответствия требованиям.

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

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