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

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

Примечание.

Дополнительные сведения об области применения Политики Azure приведены в статье Общие сведения об области в Политике Azure.

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

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

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "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 см. в примерах для Политики Azure.

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

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

Метаданные

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

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

  • assignedBy (строка): понятное имя субъекта безопасности, создавшего назначение.

  • createdBy (строка): GUID субъекта безопасности, создавшего назначение.

  • createdOn (строка): универсальный формат ISO 8601 DateTime для времени создания назначения.

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

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

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • updatedBy (строка): понятное имя субъекта безопасности, обновившего назначение (если обновление имело место).

  • updatedOn (строка): универсальный формат ISO 8601 DateTime для времени обновления назначения (если обновление имело место).

  • 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, которая включает определение пользовательской политики с policyDefinitionReferenceIdcorpVMSizePolicy и единый эффект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

  • value: новое значение, переопределение существующего значения. Поддерживаемые значения — это эффекты.

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

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

      • policyDefinitionReferenceId: указывает, какие определения политики в назначении инициативы должны принимать на себя переопределение эффекта.
    • 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.

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

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

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

Чтобы задать настраиваемое сообщение, которое описывает, почему ресурс не соответствует определению политики или определения, установите значение 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": {}
    }
  },

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