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


Структура назначения в службе "Политика Azure"

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

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

Например, в следующем формате JSON показан пример запроса на назначение политики в режиме DoNotEnforce с параметрами:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "definitionVersion": "1.*.*",
        "metadata": {
            "assignedBy": "Cloud Center of Excellence"
        },
        "enforcementMode": "DoNotEnforce",
        "notScopes": [],
        "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
        "nonComplianceMessages": [
            {
                "message": "Resource names must start with 'DeptA' and end with '-LC'."
            }
        ],
        "parameters": {
            "prefix": {
                "value": "DeptA"
            },
            "suffix": {
                "value": "-LC"
            }
        },
        "identity": {
            "type": "SystemAssigned"
        },
        "resourceSelectors": [],
        "overrides": []
    }
}

Область

Область, используемая для времени создания ресурса назначения, является основным драйвером применимости ресурсов. Дополнительные сведения о области назначения см. в разделе

Общие сведения о Политике Azure.

Идентификатор определения политики и версия (предварительная версия)

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

Для встроенных определений и инициатив можно использовать конкретные параметры definitionVersion , по которым можно оценить. По умолчанию версия будет иметь последнюю основную версию и автоматически вносить незначительные изменения и исправления.

Для автоматического приема дополнительных изменений определения будет указан #.*.*номер версии. Подстановочный знак представляет автоматическое прием обновлений. Чтобы закрепить дополнительный путь к версии, будет формат #.#.*версии. Все изменения исправлений должны быть автоматически возвращены для целей безопасности. Изменения исправлений ограничены текстовыми изменениями и сценариями разбиения.

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

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

Метаданные

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

Общие свойства метаданных

  • assignedBy (строка): понятное имя субъекта безопасности, создавшего назначение.
  • createdBy (строка): GUID субъекта безопасности, создавшего назначение.
  • createdOn (строка): универсальный формат ISO 8601 DateTime для времени создания назначения.
  • updatedBy (строка): понятное имя субъекта безопасности, обновившего назначение (если обновление имело место).
  • updatedOn (строка): универсальный формат ISO 8601 DateTime для времени обновления назначения (если обновление имело место).

Свойства конкретных метаданных сценария

  • parameterScopes (объект): набор пар "ключ-значение", в которых ключ соответствует заданному имени параметра strongType, а значение определяет область ресурса, используемую на портале для формирования списка доступных ресурсов путем сопоставления strongType. Портал задает это значение, если область отличается от области назначения. Если оно задано, изменение назначения политики на портале автоматически приводит к установке этого значения в качестве области параметра. Однако область при этом не фиксируется и может быть изменена.

    В следующем примере parameterScopes используется параметр strongType с именем backupPolicyId , который задает область выбора ресурсов при изменении назначения на портале.

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • evidenceStorages (объект): рекомендуемая учетная запись хранения по умолчанию, которая должна использоваться для хранения доказательств аттестации назначений политик с эффектом manual . Свойство displayName — это имя учетной записи хранения. Это evidenceStorageAccountID свойство является идентификатором ресурса учетной записи хранения. Это evidenceBlobContainer свойство — это имя контейнера BLOB-объектов, в котором планируется хранить доказательства.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

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

Необязательное resourceSelectors свойство упрощает безопасные методики развертывания (SDP), позволяя постепенно развертывать назначения политик на основе таких факторов, как расположение ресурсов, тип ресурса или расположение ресурса. При использовании селекторов ресурсов Политика Azure будет оценивать только ресурсы, применимые к спецификациям, сделанным в селекторах ресурсов. Селекторы ресурсов также можно использовать для уменьшения области исключений таким же образом.

В следующем примере назначение новой политики оценивается только в том случае, если расположение ресурса — восточная часть США или западная часть США.

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1.*",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

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

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1.*",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus", "centralus", "southcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Селекторы ресурсов имеют следующие свойства:

  • name: имя селектора ресурсов.

  • selectors: (Необязательно) Свойство, используемое для определения подмножества ресурсов, применимых к назначению политики, следует оценить для соответствия.

    • kind: свойство селектора, описывающее, какая характеристика сужает набор вычисляемых ресурсов. Каждый вид можно использовать только один раз в одном селекторе ресурсов. Допустимые значения:

      • resourceLocation: это свойство используется для выбора ресурсов на основе их типа. Не удается использовать в том же селекторе ресурсов, что resourceWithoutLocationи .

      • resourceType: это свойство используется для выбора ресурсов на основе их типа.

      • resourceWithoutLocation: это свойство используется для выбора ресурсов на уровне подписки, которые не имеют расположения. В настоящее время поддерживается subscriptionLevelResourcesтолько . Не удается использовать в том же селекторе ресурсов, что resourceLocationи .

    • in: список разрешенных значений для указанного kind. Не может использоваться с notIn. Может содержать до 50 значений.

    • notIn: список недопустимых значений для указанного kind. Не может использоваться с in. Может содержать до 50 значений.

Селектор ресурсов может содержать несколько селекторов. Для применения к селектору ресурсов ресурс должен соответствовать требованиям, указанным всеми его селекторами. Кроме того, в одном назначении можно указать до 10 селекторов ресурсов. Ресурсы в области оцениваются при удовлетворении любого из этих селекторов ресурсов.

Переопределения

Необязательное overrides свойство позволяет изменять эффект определения политики, не изменяя определение базовой политики или используя параметризованный эффект в определении политики.

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

Рассмотрим пример. Представьте, что у вас есть инициатива политики с именем CostManagement, которая включает определение пользовательской политики с policyDefinitionReferenceId corpVMSizePolicy и единый эффектaudit. Предположим, вы хотите назначить инициативу CostManagement , но пока не хотите видеть соответствие этой политике. Эффект аудита этой политики можно заменить отключенным путем переопределения назначения инициативы, как показано в следующем примере:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
        "overrides": [
            {
                "kind": "policyEffect",
                "value": "disabled",
                "selectors": [
                    {
                        "kind": "policyDefinitionReferenceId",
                        "in": [ "corpVMSizePolicy" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "CostManagement"
}

Еще одним распространенным вариантом использования переопределения является развертывание новой версии определения. Рекомендуемые действия по безопасному обновлению версии назначения см. в разделе "Безопасное развертывание политики".

Переопределения имеют следующие свойства:

  • kind: свойство, которое присваивается, переопределяется. Поддерживаемые типы и policyEffect policyVersion.

  • value: новое значение, переопределение существующего значения. Для kind: policyEffect, поддерживаемые значения являются эффектами. Для kind: policyVersionэтого поддерживаемое число версии должно быть больше или равно definitionVersion указанному в назначении.

  • selectors: (Необязательно) Свойство, используемое для определения области назначения политики, должно принимать переопределение.

    • kind: свойство селектора, описывающее, какая характеристика сузит область переопределения. Допустимые значения для kind: policyEffect:

      • policyDefinitionReferenceId: указывает, какие определения политики в назначении инициативы должны принимать на себя переопределение эффекта.

      • resourceLocation: это свойство используется для выбора ресурсов на основе их типа. Не удается использовать в том же селекторе ресурсов, что resourceWithoutLocationи .

      Допустимое значение для kind: policyVersion:

      • resourceLocation: это свойство используется для выбора ресурсов на основе их типа. Не удается использовать в том же селекторе ресурсов, что resourceWithoutLocationи .
    • in: список разрешенных значений для указанного kind. Не может использоваться с notIn. Может содержать до 50 значений.

    • notIn: список недопустимых значений для указанного kind. Не может использоваться с in. Может содержать до 50 значений.

Одно переопределение можно использовать для замены эффекта многих политик путем указания нескольких значений в массиве policyDefinitionReferenceId. Одно переопределение может использоваться для до 50 policyDefinitionReferenceIds, а одно назначение политики может содержать до 10 переопределений, вычисляется в том порядке, в котором они указаны. Перед созданием назначения эффект, выбранный в переопределении, проверяется в соответствии с правилом политики и списком разрешенных параметров (в случаях, когда эффект параметризуется).

Режим применения политик

Свойство enforcementMode предоставляет клиентам возможность проверить результат применения политики в существующих ресурсах без инициации эффекта политики или активации записей в журнале действий Azure.

Этот сценарий обычно называется What If и соответствует методикам безопасного развертывания. Действие enforcementMode отличается от действия Disabled, так как оно предотвращает оценку ресурсов.

Это свойство имеет следующие значения.

Режим Значение JSON Тип Устранение уязвимостей вручную Запись журнала действий Описание
Активировано Значение по умолчанию строка Да Да Этот эффект политики применяется при создании или обновлении ресурса.
Выключено DoNotEnforce строка Да Нет Этот эффект политики не применяется при создании или обновлении ресурса.

Если эффект enforcementMode не указан в определении политики или инициативы, используется значение по умолчанию. Для политик deployIfNotExists можно запустить задачи исправления, даже если для enforcementMode задано значение DoNotEnforce.

Исключенные области

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

Примечание.

Исключенный ресурс отличается от освобожденного ресурса. Дополнительные сведения см. в статье Общие сведения об области в Политике Azure.

Сообщения о несоответствии требованиям

Чтобы задать настраиваемое сообщение, которое описывает, почему ресурс не соответствует определению политики или определения, установите значение nonComplianceMessages в определении назначения. Этот узел представляет собой массив записей message. Это настраиваемое сообщение дополняет стандартное сообщение об ошибке о несоответствии требованиям и является необязательным.

Внимание

Настраиваемые сообщения о несоответствии требованиям поддерживаются только в определениях или инициативах с определениями режимов диспетчера ресурсов.

"nonComplianceMessages": [
    {
        "message": "Default message"
    }
]

Если назначение предназначено для инициативы, для каждого определения политики в инициативе можно настроить различные сообщения. В сообщениях используется значение policyDefinitionReferenceId, настроенное в определении инициативы. Дополнительные сведения см. в разделе Свойства определений политик.

"nonComplianceMessages": [
    {
        "message": "Default message"
    },
    {
        "message": "Message for just this policy definition by reference ID",
        "policyDefinitionReferenceId": "10420126870854049575"
    }
]

Параметры

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

"parameters": {
    "prefix": {
        "value": "DeptA"
    },
    "suffix": {
        "value": "-LC"
    }
}

В этом примере используются параметры prefix и suffix, которые определены ранее в определении политики. Это конкретное назначение политики задает для параметра prefix значение DeptA, а для suffix — LC. Одно и то же определение политики можно повторно использовать с другим набором параметров для другого отдела, это сокращает уровень дублирования и сложности определений политик и обеспечивает гибкость.

Идентификация

Для назначений политик с набором эффектов для развертыванияIfNotExist или изменения необходимо иметь свойство удостоверения для исправления несоответствующих ресурсов. При использовании удостоверения пользователь также должен указать расположение назначения.

Примечание.

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

# System-assigned identity
 "identity": {
    "type": "SystemAssigned"
  }
# User-assigned identity
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

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