Краткое руководство. Создание назначения политики для выявления несоответствующих ресурсов с помощью Azure CLI

Чтобы понять, соответствуют ли ресурсы требованиям в Azure, прежде всего нужно определить их состояние. В этом кратком руководстве описано, как создать назначение политики для выявления несоответствующих ресурсов с помощью Azure CLI. Политика назначается группе ресурсов и проверяет виртуальные машины, которые не используют управляемые диски. После создания назначения политики вы определите несоответствующие виртуальные машины.

Azure CLI используется для создания ресурсов Azure и управления ими из командной строки или с помощью сценариев. В этом руководстве используется Azure CLI для создания назначения политики для определения в среде Azure ресурсов, не соответствующих требованиям.

Необходимые компоненты

  • Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
  • Azure CLI.
  • Visual Studio Code.
  • Microsoft.PolicyInsightsнеобходимо зарегистрировать в подписке Azure. Чтобы зарегистрировать поставщика ресурсов, необходимо иметь разрешение на регистрацию поставщиков ресурсов. Это разрешение включается в роли участника и владельца.
  • Группа ресурсов с хотя бы одной виртуальной машиной, которая не использует управляемые диски.

Подключение к 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>

Регистрация поставщика ресурсов

Когда поставщик ресурсов зарегистрирован, он доступен для использования в подписке Azure.

Чтобы проверить, зарегистрировано ли Microsoft.PolicyInsights оно, выполните команду Get-AzResourceProvider. Поставщик ресурсов содержит несколько типов ресурсов. Если результат выполняется NotRegisteredRegister-AzResourceProvider:

az provider show \
  --namespace Microsoft.PolicyInsights \
  --query "{Provider:namespace,State:registrationState}" \
  --output table

az provider register --namespace Microsoft.PolicyInsights

Команды Azure CLI используют обратную косую черту (\) для продолжения строки для улучшения удобочитаемости. Дополнительные сведения см. в az provider.

Создание назначения политики

Используйте следующие команды, чтобы создать новое назначение политики для группы ресурсов. В этом примере используется существующая группа ресурсов, содержащая виртуальную машину без управляемых дисков. Группа ресурсов — это область назначения политики. В этом примере используются встроенные виртуальные машины аудита политики, которые не используют управляемые диски.

Выполните следующие команды и замените <resourceGroupName> именем группы ресурсов:

rgid=$(az group show --resource-group <resourceGroupName> --query id --output tsv)

definition=$(az policy definition list \
  --query "[?displayName=='Audit VMs that do not use managed disks']".name \
  --output tsv)

Переменная rgid сохраняет идентификатор группы ресурсов. Переменная definition сохраняет имя определения политики, которое является GUID.

Выполните следующую команду, чтобы создать назначение политики:

az policy assignment create \
  --name 'audit-vm-managed-disks' \
  --display-name 'Audit VM managed disks' \
  --scope $rgid \
  --policy $definition \
  --description 'Azure CLI policy assignment to resource group'
  • name создает имя назначения политики, используемое в назначении ResourceId.
  • display-name— имя назначения политики и отображается в портал Azure.
  • scope$rgid использует переменную для назначения политики группе ресурсов.
  • policy назначает определение политики, хранящееся в переменной $definition .
  • description можно использовать для добавления контекста о назначении политики.

Результаты назначения политики похожи на следующий пример:

"description": "Azure CLI policy assignment to resource group",
"displayName": "Audit VM managed disks",
"enforcementMode": "Default",
"id": "/subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks",
"identity": null,
"location": null,
"metadata": {
  "createdBy": "11111111-1111-1111-1111-111111111111",
  "createdOn": "2024-02-23T18:42:27.4780803Z",
  "updatedBy": null,
  "updatedOn": null
},
"name": "audit-vm-managed-disks",

Если вы хотите повторно воспроизвести сведения о назначении политики, выполните следующую команду:

az policy assignment show --name "audit-vm-managed-disks" --scope $rgid

Дополнительные сведения см. в az policy assignment.

Выявление несоответствующих ресурсов

Состояние соответствия для нового назначения политики занимает несколько минут, чтобы стать активным и предоставить результаты о состоянии политики.

Используйте следующую команду, чтобы определить ресурсы, которые не соответствуют созданному назначению политики:

policyid=$(az policy assignment show \
  --name "audit-vm-managed-disks" \
  --scope $rgid \
  --query id \
  --output tsv)

az policy state list --resource $policyid --filter "(isCompliant eq false)"

Переменная policyid использует выражение для получения идентификатора назначения политики. Параметр filter ограничивает выходные данные несоответствующим ресурсам.

Выходные данные подробные az policy state list , но для этой статьи complianceState показаны NonCompliant:

"complianceState": "NonCompliant",
"components": null,
"effectiveParameters": "",
"isCompliant": false,

Дополнительные сведения см. в az policy state.

Очистка ресурсов

Чтобы удалить назначение политики, выполните следующую команду:

az policy assignment delete --name "audit-vm-managed-disks" --scope $rgid

Чтобы выйти из сеанса Azure CLI, выполните приведенные действия.

az logout

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

В этом кратком руководстве вы назначили определение политики для идентификации ресурсов, не соответствующих требованиям, в среде Azure.

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