Что такое безопасность контейнеров?

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

Безопасность контейнеров

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

При обеспечении безопасности контейнеров следует учесть следующее:

  • защищенность хостов;
  • трафик контейнеров;
  • защищенность приложений в контейнерах;
  • обнаружение подозрительной активности в приложениях;
  • безопасность инструментов управления;
  • безопасность строительных блоков приложений;
  • защищенность процесса сборки.

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

Платформы для работы с контейнерами

Познакомьтесь с некоторыми из них: Docker®, Kubernetes®, Amazon Web Services™ (AWS) и Microsoft®.

Docker

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

Kubernetes

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

Amazon Web Services и безопасность контейнеров

Переходим к Amazon Web Services (AWS). AWS понимает, что использование контейнеров расширяет возможности разработчиков, которые смогут создавать приложения быстрее и стабильнее. Для этого предназначена Amazon Elastic Container Service (Amazon ECS) — масштабируемая высокопроизводительная служба оркестрации, которая поддерживает контейнеры Docker. Она освобождает от необходимости управления собственными виртуальными машинами и контейнерной средой, позволяя легко запускать и масштабировать контейнерные приложения AWS. Однако, чтобы воспользоваться всеми преимуществами этой службы, вам также необходимо позаботиться о безопасности. Подробнее о безопасности контейнеров AWS.

Обеспечение безопасности экземпляров контейнеров Microsoft Azure

Напоследок скажем пару слов о Microsoft® Azure™ Container Instances (ACI). Это решение позволяет развертывать контейнеры в общедоступном облаке Microsoft® Azure™, снимая необходимость самостоятельно управлять инфраструктурой для них. Контейнеры можно запускать через специальный портал, где Microsoft уже будет автоматически предоставлять и масштабировать вычислительные ресурсы. Достоинства ACI заключаются в скорости и гибкости, однако безопасность придется обеспечивать дополнительными средствами. 

Теперь, когда вы знакомы с основными платформами для работы с контейнерами, мы перейдем собственно к обеспечению безопасности контейнеров (по ссылкам выше вы также можете прочитать о том, как защитить контейнеры при использовании каждого решения). Узнайте больше о защите экземпляров контейнеров Microsoft Azure.

Защита хостов

Обеспечение безопасности хоста начинается с выбора его операционной системы. Если есть возможность, лучше использовать ОС, оптимизированную для контейнеров. Если же вы используете стандартные версии Linux® или Microsoft® Windows®, нужно отключить или убрать все ненужные сервисы и в целом минимизировать риски безопасности. Затем добавьте уровень безопасности и средства мониторинга, которые гарантируют, что хост будет работать, как надо. В этой ситуации очень полезны такие инструменты, как контроль приложений и система предотвращения вторжений (IPS).

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

Обеспечение безопасности приложений в контейнерах

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

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

Мониторинг приложений

При запуске контейнеризированного приложения будет не лишним задействовать инструмент RASP. Такой инструмент работает внутри приложения и при необходимости блокирует вызовы. RASP обеспечивает мониторинг SQL, проверяет зависимости, временно закрывает уязвимости, проверяет URL-адреса и т. п. Кроме того, такой инструмент помогает решить одну из самых трудных задач безопасности: определение первопричины.

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

Безопасность инструментов управления

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

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

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

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

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

Безопасность строительных блоков приложений: сканирование контейнеров

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

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

Защищенность процесса сборки

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

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

Заключение

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

Исследования по теме

Статьи по теме