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


Структура назначения в службе "Политика 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 значений.

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

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

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

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

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

{
  "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 policyDefinitionReferenceId, а одно назначение политики может содержать до 10 переопределения, вычисляется в том порядке, в котором они указаны. Перед созданием назначения эффект, выбранный в переопределении, проверяется в соответствии с правилом политики и списком разрешенных параметров (в случаях, когда эффект параметризуется).

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

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

Этот сценарий обычно называется "Что если " и соответствует методам безопасного развертывания. Действие 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. Одно и то же определение политики можно повторно использовать с другим набором параметров для другого отдела, это сокращает уровень дублирования и сложности определений политик и обеспечивает гибкость.

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

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

Примечание.

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

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

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