Axoft

Контейнерная виртуализация и безопасность разработок

Виртуализация — это разбиение аппаратного сервера на несколько виртуальных машин (ВМ). В результате вычислительные мощности распределяются между несколькими «пользователями».

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

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

Отсюда вытекает главное достоинство виртуализации: виртуальную машину можно без изменений переносить с одного сервера на другой вместе с операционной системой и приложениями.

Как работают контейнеры

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

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

DevOps (development + operations) — это зародившаяся в 2009 году методология, нацеленная на взаимодействие программистов и системных администраторов для увеличения частоты выпуска релизов.

Что такое системы управления контейнерами

Система управления контейнерами (система оркестровки) — это веб-панель администрирования, которая руководит работой контейнеров. Примером может быть открытая платформа Kubernetes, разработанная Google. Есть и другие решения — Docker, Rancher, OpenShift и так далее.

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

Разработчики и системные администраторы могут, наконец, согласиться в одном — контейнеры дают разработчикам возможность экспериментировать безо всяких рисков и ограничений. Виртуальные контейнеры — это каталоги (если вы сторонник Windows, можете называть их папками), которые безопасным образом изолированы от остального пространства операционной системы. По сути, контейнер — это безопасная система для разработки, которая совместно с хостовой операционной системой использует наиболее важные файлы, при этом позволяя разработчику создавать приложение, не опасаясь возможных негативных последствий для хоста. Контейнер оснащен своим собственным IP-адресом, идентификатором, файловой системой (только несколько файлов «одалживаются» у хоста) и уровнем выполнения.

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

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

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

Однако применение контейнеров снимает целый ряд подобных сложностей отладки ПО на промышленной системе. Разработчики могут использовать самые свежие версии нужных инструментов и проверять стабильность их работы. Все возможные уязвимости оказываются «заперты» в контейнере и не несут рисков для промышленной системы.

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

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

Немаловажным и необходимым в ближайшие годы, по мере роста скорости разработок, кибербезопасность смещается ближе к началу цикла, и теперь перед разработчиками стоит задача выявить угрозы и защитить от них продукт не только во время его запуска, но и до начала цикла разработки. Защитные решения должны разрабатываться таким образом, чтобы успешно защищать различные среды (физические, виртуальные и облачные), обеспечивая тесное взаимодействие ИТ-безопасности и процессов DevOps, а также способствовать консолидации защитных инструментов и выполнению регуляторных требований, не вмешиваясь в процессы разработки. С ростом DevOps появляются новые источники уязвимостей, и больший сегмент бизнеса нуждается в защите.  Тут на помощь разработчикам приходит новое решение от компании Trend Micro, которая расширяет возможности защиты контейнеров благодаря запуску Deep Security Smart Check.

Deep Security Smart Check помогает специалистам по DevOps обеспечивать безопасность разработок благодаря быстрому и непрерывному сканированию на наличие угроз и уязвимостей, единой панели управления, уведомлениям и журналам сканирования, тем самым выполняя требования регуляторов. Решение Smart Check оптимизировано для ведущих контейнерных платформ с поддержкой Docker API 2.0, таких как Docker Trusted Registry, Amazon Elastic Container Registry, Azure Container Registry и Google Container Registry; также решение интегрируется с ведущими системами SIEM и инструментами оркестровки, такими как Jenkins, Kubernetes, SumoLogic, Splunk и др.

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

Стать партнером Axoft

Рады сотрудничеству с AXOFT!
Заполните и отправьте данную форму.
Мы с вами свяжемся по обсуждению условий сотрудничества.

акционные предложения