Получение данных о соответствии ресурсам Azure

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

Прежде чем просматривать данные о соответствии, важно понимать состояния соответствия в политике Azure.

Существует несколько способов доступа к информации о соблюдении, созданной вашей политикой и назначениями инициатив:

Прежде чем рассматривать методы для отчета о соответствии, давайте рассмотрим, когда информация о соответствии обновляется, а также частоту и события, которые активируют цикл оценки.

Триггеры оценки

Результаты завершенного цикла оценки доступны через операции Microsoft.PolicyInsights и PolicyStates в поставщике ресурсов PolicyEvents. Дополнительные сведения об операциях REST API Аналитики политик Azure см. в статье "Аналитика политик Azure".

Оценки назначенных политик и инициатив происходят в результате различных событий:

  • Политика или инициатива вновь назначается области. Для применения назначения к определенной области требуется около пяти минут, а затем цикл оценки начинается для применимых ресурсов в отношении вновь назначенной политики или инициативы. В зависимости от используемых эффектов ресурсы помечаются как соответствующие, несоответствующие, исключенные или неизвестные. Большая политика или инициатива, оцененная по большому объему ресурсов, может занять некоторое время, поэтому не существует предопределенного ожидания завершения цикла оценки. После завершения процесса обновленные результаты соответствия становятся доступными на портале и наборах для разработки программного обеспечения (SDK).
  • Политика или инициатива, уже назначенная для области применения, обновляется. Цикл оценки и временные рамки для этого сценария совпадают с новым назначением в области.
  • Ресурс развертывается в область применения или обновляется по назначению через Azure Resource Manager, REST API или поддерживаемый пакет SDK. В этом сценарии событие эффекта (добавление, аудит, запрет, развертывание) и соответствующие сведения о состоянии отдельного ресурса становятся доступными на портале и пакетах SDK примерно через 15 минут. Это событие не приводит к оценке других ресурсов.
  • Подписка (тип Microsoft.Resources/subscriptionsресурса) создается или перемещается в иерархии групп управления с назначенным определением политики, предназначенным для типа ресурса подписки. Оценка поддерживаемых эффектов подписки (audit, auditIfNotExist, deployIfNotExists, modify), ведения журнала и любых действий по исправлению занимает около 30 минут.
  • Исключение политическое создается, обновляется или удаляется. В этом сценарии соответствующее назначение оценивается для определенной области льгот.
  • Цикл оценки соответствия стандарту. Каждые 24 часа назначения автоматически переоцениваются. Большая политика или инициатива многих ресурсов может занять некоторое время, поэтому предопределенное ожидание завершения цикла оценки отсутствует. После завершения обновленные результаты соответствия будут доступны в портале и SDK.
  • Поставщик ресурсов конфигурации компьютера обновляется управляемым ресурсом с подробными сведениями о соответствии.
  • Проверка по запросу.

Примечание

По замыслу политика Azure освобождает от оценки политики все ресурсы под поставщиком ресурса Microsoft.Resources, за исключением подписок и групп ресурсов, которые подлежат оценке.

Проверка оценки по запросу

Запустить оценочную проверку для подписки или группы ресурсов можно с использованием REST, Azure CLI, Azure PowerShell, расширения Azure Policy для Visual Studio Code или действия Azure Policy Compliance Scan GitHub. Сканирование по запросу — это асинхронный процесс, который занимает много времени для выполнения, так как ресурсы оцениваются по всем назначенным политикам.

Примечание

Не все поставщики ресурсов Azure поддерживают проверки по запросу. Например, диспетчер виртуальных сетей Azure (AVNM) в настоящее время не поддерживает триггеры вручную или стандартный цикл оценки соответствия политик (ежедневные проверки).

Проверка оценки по запросу с помощью REST

В качестве асинхронного процесса конечная точка REST для запуска сканирования не ожидает его завершения перед ответом. Вместо этого он предоставляет универсальный код ресурса (URI) для запроса состояния запрошенной оценки.

В каждом URI REST API существуют переменные, которые необходимо заменить собственными значениями:

  • {resourceGroupName}: замените именем группы ресурсов.
  • {subscriptionId}: замените идентификатором подписки.

Сканирование поддерживает оценку ресурсов в подписке или в группе ресурсов. Запустите сканирование по охвату с помощью команды POST REST API, используя следующие структуры URI:

Чтобы оценить подписку, используйте следующую команду. Вы можете выполнить команду из браузера в Policy States - Trigger Subscription Evaluation с помощью опции Попробовать.

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01

Чтобы оценить группу ресурсов, используйте следующую команду. Вы можете выполнить команду из браузера в состояниях политики— активировать оценку группы ресурсов с помощью параметра "Попробовать".

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01

Вызовы REST API для подписок и групп ресурсов возвращают статус 202 Принято. В заголовке ответа содержится свойство со следующим форматом: location

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01

{ResourceContainerGUID} статически создается для запрошенной области. Если область уже выполняет проверку по запросу, новая проверка не запускается. Вместо этого новому запросу предоставляется тот же {ResourceContainerGUID}location унифицированный указатель ресурса (URI) для состояния. Команда GET REST API к location URI возвращает 202 Accepted во время проверки. После завершения оценочного сканирования возвращается состояние 200 ОК. Тело завершенной проверки — это ответ JSON со статусом: succeeded.

Проверка оценки по запросу с помощью Azure CLI

Проверка соответствия запускается с помощью команды az policy state trigger-scan .

По умолчанию az policy state trigger-scan запускает оценку для всех ресурсов в текущей подписке. Чтобы запустить оценку для определенной группы ресурсов, используйте resource-group этот параметр. В следующем примере запускается проверка соответствия в текущей подписке для группы ресурсов. Замените resourceGroupName именем группы ресурсов:

az policy state trigger-scan --resource-group "resourceGroupName"

Вы можете не ожидать завершения асинхронного процесса, прежде чем продолжать работу с параметром no-wait .

Проверка оценки по запросу с помощью Azure PowerShell

Проверка соответствия запущена с помощью командлета Start-AzPolicyComplianceScan .

По умолчанию Start-AzPolicyComplianceScan запускает оценку для всех ресурсов в текущей подписке. Чтобы запустить оценку для определенной группы ресурсов, используйте ResourceGroupName этот параметр. В следующем примере запускается проверка соответствия в текущей подписке для группы ресурсов. Замените resourceGroupName именем группы ресурсов:

Start-AzPolicyComplianceScan -ResourceGroupName 'resourceGroupName'

Вы можете дождаться завершения асинхронного вызова в PowerShell перед тем, как предоставить результаты, или запустить его в фоновом режиме в качестве задания. Чтобы использовать задание PowerShell для выполнения проверки соответствия требованиям в фоновом режиме, используйте AsJob параметр и задайте для объекта значение, например $job в этом примере:

$job = Start-AzPolicyComplianceScan -AsJob

Вы можете проверить состояние задания, проверив $job объект. Задание имеет тип Microsoft.Azure.Commands.Common.AzureLongRunningJob. Используйте Get-Member на объекте $job, чтобы увидеть доступные свойства и методы.

Пока выполняется проверка соответствия требованиям, отслеживайте следующие результаты вывода объекта $job:

$job

Id     Name              PSJobTypeName     State    HasMoreData     Location   Command
--     ----              -------------     -----    -----------     --------   -------
2      Long Running O... AzureLongRunni... Running  True            localhost  Start-AzPolicyCompliance...

После завершения проверки соответствия свойство изменится на Завершено.

Сканирование по запросу с использованием Visual Studio Code

Расширение политики Azure для Visual Studio Code может выполнять проверку оценки для определенного ресурса. Этот скан является синхронным процессом, в отличие от методов Azure PowerShell и REST. Дополнительные сведения и инструкции см. в разделе "Оценка по запросу" с расширением VS Code.

Проверка оценки по запросу с помощью GitHub Actions

Используйте действие проверки соответствия политик Azure, чтобы запустить оценочную проверку по запросу из рабочего процесса GitHub на одном или нескольких ресурсах, группах ресурсов или подписках, и управлять рабочим процессом на основании состояния соответствия ресурсов. Вы также можете настроить рабочий процесс для запуска в запланированное время, чтобы получить последнее состояние соответствия в удобное время. При необходимости GitHub Actions может создать отчет о состоянии соответствия сканированных ресурсов для дальнейшего анализа или архивации.

В следующем примере выполняется проверка соответствия для подписки. В scopes используйте идентификатор подписки.

on:
  schedule:
    - cron:  '0 8 * * *'  # runs every morning 8am
jobs:
  assess-policy-compliance:
    runs-on: ubuntu-latest
    steps:
    - name: Login to Azure
      uses: azure/login@v2
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}

    - name: Check for resource compliance
      uses: azure/policy-compliance-scan@v0
      with:
        scopes: |
          /subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e

Дополнительные сведения и примеры рабочих процессов см. в репозитории GitHub Actions for Azure Policy Compliance Scan.

Portal

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

Снимок экрана: страница соответствия требованиям, параметры фильтрации и сведения.

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

Снимок экрана страницы сведений о соответствии, включая количество и подробности соответствия ресурсов.

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

Для ресурсов режима поставщика ресурсов на вкладке "Соответствие ресурсам " выберите ресурс, чтобы открыть сведения о соответствии компонентов. Эта страница также предлагает вкладки для просмотра политик, назначенных этому ресурсу, и журнала изменений.

Снимок экрана: вкладка

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

Снимок экрана: журнал действий для действий и оценки политик Azure.

Примечание

Результаты соответствия, даже в том же формате, что показан выше, можно экспортировать с портала, используя запросы Azure Resource Graph.

Командная строка

Те же сведения, доступные на портале, можно получить с помощью REST API, Azure CLI и Azure PowerShell.

REST API

Дополнительные сведения о REST API см. в справочнике по политике Azure . Справочные страницы REST API имеют параметр Try It для каждой операции, которая позволяет выполнять команду в браузере. Вы также можете использовать Azure CLI или предпочитаемый клиент REST API для выполнения команд.

Сводка результатов

С помощью REST API можно суммировать по контейнерам, определению или назначению. Ниже приведен пример суммирования на уровне подписки с использованием функции Summarize For Subscription в Azure Policy Insight.

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01

Выходная информация суммирует подписку, а сводка соответствия находится в свойствах nonCompliantResources и nonCompliantPolicies. Этот запрос содержит другие сведения, включая каждое назначение, которое образовало несоответствующие цифры, и определение для каждого назначения. Каждый объект политики в иерархии предоставляет queryResultsUri, который можно использовать для получения более подробной информации на этом уровне.

Запрос ресурсов

В предыдущем примере value.policyAssignments.policyDefinitions.results.queryResultsUri предоставляет пример URI для всех несоответствующих ресурсов для определенного определения политики. В значении $filter ComplianceState равен (eq) NonCompliant, PolicyAssignmentId указывается для определения политики, а затем используется сам PolicyDefinitionId. Причина включения PolicyAssignmentId в фильтр заключается в том, что PolicyDefinitionId может существовать в нескольких назначениях политик или инициатив с различными сферами. Указав как PolicyAssignmentId, так и PolicyDefinitionId, мы можем четко определить, какие результаты мы ищем. PolicyStates Ранее мы использовалиlatest, что автоматически задает from и to период времени за последние 24 часа.

queryResultsUri Пример значения:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2025-01-01 04:28:22Z&$to=2025-02-10 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'

Просмотреть события

При создании или обновлении ресурса создается результат оценки политики. Результаты называются событиями политики. Используйте следующий универсальный код ресурса (URI) для просмотра последних событий политики, связанных с подпиской.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01

Дополнительные сведения о запросах событий политики см. в разделе "События политики Azure".

Azure CLI

Группа команд Azure CLI для политики Azure охватывает большинство операций, доступных в REST или Azure PowerShell. Полный список доступных команд см. в az policy.

Получите сводку состояния для самой назначенной политики с наибольшим количеством несоответствуемых ресурсов.

az policy state summarize --top 1

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

az policy state list --top 1

Получите сведения обо всех несоответствуемых ресурсах виртуальной сети.

az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"

Получить события, связанные с несоответствующими ресурсами виртуальной сети, которые произошли после определенной даты. from Используйте параметр с датой в формате ISO 8601.

az policy event list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2025-02-10T00:00:00Z'

Azure PowerShell

Вы можете выполнить следующие команды из Azure Cloud Shell.

Получите сводку состояния для наиболее приоритетной назначенной политики с наибольшим количеством несоответствующих ресурсов.

Get-AzPolicyStateSummary -Top 1

Получите запись состояния для наиболее недавно оценённого ресурса. Выходные данные по умолчанию — по метке времени в порядке убывания.

Get-AzPolicyState -Top 1

Получите сведения обо всех несоответствуемых ресурсах виртуальной сети.

Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"

Получите события, связанные с ресурсами виртуальной сети, не соответствующими требованиям, которые произошли после определенной даты. From Используйте параметр с датой в формате ISO 8601.

Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2025-02-10'

Выходные данные включают PrincipalOid свойство, которое можно использовать для получения конкретного пользователя с помощью командлета Get-AzADUser Azure PowerShell. Замените {principalOid} значением, полученным из предыдущей команды.

(Get-AzADUser -ObjectId {principalOid}).DisplayName

Логи Azure Monitor

Если у вас есть рабочая область Log Analytics с AzureActivityрешением Activity Log Analytics, привязанным к подписке, вы также можете просмотреть результаты несоответствия, полученные в ходе оценки новых и обновленных ресурсов с помощью запросов Kusto и таблицы AzureActivity. С подробными сведениями в журналах Azure Monitor оповещения можно настроить для отслеживания несоответствия требованиям.

Azure Resource Graph

Записи соответствия хранятся в Azure Resource Graph (ARG). Данные можно экспортировать из запросов ARG для формирования настраиваемых панелей мониторинга на основе областей и политик, интересующих вас. Ознакомьтесь с нашими примерами запросов на экспорт данных соответствия с помощью ARG.

Дальнейшие шаги