Устранение ошибок при использовании Политики 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 см. в разделе Проверка оценки по запросу.
Сценарий: соответствие требованиям не согласуется с ожиданиями
Проблема
Ресурс отсутствует в состоянии оценки соответствия или несоответствующего требованиям для ресурса.
Причина
Ресурс находится за пределами области назначения политики, или определение политики не работает должным образом.
Разрешение
Чтобы устранить неполадки с определением политики, выполните следующие действия.
- Сначала дождитесь завершения оценки и появления соответствующих результатов на портале Azure или в пакете SDK.
- Сведения о запуске новой проверки оценки с помощью Azure PowerShell или REST API см. в разделе Проверка оценки по запросу.
- Убедитесь, что параметры назначения и область назначения заданы правильно.
- Проверьте режим определения политики:
- Если проверяются все ресурсы, должен быть установлен режим
all
. - Если определение политики проверяет теги и расположение, должен быть установлен режим
indexed
.
- Если проверяются все ресурсы, должен быть установлен режим
- Убедитесь, что для ресурса не задана область Исключено или Исключение.
- Если в данных о соответствии требованиям для назначения политики указано
0/0
для ресурсов, ресурсов, определенных для применения в области назначения, нет. Проверьте определение и область назначения политики. - Сведения о ресурсе, который согласно ожиданиям должен соответствовать требованиям, но не соответствует им, см. в статье Определение причин несоответствия требованиям. Причину несоответствия ресурса требованиям можно выявить посредством сравнения определения со значением оценки свойства.
- Если целевое значение неверно, проверьте определение политики.
- Если текущее значение неверно, проверьте полезные данные ресурса на веб-сайте
resources.azure.com
.
- Для определения режима поставщика ресурсов, поддерживающего параметр строки регулярного выражения (например,
Microsoft.Kubernetes.Data
и встроенного определения "образы контейнера должны развертываться только из доверенных реестров"), проверьте правильность параметра строки регулярного выражения . - Сведения о других распространенных проблемах и способах их решения см. в разделе Устранение неполадок: непредвиденное применение.
Если проблема с дублированным или настроенным определением встроенной политики или настраиваемым определением не устранена, создайте запрос в службу поддержки в разделе создания политики, чтобы правильно направить сообщение о проблеме.
Сценарий: непредвиденное применение
Проблема
Политика Azure не обрабатывает ресурс, для которого ожидается обработка, и в журнале действий Azure нет соответствующей записи.
Причина
Назначение политики было настроено для параметра enforcementMode отключено. Хотя enforcementMode
он отключен, эффект политики не применяется, и нет записи в журнале действий.
Разрешение
Чтобы устранить неполадки, связанные с применением назначения политики, выполните следующие действия.
- Сначала дождитесь завершения оценки и появления соответствующих результатов на портале Azure или в пакете SDK.
- Сведения о запуске новой проверки оценки с помощью Azure PowerShell или REST API см. в разделе Проверка оценки по запросу.
- Убедитесь, что параметры назначения и область назначения заданы правильно и
enforcementMode
включена. - Проверьте режим определения политики:
- Если проверяются все ресурсы, должен быть установлен режим
all
. - Если определение политики проверяет теги и расположение, должен быть установлен режим
indexed
.
- Если проверяются все ресурсы, должен быть установлен режим
- Убедитесь, что для ресурса не задана область Исключено или Исключение.
- Убедитесь, что полезные данные ресурса соответствуют логике политики. Эту проверку можно выполнить путем записи трассировки HTTP-архива (HAR) или просмотра свойств шаблона Azure Resource Manager (шаблона ARM).
- Сведения о других распространенных проблемах и способах их решения см. в разделе Устранение неполадок: соответствие требованиям не согласуется с ожиданиями.
Если проблема с дублированным или настроенным определением встроенной политики или настраиваемым определением не устранена, создайте запрос в службу поддержки в разделе создания политики, чтобы правильно направить сообщение о проблеме.
Сценарий: отклонение Политикой 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
, гарантируют, что удостоверение, назначаемое системой, назначается компьютеру. Но они также удалили назначенные пользователем назначения удостоверений.
Разрешение
Определения, которые ранее вызвали эту проблему, отображаются как \[Deprecated\]
и заменяются определениями политик, которые управляют предварительными условиями без удаления управляемых удостоверений, назначенных пользователем. Требуется выполняемое вручную действие. Удалите все существующие назначения политик, помеченные как \[Deprecated\]
, и замените их обновленными определениями политики предварительных требований и определениями политик, которые имеют то же имя, что и исходное.
Подробное описание см. в записи блога Важные изменения политик аудита гостевой конфигурации.
Общие ошибки надстройки для 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-identity
установке в кластере, а модули pod kube-system не исключаются.aad-pod-identity
Модули aad-pod-identity
pod node Managed Identity (NMI) компонента изменяют iptables узлов для перехвата вызовов конечной точки метаданных экземпляра Azure. Эта настройка означает, что любой запрос, сделанный в конечную точку метаданных, перехватывается NMI, даже если модуль pod не использует aad-pod-identity
. AzurePodIdentityException
CustomResourceDefinition (CRD) можно настроить для информирования о aad-pod-identity
том, что все запросы к конечной точке метаданных, исходящую из модуля pod, соответствующего меткам, определенным в CRD, должны быть прокси-серверы без обработки в NMI.
Разрешение
Исключите системные модули pod с kubernetes.azure.com/managedby: aks
меткой в пространстве aad-pod-identity
имен kube-system, настроив 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, оценка только что созданных или обновленных ресурсов может обойтись из-за сбоя при открытии шлюза.
Причина
Модель GK "сбой при открытии" предусмотрена изначально и основана на отзывах сообщества. Причины приведены в документации к Gatekeeper здесь: https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.
Разрешение
В предыдущем событии регистр ошибки можно отслеживать с помощью метрик веб-перехватчика допуска, предоставляемых этой kube-apiserver
службой. Если во время создания выполняется обход оценки и создается объект, он сообщает о Политика Azure соответствия требованиям как флаг для клиентов.
Независимо от сценария политика Azure сохраняет последнюю известную политику в кластере и сохраняет защиту.
Следующие шаги
Если проблема не указана в этой статье, или вам не удалось ее устранить, получите поддержку с помощью одно из следующих каналов.
- Получите ответы от экспертов на веб-сайте Microsoft Q&A.
- Подключение с помощью @AzureSupport. Этот официальный ресурс Microsoft Azure на X помогает улучшить взаимодействие с клиентами, подключив сообщество Azure к правильным ответам, поддержке и экспертам.
- Если вам по-прежнему нужна помощь, перейдите на сайт поддержка Azure и выберите "Отправить запрос в службу поддержки".