Общие сведения о политике Azure для кластеров Kubernetes

расширение Политика AzureGatekeeper версии 3— веб-перехватчик контроллера допуска для агента open Policy (OPA), который применяется в масштабе и защищает компоненты кластера централизованно, согласованно. Компоненты кластера включают модули pod, контейнеры и пространства имен.

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

Политика Azure для Kubernetes поддерживает следующие кластерные среды:

Внимание

Модель Helm надстройки Политики Azure и надстройка для обработчика AKS объявлены нерекомендуемыми. Следуйте инструкциям по удалению надстроек.

Обзор

После установки надстройки или расширения Политики Azure в кластерах Kubernetes, Политика Azure выполняет следующие функции:

  • проверяет назначения политик в кластере с помощью службы Политики Azure;
  • Развертывает определения политик в кластере в виде шаблона ограничения и ограничения пользовательских ресурсов или в качестве ресурса шаблона мутации (в зависимости от содержимого определения политики).
  • Сообщает службе Политики Azure сведения об аудите и соответствии.

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

  1. Настройте кластер Kubernetes и установите надстройку Служба Azure Kubernetes (AKS) или расширение Политика Azure для кластеров Kubernetes с поддержкой Arc (в зависимости от типа кластера).

    Примечание.

    Распространенные проблемы с установкой описаны в статье Устранение неполадок в надстройке политики Azure.

  2. Создание или использование примера определения Политики Azure для Kubernetes

  3. Назначение определения кластеру Kubernetes

  4. Дождитесь проверки.

  5. Ведение журнала и устранение неполадок

  6. Ознакомьтесь с ограничениями и рекомендациями в нашем разделе часто задаваемых вопросов

Установка надстройки Политики Azure для AKS

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

  1. Зарегистрируйте поставщики ресурсов и предварительные версии функций.

    • Портал Azure:

      Microsoft.PolicyInsights Зарегистрируйте поставщиков ресурсов. Действия см. в разделе Поставщики и типы ресурсов.

    • Azure CLI:

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace Microsoft.PolicyInsights
      
  2. Необходимо установить и настроить Azure CLI версии 2.12.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, обратитесь к статье Установка Azure CLI.

  3. Кластер AKS должен быть поддерживаемой версией Kubernetes в Служба Azure Kubernetes (AKS). Используйте следующий скрипт для проверки версии кластера AKS:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  4. Откройте порты для расширения политики Azure. Расширение политики Azure использует эти домены и порты для выборки определений и назначений политик, а также для создания отчетов о соответствии кластера, возвращаемых Политике Azure.

    Домен Порт
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443

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

  • Портал Azure

    1. Запустите службу Azure Kubernetes на портале Azure, выбрав Все службы, а затем выполнив поиск и выбрав Службы Kubernetes.

    2. Выберите один из кластеров AKS.

    3. Выберите Политики в левой части страницы службы Kubernetes.

    4. На главной странице нажмите кнопку Включить надстройку.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks enable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Чтобы убедиться, что установка надстройки прошла успешно и что объекты pod azure-policy и gatekeeper запущены, выполните следующую команду:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Наконец, убедитесь, что последняя надстройка установлена, выполнив следующую команду Azure CLI, с заменой <rg> на имя группы ресурсов и <cluster-name> на имя кластера AKS: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. Результат должен выглядеть примерно так, как в следующих выходных данных для кластеров с помощью субъектов-служб:

{
  "config": null,
  "enabled": true,
  "identity": null
}

И следующие выходные данные для кластеров с помощью управляемого удостоверения:

 {
   "config": null,
   "enabled": true,
   "identity": {
     "clientId": "########-####-####-####-############",
     "objectId": "########-####-####-####-############",
     "resourceId": "<resource-id>"
   }
 }

Установка расширения Политика Azure для Kubernetes с поддержкой Azure Arc

Политика Azure для Kubernetes позволяет управлять состоянием соответствия кластеров Kubernetes и сообщать о нем из одного места. С помощью расширения Политика Azure для кластеров Kubernetes с поддержкой Arc вы можете управлять компонентами кластера Kubernetes с поддержкой Arc, такими как модули pod и контейнеры.

В этой статье описывается Создание, Отображение состояния расширения и Удаление политики Azure для расширения Kubernetes.

Общие сведения о платформе расширений см. в разделе Расширения кластера Azure Arc.

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

Если вы уже развернули Политика Azure для Kubernetes в кластере Azure Arc с помощью Helm напрямую без расширений, следуйте инструкциям по удалению диаграммы Helm. После завершения удаления можно продолжить.

  1. Убедитесь, что дистрибутив кластера Kubernetes поддерживается.

    Примечание.

    Политика Azure для расширения Arc поддерживается в следующих дистрибутивах Kubernetes.

  2. Убедитесь, что для расширений Kubernetes выполнены все общие предварительные требования, перечисленные здесь, включая Подключение кластера к Azure Arc.

    Примечание.

    расширение Политика Azure поддерживается для кластеров Kubernetes с поддержкой Arc в этих регионах.

  3. Откройте порты для расширения политики Azure. Расширение политики Azure использует эти домены и порты для выборки определений и назначений политик, а также для создания отчетов о соответствии кластера, возвращаемых Политике Azure.

    Домен Порт
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. Перед установкой расширения Политика Azure или включения любого из компонентов службы подписка должна включить Microsoft.PolicyInsights поставщиков ресурсов.

    Примечание.

    Чтобы включить поставщика ресурсов, выполните действия, описанные в разделе "Поставщики ресурсов" и "Типы ресурсов", либо выполните команду Azure CLI или Azure PowerShell.

    • Azure CLI

      # Log in first with az login if you're not using Cloud Shell
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      

Создание расширения политики Azure

Примечание.

Обратите внимание на следующие сведения о создании расширения политики Azure.

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

Чтобы создать экземпляр расширения для кластера с поддержкой Arc, выполните следующую команду, подставив в <> свои значения:

az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>

Пример:

az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy

Пример результата:

{
  "aksAssignedIdentity": null,
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": {},
  "configurationSettings": {},
  "customLocationSettings": null,
  "errorInfo": null,
  "extensionType": "microsoft.policyinsights",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-test-rg/providers/Microsoft.Kubernetes/connectedClusters/my-test-cluster/providers/Microsoft.KubernetesConfiguration/extensions/azurepolicy",
 "identity": {
    "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tenantId": null,
    "type": "SystemAssigned"
  },
  "location": null,
  "name": "azurepolicy",
  "packageUri": null,
  "provisioningState": "Succeeded",
  "releaseTrain": "Stable",
  "resourceGroup": "my-test-rg",
  "scope": {
    "cluster": {
      "releaseNamespace": "kube-system"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": {
    "createdAt": "2021-10-27T01:20:06.834236+00:00",
    "createdBy": null,
    "createdByType": null,
    "lastModifiedAt": "2021-10-27T01:20:06.834236+00:00",
    "lastModifiedBy": null,
    "lastModifiedByType": null
  },
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "1.1.0"
}

Отображение расширения политики Azure

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

az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Пример:

az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy

Чтобы убедиться, что установка расширения прошла успешно и что объекты pod azure-policy и gatekeeper запущены, выполните следующую команду:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Удаление расширения политики Azure

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

az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Создать определение политики.

Языковая структура Политики Azure для управления Kubernetes соответствует языковой структуре существующих определений политик. Существуют примеры файлов определений, которые можно назначить в встроенной библиотеке политик Политика Azure, которую можно использовать для управления компонентами кластера.

Политика Azure для Kubernetes также поддерживает создание пользовательских определений на уровне компонента для кластеров Служба Azure Kubernetes и кластеров Kubernetes с поддержкой Azure Arc. Примеры шаблонов ограничений и шаблонов мутаций доступны в библиотеке сообщества Gatekeeper. расширение VS Code Политика Azure можно использовать для перевода существующего шаблона ограничения или шаблона мутации в пользовательское определение политики Политика Azure.

В режиме Microsoft.Kubernetes.Data поставщика ресурсов для управления кластерами Kubernetes используются операции аудита, запрета, отключения и изменения.

Эффекты аудит и запретить должны предоставлять свойства сведений, относящиеся к работе с OPA Constraint Framework и Gatekeeper v3.

В рамках свойств details.templateInfo или details.constraintInfo в определении политики Политика Azure передает значение URI или Base64Encoded этих объектов CustomResourceDefinitions(CRD) надстройке. Rego — это язык, поддерживаемый OPA и Gatekeeper для проверки запросов к кластеру Kubernetes. Поддерживая существующий стандарт управления Kubernetes, Политика Azure позволяет повторно использовать существующие правила и объединять их с Политикой Azure для формирования унифицированной отчетности о совместимости с облачными технологиями. Дополнительные сведения о Rego см. в этой статье.

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

Чтобы назначить определение политики кластеру Kubernetes, необходимо назначить соответствующие операции назначения политики управления доступом Azure на основе ролей (Azure RBAC). Встроенные роли Azure Участник политики ресурсов и Владелец включают эти операции. Дополнительные сведения см. в Разрешения Azure RBAC в политике Azure.

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

  1. Запустите службу Политики Azure на портале Azure. На панели слева выберите Все службы, а затем выполните поиск по запросу Политика и выберите этот пункт.

  2. Выберите Определения на левой панели страницы "Политика Azure".

  3. В раскрывающемся списке "Категория" щелкните Выбрать все, чтобы очистить фильтр, а затем выберите Kubernetes.

  4. Выберите определение политики, а затем нажмите кнопку Назначить.

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

    Примечание.

    При назначении политики Azure для определения Kubernetes Область должна включать ресурс кластера.

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

  7. Задайте для принудительного применения политики одно из следующих значений:

    • Включено — принудительно применить политику в кластере. Запросы на допуск Kubernetes с нарушениями отклоняются.

    • Отключено — не выполнять принудительного применения политики в кластере. Запросы на допуск Kubernetes с нарушениями не отклоняются. Результаты оценки соответствия по-прежнему доступны. При развертывании новых определений политик для запуска кластеров отключенный параметр полезен для тестирования определения политики, так как запросы на прием с нарушениями не запрещаются.

  8. Выберите Далее.

  9. Установка значений параметра

    • Чтобы исключить пространства имен Kubernetes из оценки политики, укажите список пространств имен в параметре Исключения пространства имен. Рекомендуется исключить следующие пространства имен: kube-system, gatekeeper-system и azure-arc.
  10. Выберите Review + create (Просмотреть и создать).

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

Внимание

Встроенные определения политик доступны для кластеров Kubernetes в категории Kubernetes. Список встроенных определений политик см. в Образцы Kubernetes.

Оценка политики

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

В кластере Kubernetes, если пространство имен имеет метку, соответствующую кластеру, запросы на допуск с нарушениями не отклоняются. Результаты оценки соответствия по-прежнему доступны.

  • Кластер Kubernetes с поддержкой Azure Arc: admission.policy.azure.com/ignore

Примечание.

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

Каждые 15 минут надстройка вызывает полную проверку кластера. После сбора сведений, полученных в ходе полной проверки, и выполненных в режиме реального времени оценок Gatekeeper попыток внести изменения в кластер надстройка отправляет результаты в Политику Azure для включения их в сведения о соответствии подобно любому назначению Политики Azure. Во время цикла аудита возвращаются только результаты активных назначений политик. Результаты аудита также могут отображаться как нарушения, указанные в поле состояния ограничения, завершившегося сбоем. Дополнительные сведения о ресурсах, не соответствующих требованиям, см. в разделе Сведения о компоненте для режимов поставщиков ресурсов.

Примечание.

Каждый отчет о соответствии в Политике Azure для кластеров Kubernetes включает все нарушения за последние 45 минут. Метка времени указывает, когда произошло нарушение.

Другие замечания:

  • Если подписка кластера зарегистрирована в Microsoft Defender для облака, политики Kubernetes Microsoft Defender для облака применяются к кластеру автоматически.

  • Если политика запрета применяется к кластеру с существующими ресурсами Kubernetes, все предварительно существующие ресурсы, которые не соответствуют новой политике, продолжает выполняться. Когда несоответствующий ресурс перераспределяется на другой узел, Gatekeeper блокирует создание ресурсов.

  • Если в кластере есть политика запрета, которая проверяет ресурсы, пользователь не получает сообщение об отказе при создании развертывания. Например, рассмотрим развертывание Kubernetes, которое содержит наборы реплик и pod-модули. Когда пользователь выполняется kubectl describe deployment $MY_DEPLOYMENT, он не возвращает сообщение об отклонении в рамках событий. Однако kubectl describe replicasets.apps $MY_DEPLOYMENT возвращает события, связанные с отклонением.

Примечание.

Контейнеры инициализации могут включаться во время оценки политики. Чтобы узнать, включены ли контейнеры инициализации, просмотрите CRD для следующего или аналогичного объявления:

input_containers[c] {
   c := input.review.object.spec.initContainers[_]
}

Конфликты шаблонов ограничений

Если шаблоны ограничений имеют одно и то же имя метаданных ресурса, но определение политики ссылается на источник в различных расположениях, определения политик считаются конфликтующими. Пример. Два определения политики ссылались на один и тот же template.yaml файл, хранящийся в разных исходных расположениях, таких как хранилище шаблонов Политика Azure (store.policy.core.windows.net) и GitHub.

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

Ведение журнала

Pod-модули azure-policy и gatekeeper, являющиеся контроллерами/контейнерами Kubernetes, хранят журналы в кластере Kubernetes. Как правило, журналы политики Azure можно использовать для устранения проблем с приемом политик в кластере и отчетах о соответствии требованиям. Журналы pod диспетчера шлюза-контроллера можно использовать для устранения неполадок со средой выполнения. Журналы pod pod шлюза-аудита можно использовать для устранения неполадок с аудитом существующих ресурсов. Журналы можно предоставить на странице Insights (Аналитические сведения) кластера Kubernetes. Дополнительные сведения см. в статье Мониторинг производительности кластера Kubernetes с помощью Azure Monitor для контейнеров.

Чтобы просмотреть журналы надстроек, используйте kubectl:

# Get the azure-policy pod name installed in kube-system namespace
kubectl logs <azure-policy pod name> -n kube-system

# Get the gatekeeper pod name installed in gatekeeper-system namespace
kubectl logs <gatekeeper pod name> -n gatekeeper-system

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

Дополнительные сведения см. в статье об отладке Gatekeeper в документации по Gatekeeper.

Просмотр артефактов Gatekeeper

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

  1. kubeconfig Настройка для кластера.

    Для кластера Службы Azure Kubernetes используйте следующий Azure CLI:

    # Set context to the subscription
    az account set --subscription <YOUR-SUBSCRIPTION>
    
    # Save credentials for kubeconfig into .kube in your home folder
    az aks get-credentials --resource-group <RESOURCE-GROUP> --name <CLUSTER-NAME>
    
  2. Проверка подключения к кластеру.

    Выполните команду kubectl cluster-info. В случае успешного выполнения каждая служба отвечает по URL-адресу, в котором она выполняется.

Просмотр шаблонов ограничений надстройки

Чтобы просмотреть шаблоны ограничений, скачанные надстройкой, выполните команду kubectl get constrainttemplates. Шаблоны ограничений, начинающиеся с k8sazure, установлены надстройкой.

Просмотр шаблонов мутаций надстроек

Чтобы просмотреть шаблоны мутаций, скачанные надстройкой, запустите kubectl get assignkubectl get assignmetadataи kubectl get modifyset.

Получение сопоставлений политик Azure

Чтобы определить сопоставление между шаблоном ограничения, загруженным в кластер, и определением политики, используйте kubectl get constrainttemplates <TEMPLATE> -o yaml. Результаты выглядят как следующие данные.

apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
    annotations:
    azure-policy-definition-id: /subscriptions/<SUBID>/providers/Microsoft.Authorization/policyDefinitions/<GUID>
    constraint-template-installed-by: azure-policy-addon
    constraint-template: <URL-OF-YAML>
    creationTimestamp: "2021-09-01T13:20:55Z"
    generation: 1
    managedFields:
    - apiVersion: templates.gatekeeper.sh/v1beta1
    fieldsType: FieldsV1
...

<SUBID> — это идентификатор подписки, а <GUID> — идентификатор определения сопоставленной политики. <URL-OF-YAML> — это исходное расположение шаблона ограничения, загружаемого надстройкой для установки в кластере.

Получив имена шаблонов ограничений, скачанных надстройкой, их можно использовать для просмотра связанных ограничений. Используйте kubectl get <constraintTemplateName> для получения списка. Ограничения, установленные надстройкой, начинаются с azurepolicy-.

Просмотр сведений об ограничениях

Ограничение содержит сведения о нарушениях и сопоставлениях с определением и назначением политики. Чтобы просмотреть подробные сведения, используйте kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml. Результаты выглядят как следующие данные.

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAzureContainerAllowedImages
metadata:
  annotations:
    azure-policy-assignment-id: /subscriptions/<SUB-ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Authorization/policyAssignments/<ASSIGNMENT-GUID>
    azure-policy-definition-id: /providers/Microsoft.Authorization/policyDefinitions/<DEFINITION-GUID>
    azure-policy-definition-reference-id: ""
    azure-policy-setdefinition-id: ""
    constraint-installed-by: azure-policy-addon
    constraint-url: <URL-OF-YAML>
  creationTimestamp: "2021-09-01T13:20:55Z"
spec:
  enforcementAction: deny
  match:
    excludedNamespaces:
    - kube-system
    - gatekeeper-system
    - azure-arc
  parameters:
    imageRegex: ^.+azurecr.io/.+$
status:
  auditTimestamp: "2021-09-01T13:48:16Z"
  totalViolations: 32
  violations:
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hello-world-78f7bfd5b8-lmc5b
    namespace: default
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hellow-world-89f8bfd6b9-zkggg

Устранение неполадок надстройки

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

Чтобы Политика Azure расширения для связанных с расширением Arc проблем, перейдите в раздел:

Для Политика Azure связанных проблем перейдите к следующим темам:

надстройка Политика Azure для журнала изменений AKS

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

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

Определите, какая версия надстройки установлена в кластере

Надстройка Политика Azure использует стандартную схему семантического управления версиями для каждой версии. Чтобы определить используемую версию надстройки Политика Azure, можно выполнить следующую команду:kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'

Чтобы определить версию Gatekeeper, которую использует надстройка Политика Azure, можно выполнить следующую команду:kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'

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

Доступные версии надстроек для каждой версии кластера AKS

1.3.0

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

  • Выпущено за февраль 2024 г.
  • Kubernetes 1.25+
  • Gatekeeper 3.14.0

1.2.1

  • Выпущено за октябрь 2023 г.
  • Kubernetes 1.25+
  • Gatekeeper 3.13.3

1.1.0

  • Выпущено июля 2023 г.
  • Kubernetes 1.27+
  • Gatekeeper 3.11.1

1.0.1

  • Выпущено в июне 2023 г.
  • Kubernetes 1.24+
  • Gatekeeper 3.11.1

1.0.0

Политика Azure для Kubernetes теперь поддерживает изменение для исправления кластеров AKS в масштабе!

Удаление надстройки

Удаление надстройки из AKS

Чтобы удалить надстройку "Политика Azure" из кластера AKS, используйте либо портал Azure, либо Azure CLI.

  • Портал Azure

    1. Запустите службу Azure Kubernetes на портале Azure, выбрав Все службы, а затем выполнив поиск и выбрав Службы Kubernetes.

    2. Выберите кластер AKS, в котором необходимо отключить надстройку Политики Azure.

    3. Выберите Политики в левой части страницы службы Kubernetes.

    4. На главной странице нажмите кнопку Отключить надстройку.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks disable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Удаление надстройки из Kubernetes с поддержкой Azure Arc

Примечание.

Модель Helm надстройки политики Azure теперь устарела. Используйте вместо нее расширение политики Azure для Kubernetes с включенной службой Azure Arc.

Чтобы удалить надстройку Политики Azure и Gatekeeper из кластера Kubernetes с поддержкой Azure Arc, выполните следующую команду Helm:

helm uninstall azure-policy-addon

Удаление надстройки из Обработчика AKS

Примечание.

Продукт AKS Engine теперь не рекомендуется использовать для клиентов общедоступного облака Azure. Рекомендуется использовать Служба Azure Kubernetes (AKS) для управляемых Kubernetes или Поставщика API кластера Azure для самостоятельно управляемых Kubernetes. Нет новых функций, запланированных; этот проект будет обновлен только для CVEs и аналогично, с Kubernetes 1.24 в качестве окончательной версии для получения обновлений.

Чтобы удалить надстройку Политики Azure и Gatekeeper из кластера Обработчика AKS, используйте метод, соответствующий способу установки надстройки.

  • Если установка выполнена путем задания свойства addons в определении кластера для Обработчика AKS:

    повторно разверните определение кластера в Обработчике AKS после изменения значения свойства addons для azure-policy на false:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    

    Дополнительные сведения см. в Обработчик AKS. Отключение надстройки Политики Azure.

  • При установке с диаграммами Helm выполните следующую команду Helm:

    helm uninstall azure-policy-addon
    

Ограничения

  • Общие Политика Azure определения и ограничения назначений см. в документированных ограничениях Политика Azure
  • Надстройку политики Azure для Kubernetes можно развернуть только в пулах узлов Linux.
  • Максимальное количество модулей pod, поддерживаемых надстройкой Политика Azure для каждого кластера: 10 000
  • Максимальное число несоответствующих записей в каждой политике на один кластер: 500.
  • Максимальное число несоответствующих записей на подписку: 1 миллион.
  • Параметры Gatekeeper вне функционала надстройки политики Azure не поддерживаются. Перед включением надстройки политики Azure удалите все компоненты, установленные Gatekeeper в прошлый раз.
  • Причины несоответствия недоступны для режима поставщика ресурсов Microsoft.Kubernetes.Data. Используйте Сведения о компоненте.
  • Компонентные исключения не поддерживаются для режимов поставщика ресурсов. Поддержка параметров доступна в определениях Политика Azure для исключения и включения определенных пространств имен.
  • metadata.gatekeeper.sh/requires-sync-data Использование заметки в шаблоне ограничения для настройки реплика обработки данных из кластера в кэш OPA в настоящее время разрешено только для встроенных политик. Это связано с тем, что это может значительно увеличить использование ресурсов pod gatekeeper, если не используется тщательно.

Следующие ограничения применяются только к надстройке политики Azure для AKS:

Часто задаваемые вопросы

Что развертывает Политика Azure надстройка или расширение Политика Azure в кластере при установке?

Для работы надстройки Политики Azure требуется три компонента Gatekeeper: один pod аудита и две реплики pod веб-перехватчика. Также будет установлен один модуль pod Политика Azure и один Политика Azure pod webhook.

Сколько ресурсов следует ожидать, что в каждом кластере будет использоваться надстройка или расширение Политика Azure?

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

  • Для менее чем 500 модулей pod в одном кластере с максимальным количеством ограничений 20: два виртуальных ЦП и 350 МБ памяти на каждый компонент.
  • Для более чем 500 модулей pod в одном кластере с ограничением в 40: три виртуальных ЦП и 600 МБ памяти для каждого компонента.

Можно ли применять Политика Azure для определений Kubernetes в модулях pod Windows?

Pod-модули Windows не поддерживают контексты безопасности. Таким образом, некоторые из определений Политика Azure, такие как запрет доступа к корневым привилегиям, не могут быть эскалации в модулях pod Windows и применяться только к модулям pod Linux.

Какой тип диагностических данных собирается с помощью надстройки Политика Azure?

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

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

Сведения, собираемые надстройкой, не являются персональными данными. В настоящее время ведется сбор следующих сведений:

  • Версия агента надстройки Политики Azure
  • Тип кластера
  • Регион кластера
  • Группа ресурсов кластера
  • ИД ресурса кластера
  • ИД подписки кластера
  • Ос кластера (пример: Linux)
  • Кластерный город (пример: Сиэтл)
  • Штат кластера или провинция (пример: Вашингтон)
  • Страна кластера или регион (пример: США)
  • Исключения и ошибки, обнаруженные надстройкой Политики Azure во время установки агента при оценке политики
  • Число определений политик Gatekeeper, не установленных надстройкой Политики Azure

Какие общие рекомендации следует учитывать при установке надстройки Политика Azure?

  • Используйте пул системных узлов с критическими ограничениямиOnly, чтобы запланировать модули pod Gatekeeper. Дополнительные сведения см. в разделе Использование пулов системных узлов.
  • Защита исходящего трафика кластера AKS Дополнительные сведения см. в разделе Управление исходящим трафиком для узлов кластера.
  • Если в кластере включено удостоверение aad-pod, модули pod Node Managed Identity (NMI) изменяют iptables узлов для перехвата вызовов конечной точки метаданных экземпляра Azure. Эта конфигурация означает, что любой запрос, сделанный в конечную точку метаданных, перехватывается NMI, даже если модуль pod не использует удостоверение aad-pod-identity.
  • AzurePodIdentityException CRD можно настроить для информирования aad-pod-identity о том, что любые запросы к конечной точке метаданных, исходящую из модуля pod, который соответствует меткам, определенным в CRD, следует использовать без какой-либо обработки в NMI. Системные модули pod с kubernetes.azure.com/managedby: метка aks в пространстве имен kube-system должна быть исключена в идентификаторе aad-pod-identity, настроив CRD AzurePodIdentityException. Дополнительные сведения см. в разделе Отключение aad-pod-identity для конкретного pod-модуля или приложения. Чтобы настроить исключение, установите mic-exception YAML.

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