Устранение ошибок при использовании Политики Azure

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

Поиск сведений об ошибке

Расположение сведений об ошибке зависит от того, с какими аспектами Политики Azure вы работаете.

  • Если вы работаете с настраиваемой политикой, перейдите на портал Azure, чтобы получить сведения об анализе кода схемы или изучить итоговые данные о соответствии и узнать, как были оценены ресурсы.
  • Если вы работаете с одним из пакетов SDK, в нем предоставляются сведения о том, почему возник сбой функции.
  • Если вы работаете с надстройкой для Kubernetes, начните с ведения журнала в кластере.

Общие ошибки

Сценарий: псевдоним не найден

Проблема

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

Причина

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

Разрешение

Сначала проверьте, есть ли псевдоним у свойства Resource Manager. Чтобы посмотреть доступные псевдонимы, перейдите в расширение Политики Azure для Visual Studio Code или пакет SDK. Если для свойства Resource Manager не существует псевдонима, создайте запрос в службу поддержки.

Сценарий: сведения об оценке не актуальны

Проблема

Ресурс находится в состоянии Не запущено или сведения о соответствии требованиям не являются актуальными.

Причина

Новое назначение политики или инициативы занимает около пяти минут. Новые или обновленные ресурсы в области действия существующего назначения становятся доступными примерно через 15 минут. Стандартная проверка соответствия требованиям выполняется каждые 24 часа. Дополнительные сведения см. в разделе Триггеры оценки.

Разрешение

Сначала дождитесь завершения оценки и появления соответствующих результатов на портале Azure или в пакете SDK. Сведения о запуске новой проверки оценки с помощью Azure PowerShell или REST API см. в разделе Проверка оценки по запросу.

Сценарий: соответствие требованиям не согласуется с ожиданиями

Проблема

Состояние оценки ресурса отлично от ожидаемого (не Соответствует и не Не соответствует).

Причина

Ресурс находится за пределами области назначения политики, или определение политики не работает должным образом.

Разрешение

Чтобы устранить неполадки определения политики, выполните следующие действия.

  1. Сначала дождитесь завершения оценки и появления соответствующих результатов на портале Azure или в пакете SDK.

  2. Сведения о запуске новой проверки оценки с помощью Azure PowerShell или REST API см. в разделе Проверка оценки по запросу.

  3. Убедитесь, что параметры назначения и область назначения заданы правильно.

  4. Проверьте режим определения политики:

    • Если проверяются все ресурсы, должен быть установлен режим all.
    • Если определение политики проверяет теги и расположение, должен быть установлен режим indexed.
  5. Убедитесь, что для ресурса не задана область Исключено или Исключение.

  6. Если в данных о соответствии требованиям для назначения политики указано 0/0 для ресурсов, ресурсов, определенных для применения в области назначения, нет. Проверьте определение и область назначения политики.

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

    • Если целевое значение неверно, проверьте определение политики.
    • Если текущее значение неверно, проверьте полезные данные ресурса на веб-сайте resources.azure.com.
  8. Для определения режима поставщика ресурсов, поддерживающего параметр строки регулярного выражения (например, Microsoft.Kubernetes.Data и встроенного определения "образы контейнера должны развертываться только из доверенных реестров"), проверьте правильность параметра строки регулярного выражения .

  9. Сведения о других распространенных проблемах и способах их решения см. в разделе Устранение неполадок: непредвиденное применение.

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

Сценарий: непредвиденное применение

Проблема

Политика Azure не обрабатывает ресурс, для которого ожидается обработка, и в журнале действий Azure нет соответствующей записи.

Причина

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

Разрешение

Устраните неполадки применения назначения политики, выполнив следующие действия.

  1. Сначала дождитесь завершения оценки и появления соответствующих результатов на портале Azure или в пакете SDK.

  2. Сведения о запуске новой проверки оценки с помощью Azure PowerShell или REST API см. в разделе Проверка оценки по запросу.

  3. Убедитесь, что параметры назначения и область назначения заданы правильно, а для параметра enforcementMode указано значение Включен.

  4. Проверьте режим определения политики:

    • Если проверяются все ресурсы, должен быть установлен режим all.
    • Если определение политики проверяет теги и расположение, должен быть установлен режим indexed.
  5. Убедитесь, что для ресурса не задана область Исключено или Исключение.

  6. Убедитесь, что полезные данные ресурса соответствуют логике политики. Для этого можно записать трассировку архива HTTP (HAR-файл) или проверить свойства шаблона Azure Resource Manager (шаблон ARM).

  7. Сведения о других распространенных проблемах и способах их решения см. в разделе Устранение неполадок: соответствие требованиям не согласуется с ожиданиями.

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

Сценарий: отклонение Политикой Azure

Проблема

Создание или обновление ресурса отклонено.

Причина

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

Разрешение

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

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

Проблема

Определение политики, которое включает несколько типов ресурсов, не проходит проверку при создании или обновлении со следующей ошибкой:

The policy definition '{0}' targets multiple resource types, but the policy rule is authored in a way that makes the policy not applicable to the target resource types '{1}'.

Причина

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

Разрешение

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

Сценарий. Превышено ограничение подписок

Проблема

На странице соответствия на портале Azure отображается сообщение об ошибке при получении данных о соответствии для назначений политик.

Причина

Число подписок в выбранных областях в запросе превысило ограничение в 5000 подписок. Результаты соответствия могут отображаться не полностью.

Разрешение

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

Ошибки шаблона

Сценарий: поддерживаемые политикой функции обработаны как часть шаблона

Проблема

Политика Azure поддерживает ряд функций шаблонов ARM и функций, доступных только в определении политики. Resource Manager обрабатывает эти функции в рамках развертывания, а не в рамках определения политики.

Причина

Использование поддерживаемых функций, таких как parameter() или resourceGroup(), приводит к обработке результата функции во время развертывания, вместо разрешения обработки функции определением политики и подсистемой Политики Azure.

Разрешение

Чтобы передать функцию в составе определения политики, поместите в начале строки символ [, чтобы свойство выглядело так: [[resourceGroup().tags.myTag]. Из-за escape-символа Resource Manager при обработке шаблона воспринимает значение как строку. Затем Политика Azure помещает функцию в определение политики, чтобы использовать ее надлежащим образом (динамически). Дополнительные сведения см. в статье Синтаксис и выражения в шаблонах Azure Resource Manager.

Ошибки установки надстроек для Kubernetes

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

Проблема

Выполнение команды helm install azure-policy-addon завершается сбоем и возвращается одна из указанных ниже ошибок.

  • !: event not found
  • Error: failed parsing --set data: key "<key>" has no value (cannot end with ,)

Причина

Созданный пароль содержит запятую (,), с помощью которой в чарте Helm задается разделение.

Разрешение

При выполнении команды helm install azure-policy-addon перед запятой (,) поместите символ обратной косой черты (\).

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

Проблема

Выполнение команды helm install azure-policy-addon завершается сбоем и возвращается указанная ниже ошибка.

  • Error: cannot re-use a name that is still in use

Причина

Чарт Helm с именем azure-policy-addon уже установлен или частично установлен.

Разрешение

Следуйте инструкциям по удалению Политики Azure для надстройки Kubernetes, затем повторно выполните команду helm install azure-policy-addon.

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

Проблема

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

Причина

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

Разрешение

Для определений, которые ранее вызывали эту проблему, указывается состояние [Нерекомендуемые], и они заменяются определениями политик, которые управляют предварительными требованиями без удаления назначенных пользователем управляемых удостоверений. Требуется выполняемое вручную действие. Удалите все существующие назначения политик с состоянием [Нерекомендуемые], и замените их обновленными инициативами политик предварительных требований и определениями политик, имена которых совпадают с исходными.

Подробное описание см. в записи блога Важные изменения политик аудита гостевой конфигурации.

Общие ошибки надстройки для Kubernetes

Сценарий: надстройке не удалось связаться с конечной точкой службы "Политика Azure" из-за ограничений исходящего трафика

Проблема

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

  • failed to fetch token, service not reachable
  • Error getting file "Get https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml: dial tcp 151.101.228.133.443: connect: connection refused

Причина

Эта проблема возникает при блокировке исходящего трафика кластера.

Разрешение

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

Сценарий: надстройка не может связаться с конечной точкой службы "Политика Azure" из-за конфигурации aad-pod-identity

Проблема

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

  • azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://gov-prod-policy-data.trafficmanager.net/checkDataPolicyCompliance?api-version=2019-01-01-preview: StatusCode=404
  • adal: Refresh request failed. Status Code = '404'. Response body: getting assigned identities for pod kube-system/azure-policy-8c785548f-r882p in CREATED state failed after 16 attempts, retry duration [5]s, error: <nil>

Причина

Эта ошибка возникает, когда удостоверение aad-pod устанавливается в кластере, а модули pod kube-system не исключаются в aad-pod-identity.

Модули pod Node Managed Identity (NMI) компонента aad-pod-identity изменяют iptables узлов для перехвата вызовов к конечной точке метаданных экземпляра Azure. Такая настройка обеспечивает перехват модулем NMI любого запроса к конечной точке метаданных, даже если модуль pod не использует aad-pod-identity. В AzurePodIdentityException CustomResourceDefinition (CRD) можно настроить уведомление aad-pod-identity о том, что любые запросы к конечной точке метаданных от модуля pod, соответствующего определенным в CRD меткам, следует передавать прокси-серверу без обработки в NMI.

Разрешение

Исключите системные модули pod с меткой kubernetes.azure.com/managedby: aks в пространстве имен kube-system в aad-pod-identity, настроив AzurePodIdentityException CRD.

Дополнительные сведения см. в статье Отключение удостоверения pod Azure Active Directory (Azure AD) для конкретного модуля pod или приложения.

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

apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: mic-exception
  namespace: default
spec:
  podLabels:
    app: mic
    component: mic
---
apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: aks-addon-exception
  namespace: kube-system
spec:
  podLabels:
    kubernetes.azure.com/managedby: aks

Сценарий: поставщик ресурсов не зарегистрирован

Проблема

Надстройка может связаться с конечной точкой службы "Политика Azure", но в журналах надстроек отображается одна из следующих ошибок.

  • The resource provider 'Microsoft.PolicyInsights' is not registered in subscription '{subId}'. See https://aka.ms/policy-register-subscription for how to register subscriptions.

  • policyinsightsdataplane.BaseClient#CheckDataPolicyCompliance: Failure responding to request: StatusCode=500 -- Original Error: autorest/azure: Service returned an error. Status=500 Code="InternalServerError" Message="Encountered an internal server error.

Причина

Поставщик ресурса Microsoft.PolicyInsights не зарегистрирован. Он должен быть зарегистрирован, чтобы надстройка получала определения политик и возвращала данные о соответствии требованиям.

Разрешение

Зарегистрируйте поставщик ресурса Microsoft.PolicyInsights в подписке кластера. Инструкции см. в разделе Регистрация поставщика ресурсов.

Сценарий: подписка отключена

Проблема

Надстройка может связаться с конечной точкой службы "Политика Azure", но отображается следующая ошибка.

The subscription '{subId}' has been disabled for azure data-plane policy. Please contact support.

Причина

Эта ошибка означает, что подписка определена как проблематичная, и для блокировки подписки добавлен флаг функции Microsoft.PolicyInsights/DataPlaneBlocked.

Разрешение

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

Сценарий: определения в категории "Гостевая конфигурация" не могут дублироваться из портала Azure

Проблема

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

Причина

Гостевая конфигурация зависит от пользовательских метаданных, добавленных в определения политик при создании ресурсов назначения гостевой конфигурации. Действие "Дублировать определение" в портале Azure не копирует пользовательские метаданные.

Разрешение

Вместо использования портала следует дублировать определение политики с помощью API Policy Insights. В следующем примере PowerShell предоставляется вариант действия.

# duplicates the built-in policy which audits Windows machines for pending reboots
$def = Get-AzPolicyDefinition -id '/providers/Microsoft.Authorization/policyDefinitions/4221adbc-5c0f-474f-88b7-037a99e6114c' | % Properties
New-AzPolicyDefinition -name (new-guid).guid -DisplayName "$($def.DisplayName) (Copy)" -Description $def.Description -Metadata ($def.Metadata | convertto-json) -Parameter ($def.Parameters | convertto-json) -Policy ($def.PolicyRule | convertto-json -depth 15)

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

Проблема

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

Причина

Модель GK "сбой при открытии" предусмотрена изначально и основана на отзывах сообщества. Причины приведены в документации к Gatekeeper здесь: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Разрешение

В описанном выше событии отслеживание ошибки можно выполнить с помощью метрик веб-перехватчика допуска, предоставляемых kube-apiserver. И даже если во время создания вычисление не выполняется, и объект создается, в политике Azure для клиентов он по-прежнему будет отображен как несоответствующий требованиям.

Независимо от описанной выше ситуации, в этом случае политика Azure сохранит последнюю известную политику в кластере и оставит барьеры безопасности.

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

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

  • Получите ответы от экспертов на веб-сайте Microsoft Q&A.
  • Подключение с помощью @AzureSupport. Это официальная учетная запись Microsoft Azure в Твиттер. Она помогает оптимизировать работу пользователей благодаря возможности доступа к сообществу Azure (ответы на вопросы, поддержка и консультации специалистов).
  • Если вам по-прежнему нужна помощь, перейдите на веб-сайт поддержки Azure и нажмите кнопку Отправить запрос на техническую поддержку.