Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы понять, соответствуют ли ресурсы требованиям в Azure, прежде всего нужно определить их состояние. В этом кратком руководстве описано, как создать назначение политики для выявления несоответствующих ресурсов с помощью REST API. Политика назначается группе ресурсов и проверяет виртуальные машины, которые не используют управляемые диски. После создания назначения политики вы определите несоответствующие виртуальные машины.
В этом руководстве REST API используется для создания назначения политики для определения в среде Azure ресурсов, не соответствующих требованиям. Примеры, приведенные в этой статье, используют PowerShell и команды Azure CLI az rest . Вы также можете выполнять az rest команды из оболочки Bash, например Git Bash.
При назначении встроенной политики или определения инициативы необязательно ссылаться на версию. Назначения политик встроенных определений по умолчанию ссылаются на последнюю версию и автоматически наследуют незначительные изменения версии, если не указано иное.
Предварительные требования
- Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Последняя версия PowerShell или оболочка Bash, например Git Bash.
- Последняя версия Azure CLI.
- Visual Studio Code.
- Группа ресурсов с хотя бы одной виртуальной машиной, которая не использует управляемые диски.
Проверка синтаксиса REST API
Существует два элемента для выполнения команд REST API: URI REST API и текста запроса. Для получения информации перейдите в Назначения политик — создание.
В следующем примере показан синтаксис URI REST API для создания определения политики.
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
-
scope: Область действия определяет, на какие ресурсы или группу ресурсов применяется назначение политики. Она может варьироваться от группы управления до отдельного ресурса. Замените{scope}одним из следующих шаблонов:- Группа управления:
/providers/Microsoft.Management/managementGroups/{managementGroup} - Подписка:
/subscriptions/{subscriptionId} - Группа ресурсов:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Ресурс:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}.
- Группа управления:
-
policyAssignmentName: создает имя политики для вашего назначения. Имя включено в свойствоpolicyAssignmentIdназначения политики.
В следующем примере приведен пример JSON для создания файла текста запроса.
{
"properties": {
"displayName": "",
"description": "",
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
"nonComplianceMessages": [
{
"message": ""
}
]
}
}
-
displayName: отображаемое имя назначения политики. -
description: можно использовать для добавления контекста назначения политики. -
policyDefinitionId: идентификатор определения политики, создающий назначение. -
nonComplianceMessages: задайте сообщение для использования, если ресурс оценивается как несоответствующий. Дополнительные сведения см. в сообщениях о несоответствии заданий.
Подключение к Azure
Из сеанса терминала Visual Studio Code подключитесь к Azure. Если у вас несколько подписок, выполните команды, чтобы задать контекст для подписки. Замените <subscriptionID> идентификатором своей подписки Azure.
az login
# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>
Используйте az login даже если вы используете PowerShell, так как в примерах используются команды Azure CLI az rest .
Создание назначения политики
В этом примере вы создаете назначение политики и применяете определение аудита виртуальных машин, которые не используют управляемые диски.
Для создания задания требуется тело запроса. Сохраните следующий код JSON в файле с именем request-body.json.
{
"properties": {
"displayName": "Audit VM managed disks",
"description": "Policy assignment to resource group scope created with REST API",
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
"nonComplianceMessages": [
{
"message": "Virtual machines should use managed disks"
}
]
}
}
Чтобы создать назначение политики в существующей области группы ресурсов, используйте следующий URI REST API с файлом для текста запроса. Замените {subscriptionId} и {resourceGroupName} собственными значениями. Команда отображает выходные данные JSON в терминале.
az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01 --body `@request-body.json
В PowerShell, чтобы задать имя файла, необходимо использовать обратную кавычку (`), чтобы экранировать (at sign) (@). В такой оболочке Bash, как Git Bash, не используйте обратную кавычку.
Для получения информации перейдите в Назначения политик — создание.
Выявление несоответствующих ресурсов
Состояние выполнения нового назначения политики становится активным через несколько минут, предоставляя результаты о состоянии политики. REST API используется для отображения несоответствуемых ресурсов для этого назначения политики, а выходные данные — в ФОРМАТЕ JSON.
Чтобы определить несоответствующие ресурсы, выполните следующую команду. Замените значения {subscriptionId} и {resourceGroupName} на те, которые вы использовали при создании назначения политики.
az rest --method post --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01 --uri-parameters `$filter="complianceState eq 'NonCompliant' and PolicyAssignmentName eq 'audit-vm-managed-disks'"
Запрашиваются filter ресурсы, которые оцениваются как несовместимые с определением политики с именем audit-vm-managed-disks, которое вы создали с назначением политики. Опять же, обратите внимание, что косая кавычка используется для экранирования знака доллара ($) в фильтре. Для клиента Bash обратная косая черта (\) является общим escape-символом.
Ваши результаты должны быть похожи на следующий пример:
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
"@odata.count": 1,
"@odata.nextLink": null,
"value": [
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"@odata.id": null,
"complianceReasonCode": "",
"complianceState": "NonCompliant",
"effectiveParameters": "",
"isCompliant": false,
"managementGroupIds": "",
"policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks",
"policyAssignmentName": "audit-vm-managed-disks",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "",
"policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"policyAssignmentVersion": "",
"policyDefinitionAction": "audit",
"policyDefinitionCategory": "tbd",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
"policyDefinitionName": "06a78e20-9358-41c9-923c-fb736d382a4d",
"policyDefinitionReferenceId": "",
"policyDefinitionVersion": "1.0.0",
"policySetDefinitionCategory": "",
"policySetDefinitionId": "",
"policySetDefinitionName": "",
"policySetDefinitionOwner": "",
"policySetDefinitionParameters": "",
"policySetDefinitionVersion": "",
"resourceGroup": "{resourceGroupName}",
"resourceId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}>",
"resourceLocation": "westus3",
"resourceTags": "tbd",
"resourceType": "Microsoft.Compute/virtualMachines",
"subscriptionId": "{subscriptionId}",
"timestamp": "2024-03-26T02:19:28.3720191Z"
}
]
}
Для получения дополнительной информации см. "Состояния политики" — список результатов запроса для группы ресурсов.
Очистка ресурсов
Чтобы удалить назначение политики, используйте следующую команду. Замените значения {subscriptionId} и {resourceGroupName} на те, которые вы использовали при создании назначения политики. Команда отображает выходные данные JSON в терминале.
az rest --method delete --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
Вы можете проверить, что назначение политики было удалено с помощью следующей команды. Сообщение отображается в вашей оболочке.
az rest --method get --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
The policy assignment 'audit-vm-managed-disks' is not found.
Дополнительные сведения см. в разделах «Назначения политик — Удаление» и «Назначения политик — Получить».
Следующие шаги
В этом кратком руководстве вы назначили определение политики для идентификации ресурсов, не соответствующих требованиям, в среде Azure.
Дополнительные сведения о назначении политик, проверяющих соответствие ресурсов, см. в этом руководстве.