Поделиться через


Использование проверки подлинности Microsoft Entra с ошибками Chaos Studio AKS

Обзор

Azure Chaos Studio интегрируется с Chaos Mesh для выполнения сбоев в кластерах Служба Azure Kubernetes (AKS), таких как удаление модулей pod, стресс ЦП, нарушение сети и многое другое. Для выполнения этих ошибок можно использовать два разных типа проверки подлинности в зависимости от конфигурации и настроек, локальных учетных записей или проверки подлинности Microsoft, управляемой AKS:

  • Локальные учетные записи Kubernetes хранятся на сервере API Kubernetes и могут использоваться для проверки подлинности и авторизации запросов к кластеру. Дополнительные сведения о локальных учетных записях на этой странице: управление локальными учетными записями.
  • Проверка подлинности Microsoft Entra, управляемой AKS, позволяет выполнять вход и управлять разрешениями для кластера с помощью учетных данных Microsoft Entra и Azure RBAC. Узнайте, как включить проверку подлинности Microsoft Entra, управляемой AKS.

Примечание.

Разрешения локальной учетной записи предоставляют доступ, если учетные данные находятся на клиентском компьютере, а проверка подлинности AKS-Managed Microsoft Entra позволяет более ограниченному назначению и управлению разрешениями. Дополнительные сведения об этой рекомендации: рекомендации по обеспечению безопасности кластера и обновлений.

Chaos Studio ранее поддерживается только с использованием сетки Chaos с локальными учетными записями, но версия 2.2 всех ошибок AKS теперь поддерживает как локальные учетные записи, так и проверку подлинности Microsoft Entra.

Предупреждение

Если вы видите ошибку среды выполнения, это известная ошибка Object reference not set to an instance of an objectс ошибками версии 2.2. Ожидается, что исправление завершится развертывание в начале января 2025 года. Это происходит при использовании новой версии ошибки 2.2 в кластере с включенными локальными учетными записями. Обходной путь — использовать ошибки версии 2.1, которые помечены как "(не рекомендуется)" в пользовательском интерфейсе, или использовать кластер AKS с включенной проверкой подлинности Entra.

Целевые объекты обновления

Целевые объекты (Microsoft.Chaos/targets) представляют другой ресурс Azure в модели ресурсов Chaos Studio, поэтому вы можете легко контролировать, включен ли определенный ресурс для внедрения ошибок и какие ошибки могут выполняться с ним. В этом случае целевой объект представляет кластер AKS, который вы хотите повлиять.

Если вы подключены к кластеру AKS в качестве нового целевого объекта Chaos Studio в портал Azure, новые версии сбоя будут автоматически доступны.

Если вы хотите использовать новую версию сбоя в существующем целевом объекте AKS, необходимо обновить целевой объект. Это можно сделать одним из двух способов.

  • Отключите и повторно включите целевой ресурс.
    • Чтобы сделать это в портал Azure, перейдите в область "Целевые объекты" в интерфейсе портала Chaos Studio, выберите соответствующие кластеры AKS и выберите "Отключить целевые объекты". Подождите 1–2 минуты или уведомление о подтверждении, а затем выберите "Включить целевые объекты> для прямого обслуживания" и перейдите на экран проверки и создания.
  • Обновите включенные возможности.
    • Для этого в портал Azure перейдите в область "Цели" в Chaos Studio, найдите кластеры AKS, выберите "Управление действиями" и убедитесь, что все возможности включены. Нажмите кнопку "Сохранить", чтобы завершить обновление.

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

Создание нового эксперимента

При создании нового эксперимента, использующего ошибки Сетки хаоса AKS в портал Azure, в портал Azure могут появиться две версии каждой ошибки, такие как "AKS Chaos Mesh DNS Chaos" и "AKS Chaos Mesh Dns Chaos Chaos"(не рекомендуется)". Выберите первый вариант, а не устаревший параметр.

Если кластер AKS не отображается в качестве возможного целевого объекта после выбора сбоя, может потребоваться включить новую версию сбоя в кластере. Перейдите на страницу "Целевые объекты", найдите кластер AKS и выберите " Управление действиями", а затем убедитесь, что все возможности выбраны перед нажатием кнопки "Сохранить".

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

Обновление существующего эксперимента

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

  1. Откройте эксперимент, содержащий по крайней мере одну ошибку сетки хаоса AKS.
  2. Выберите "Изменить ошибку" и скопируйте jsonSpec значение параметра в буфер обмена.
  3. Откройте раскрывающийся список выбора сбоя и выберите версию требуемого сбоя без маркировки (deprecated) .
  4. jsonSpec Вставьте его из буфера обмена в поле параметра.
  5. Сохраните ошибку и эксперимент.

Разрешения

В Студии Chaos Studio требуется разрешение на выполнение ошибок в ресурсах.

При создании эксперимента в портал Azure можно также выбрать параметр Enable custom role creation and assignment to let Chaos Studio попытаться назначить необходимые разрешения управляемому удостоверению эксперимента.

Если вы решили не использовать создание пользовательской роли или не используете портал Azure, необходимо выполнить одно из следующих действий после создания эксперимента:

Операции RBAC

Для сбоев сетки хаоса AKS используются следующие операции RBAC:

  • Действия:
    • Microsoft.ContainerService/managedClusters/read
  • Действия с данными:
    • Microsoft.ContainerService/managedClusters/namespaces/read
    • Microsoft.ContainerService/managedClusters/pods/read
    • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
    • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
    • Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/read
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/write
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/delete
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/bind/action
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/escalate/action
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/read
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/write
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/delete

Необязательный доступ с минимальными привилегиями

Если вы предпочитаете не предоставлять полный доступ к удостоверению эксперимента ClusterRoleBinding и ClusterRoleBinding, можно вручную создать необходимую роль и привязку для Сетки Хаоса. Это необходимо для работы с сеткой Chaos, чтобы убедиться, что эксперимент имеет разрешение на целевое пространство имен указанного клиента.

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

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

    • Действия:
      • Microsoft.ContainerService/managedClusters/read
    • Действия с данными:
      • Microsoft.ContainerService/managedClusters/namespaces/read
      • Microsoft.ContainerService/managedClusters/pods/read
      • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
      • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
      • Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
  2. Разверните следующую конфигурацию YAML, чтобы создать роль и привязку. Дополнительные сведения о развертываниях в документации AKS. Развертывание кластера Служба Azure Kubernetes (AKS) с помощью портал Azure.

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: role-cluster-manager-pdmas
    rules:
    - apiGroups:
      - chaos-mesh.org
      resources: [ "*" ]
      verbs: ["get", "list", "watch", "create", "delete", "patch", "update"]
    
    ---
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: cluster-manager-binding
      namespace: {Namespace targeted by experiment}
    subjects:
    - kind: User
      name: {CHAOS-STUDIO-EXPERIMENT-MSI-OBJECT-ID}
    roleRef:
      kind: ClusterRole
      name: role-cluster-manager-pdmas
      apiGroup: rbac.authorization.k8s.io