Наиболее распространенные проблемы безопасности Kubernetes и способы их решения

Опубликовано: 2021-03-30

Kubernetes и контейнеры обещают три вещи:

  • Более быстрая разработка и выпуск приложений.
  • Более быстрое исправление ошибок.
  • Увеличенная скорость функции.

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

Чтобы понять состояние безопасности Kubernetes, вот два фактора из опроса, проведенного StackRox в конце 2020 года:

  • 90% участников опроса сообщили, что сталкивались с инцидентами безопасности, связанными с контейнерами и Kubernetes, за последние 12 месяцев.
  • 44% участников были вынуждены отложить выпуск своих приложений из-за проблем с безопасностью, связанных с Kubernetes.

Каковы наиболее распространенные причины этих проблем с безопасностью?

Наиболее распространенные проблемы безопасности, связанные с Kubernetes
1. Неправильные настройки

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

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

В основном это связано с тем, что на рынке полно инструментов для сканирования уязвимостей, но управление конфигурацией по-прежнему в значительной степени зависит от человека.

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

Картинки:

Избегайте использования любого программного обеспечения, которое не является абсолютно необходимым. Это включает в себя менеджеры пакетов, сетевые инструменты и клиенты, такие как curl или оболочки Unix.

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

Секреты:

Старайтесь не засовывать секреты в изображения или иным образом раскрывать их без необходимости.

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

Пространства имен:

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

Привилегии во время выполнения:

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

Сетевые политики

Согласно настройкам по умолчанию, поды могут независимо общаться друг с другом в Kubernetes. Однако рекомендуется применять сетевые политики для ограничения взаимодействия модулей. Это может предотвратить распространение какой-либо угрозы по контейнеру и всему приложению.

Постоянное хранение

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

Плоскость управления

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

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

2. Уязвимости

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

К наиболее распространенным эксплойтам уязвимостей относятся:

  • Майнинг криптовалюты.
  • Установка вредоносных программ.
  • Повышение привилегий.
  • Доступ к хосту.

Эффективный подход к управлению уязвимостями — это то, что должно продолжаться в течение жизненного цикла контейнера и должно включать следующее:

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

После того как вы устраните все проблемы безопасности Kubernetes, на этапе выполнения появится свой собственный уникальный набор угроз безопасности.

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

Вот некоторые вещи, которые вы можете сделать, чтобы смягчить эти угрозы:

Мониторинг активности во время выполнения:

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

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

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

Держите сетевое общение ограниченным

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

Внимательно наблюдайте за процессами

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

4. Неудачный аудит соответствия

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

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

PCI-DSS, HIPAA и SOC 2 — это отраслевые стандарты соответствия.

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

  • Сделайте соответствие требованиям частью SDLC с самого начала.
  • Используйте отраслевые стандарты для обеспечения совместимости компонентов программного обеспечения.