Упростить безопасность Kubernetes с Kyverno и Opa Gatekeeper

Андела спонсировала этот пост.

Kubernetes-это инструмент для управления контейнерными приложениями, но он поставляется с одной конкретной задачей: безопасность! Благодаря своей сложности, обеспечение того, чтобы ваше развертывание Kubernetes было безопасным и выровнены с лучшими практиками, может быть ошеломляющим.

Но есть хорошие новости. Такие инструменты, как Kyverno и Opa Gatekeeper, здесь, чтобы помочь вам защитить ваши кластеры. Эти политические механизмы обеспечивают безопасность ваших ресурсов Kubernetes, прежде чем они даже войдут в ваш кластер. Звучит как изменение игры, верно?

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

Почему безопасность Kubernetes имеет значение

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

Введите Kyverno и Opa Gatekeeper

Как Kyverno, так и OPA Gatekeeper предназначены для блокировки вашей среды Kubernetes без добавления ненужной сложности. Думайте о них как о ваших вышибалах в области безопасности Kubernetes. Они подтверждают ваши конфигурации, обеспечивают соответствие и останавливают уязвимости в своих треках, прежде чем попасть в вашу систему.

Прожектор на Kyverno

Kyverno построен специально для Kubernetes, и его просто использовать. Политики написаны в YAML, языке сериализации данных, благоприятствующего человеку, без какого-либо дополнительного языка программирования. Независимо от того, применяете ли вы пространства имен, применяя правила в кластере или политики тестирования с инструментом CLI до развертывания, Kyverno выделил вас. А бонус? Вы получаете отчеты о соответствии с коробкой. Некоторые ключевые основные моменты Kyverno включают:

  • Легкая политика YAML
  • Нативная интеграция с инструментами Kubernetes
  • Инструмент CLI для предварительного просмотра политик, прежде чем вытащить их
  • Политическое обеспечение между пространствами и кластеров имен

Встроенная отчетность по соблюдению

Kyverno не просто обеспечивает безопасность; Это дает возможность организациям понимать и адаптировать их политику с ясностью и точностью.

Как установить Kyverno в свой кластер Kubernetes

Вам нужно будет установить руль на своей рабочей станции. Вы будете использовать Helm для установки Kyverno.

Начните с Kyverno

Зачем использовать руль для установки Kyverno? Его:

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

Шаг 1: Установите руль (если еще не установлен)

Чтобы установить варево на macOS (с домашним заводом):

Заварите установить шляп

Чтобы установить пиво на Linux:

Керл | избиение

Чтобы установить варево в Windows (с шоколадным):

Choco Установить Kubernetes-Helm

Шаг 2: Добавьте kyverno helm Repo

Helm Repo Добавить Kyverno Helm Repo обновление 12 Helm Repo Добавить Kyverno Helm Repo обновление

Шаг 3: Установите Kyverno

Helm Установите Kyverno Kyverno/Kyverno-Namespace Kyverno-Create-Namespace 1 Helm Instal

Шаг 4: Проверьте установку Kyverno

Cubect с стручками -n Queen

Пример политики Kyverno

Использование варианта 1: Это предотвращает развертывание контейнеров, которые используют: последний тег.

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

Пожалуйста, скопируйте и вставьте фрагмент ниже в файл с именем файла Dislowing-latest-tag.yaml и используйте эту команду, чтобы выполнить его в своем кластере. Политика ниже не позволит пользователям использовать теги изображений: последние в вашем кластере.

kubectl Apply -f dislow-latest-tag.yaml

Просмотреть необработанные данные.

Применение nginx с тегом «Последняя»

Пожалуйста, скопируйте и вставьте фрагмент ниже в файл с именем файла nginx-latest.yaml и используйте эту команду, чтобы выполнить его в своем кластере. В манифесте ниже используется изображение с nginx: последнее. Политика Кайверно должна помешать вам применять манифест:

kubectl Apply -f nginx-latest-tag.yaml

Просмотреть код здесь.

Ниже вы можете видеть, что мы не можем создать POD Nginx с тегом изображения в качестве последнего. Это суть использования такого движения политики, как Kynervo для обеспечения соблюдения лучших практик безопасности.

Обеспечивая политики, такие как непрерывное изменяемые теги изображения (последние), команды могут:

  • Предотвратить непреднамеренное развертывание неверно -нестабильных изображений
  • Улучшить отслеживание и воспроизводимость
  • Усилить общую позу безопасности кластера

Что такое опеката?

Gatekeeper Open Policy Agent (OPA) — это инструмент для обеспечения соблюдения политики, адаптированный для работы с Kubernetes. Политики написаны в Рего, декларативном языке запросов OPA, для динамического определения правил и динамического обеспечения политики безопасности. Это позволяет вам писать политики, которые проверяют, нарушает ли что -то в вашей настройке Kubernetes определенное правило.

Gatekeeper OPA выступает в качестве контроллера поступления в Kubernetes, оценивая политики до того, как ресурсы будут развернуты и помогают обеспечить соблюдение с самого начала.

Ниже приведен пример простого правила Rego, чтобы убедиться, что все пространства имен в вашем кластере Kubernetes имели командную метку:

Пакет kubernetes.admission[{«msg»: «Namespace must have a ‘team’ label»}] {api_object.kind == «пространство имен» не has_label (api_object.metadata.labels, «team»)} has_label (метки, метка) {Метки[label]
} 12345678910 пакет kubernetes.admission нарушение[{«msg»: «Namespace must have a ‘team’ label»}] {api_object.kind == «пространство имен» не has_label (api_object.metadata.labels, «team»)} has_label (метки, метка) {Метки[label]}

Ключевые особенности Gatekeeper OPA

  • Логика политики хранится отдельно от ограничений, что делает ее многократным использованием в разных политиках. Логика политики, написанная в Rego, определяет, что следует проверить (например: «Пространство имен должно иметь командную метку»), в то время как ограничения сообщают привратнику, где и когда применять логику политики (например: «Применить это правило ко всем пространствам имен в этом кластере»).
  • Он может сканировать существующие ресурсы на предмет нарушений.

Сравнение Kyverno и Opa Gatekeeper

Особенность
Кайверно
ОПА ГАРДЕР

Политический язык
Ямл Рего

Сложность
Простой комплекс

Поддержка мутации
Да нет

Пользовательская поддержка ресурсов
Да ограничен

Гибкость
Умеренный высокий

Кривая обучения
Низкий высокий

Выбор между Kyverno и Opa Gatekeeper

Выбор между Kyverno и OPA Gatekeeper зависит от ваших конкретных потребностей и технического опыта:

Выберите Kyverno, если:

  • Вы предпочитаете нынешний подход Kubernetes с политикой, определенной как CRD с использованием YAML.
  • Вы и ваша команда знакомы с концепциями Kubernetes и Yaml.
  • Вам нужен более простой и интуитивно понятный способ определения общих политик безопасности Kubernetes.

Выберите OPA Gatekeeper, если:

  • У вас и вашей организации есть существующий опыт в Рего или готовы инвестировать в его обучение.
  • Вам необходимо выразить очень сложную и пользовательскую логику политики.
  • Вам необходимо использовать более зрелый и широко принятый полицейский механизм с более широкой поддержкой сообщества.
  • Вам требуется общий направление политики, которое можно использовать в нескольких системах. Gatekeeper OPA может использоваться для обеспечения соблюдения политик не только в средах Kubernetes, но и в различных системах, таких как микросервисы, облачная платформа и многое другое.

И Kyverno, и OPA Gatekeeper, при реализации, могут обеспечить соблюдение лучших практик безопасности, таких как:

  • Обеспечение квот ресурсов на основе имен.
  • Ограничение привилегированного выполнения контейнеров.
  • Требование конкретных ярлыков и аннотаций.

Установите Gatekeeper OPA в свой кластер

Вам нужно будет работать на вашей рабочей станции.

Шаг 1: Добавьте Harteeper Helm Repo:

Helm Repo Добавить привратник Helm Repo Обновление 12 Helm Repo Добавить Gatekeeper Helm Repo обновление

Шаг 2: Установите привратник

Helm Установите Gatekeeper Gatekeeper/Gatekeeper \—Namespace Gatekeeper-System \ -create-namespace 123 Healm Install Gatekeeper/Gatekeeper \-Sampace Gatekeem-System \-Create-Namespace

Пример политики Gatekeeper OPA

Использование варианта 1: Это предотвращает развертывание контейнеров, которые используют: последний тег.

Шаг 1: Создайте шаблон ограничения (он определяет логику)

Пожалуйста, скопируйте и вставьте фрагмент ниже в файл с именем файла Dislowing-Latest-Tag-conster-template.yaml.

Kubectl Apply -f dislow-latest-tag-constraint-template.yaml

Просмотреть код здесь.

Шаг 2: Ограничение (активирует и применяет шаблон)

Пожалуйста, скопируйте и вставьте фрагмент ниже в файл с именем файла Dislowing-latest-tag-gatekeeper.yaml

Kubectl Apply -f dislow-latest-tag-gatekeeper.yaml

Просмотреть код здесь.

Шаг 3: Применение Nginx с тегом «Последние»

Пожалуйста, скопируйте и вставьте фрагмент ниже в файл с именем файла nginx-latest.yamland. Используйте эту команду, чтобы выполнить ее в своем кластере. В манифесте ниже используется изображение с nginx: последнее. Политика привратника Реги должна помешать вам применять манифест.

kubectl Apply -f nginx-latest-tag.yaml

Просмотреть код здесь.

Контейнер с тегом «Последний».

Заключение

Kyverno и OPA Gatekeeper являются полезными инструментами для обеспечения безопасности ваших рабочих нагрузок Kubernetes. Kyverno выделяется с его простыми политиками на базе YAML и Kubernetes Con-Consement, что делает его простым в использовании. С другой стороны, Gatekeeper OPA обеспечивает серьезную гибкость со своим языком Rego, который является искусным в обработке сложных настройков или работает на нескольких платформах. Выбор правильного действительно сводится к тому, что нужно вашей команде, уровень вашего опыта и ваши цели безопасности. Оба инструмента помогают разработчикам быстро и уверенно перемещаться, оставаясь в пределах правил, следя за тем, чтобы безопасность, соответствие и лучшие практики выпекаются во все, не замедляя никого.

Узнайте, как создать сквозное решение для автоматизации процессов сборки, тестирования и развертывания для API REST на основе Kubernetes.

Andela предоставляет крупнейший в мире частный рынок для глобального отдаленного технологического таланта, основанного на платформе с AI для управления полным жизненным циклом найма контракта. Andela помогает компаниям масштабировать команды и быстрее реализовать проекты через специализированные области: App Engineering, AI, облако, данные и аналитика. Узнайте больше последних из Andela Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Adetokunbo Ige является технологом Andela, частного мирового рынка талантов. Опытный инженер платформы и сертифицированный ведущий исполнитель ISO 22301 в непрерывности бизнеса, он приносит огромный опыт работы в области разработки программного обеспечения, управления корпоративными приложениями, инфраструктуры сервера … Подробнее от Adetokunbo Ige

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *