Структура назначения в службе "Политика Azure"
Назначения политик определяют, какие ресурсы оцениваются определением или инициативой политики. Кроме того, назначение политики может определить значения параметров для этой группы ресурсов во время назначения, что позволяет повторно использовать определения политик, которые обращаются к тем же свойствам ресурсов с различными потребностями соответствия требованиям.
Для создания назначения политики используется нотация объектов JavaScript (JSON). Назначение политики содержит следующие элементы:
- область
- Идентификатор определения политики и версия
- display name
- описание
- metadata
- селекторы ресурсов
- Переопределения
- режим принудительного применения
- исключенные области
- сообщения о несоответствии
- parameters
- identity
Например, в следующем формате 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": {}
}
},
Следующие шаги
- Узнайте больше о структуре определения политик.
- Узнайте о программном создании политик.
- Узнайте, как получать данные о соответствии.
- Узнайте, как исправлять несоответствующие ресурсы.
- Дополнительные сведения о группе управления см. в статье Упорядочивание ресурсов с помощью групп управления Azure.