#docker #ImproveCV #ShowYourSkills
Фундаментальная идея модели безопасности Zero Trust заключается в том, что к внешним и внутренним объектам следует относиться одинаково. Это означает выход за рамки традиционного подхода к безопасности, основанного на «периметре», когда пользователям или серверам во внутреннем периметре компании можно автоматически доверять. В модели Zero Trust привилегии предоставляются исключительно на основе идентификации и роли, мы никому и ничему не доверяем по умолчанию.
Аналогия: Раньше фермер ожидал опасности лишь снаружи, от диких зверей, которые водились за пределами его угодий и пастбищ. Для защиты от внешних угроз высокого забора казалось достаточно, но времена меняются. Фермер пережил несколько инцидентов, связанных с болезнями скота, падежом и бешенством. Он понёс серьёзные убытки и понял, что важна также внутренняя безопасность и порядок. С тех пор все животные снабжены специальными бирками, привязывающими их к конкретным зонам и разрешающими доступ только к определённым кормушкам.
Контейнеры, такие как Docker, предоставляют изолированные среды для приложений, однако их изоляция не абсолютна, что делает их уязвимыми для атак. Применение модели Zero Trust обеспечивает строгий контроль для каждого взаимодействия как внутри контейнерной инфраструктуры, так и для каждого контейнера отдельно. Это минимизирует риски несанкционированного доступа и последовательного взлома систем по схеме «одну за одной», «одну через другую» в одной сети (lateral movement).
Давайте рассмотрим некоторые базовые механизмы и принципы:
Принцип наименьших привилегий — это фундаментальный подход к безопасности, утверждающий, что пользователь, программа или процесс должны иметь только минимальные разрешения, необходимые для выполнения своей предполагаемой функции, и не более. Что касается работы с контейнерами, эффективная реализация этого принципа требует использования AppArmor/SELinux и профилей seccomp. Это позволит обеспечить невозможность запуска контейнеров с root-правами, недопустимость запроса и получения контейнерами повышенных привилегий.
Дополнительно управление привилегиями в Linux осуществляется через механизм capabilities. По умолчанию Docker предоставляет контейнерам ограниченный набор таких привилегий, однако для повышения безопасности рекомендуется явно запрещать все привилегии и затем разрешать только необходимые. Это достигается с помощью опций --cap-drop и --cap-add при запуске контейнера. Например, команда:
docker run --cap-drop ALL --cap-add CHOWN <image_name>
сначала удаляет все привилегии, а затем добавляет только привилегию CHOWN, необходимую для изменения владельца файлов.
Это вводный пост, позволяющий немного пробежаться по возможностям защиты контейнеров. В грядущих публикациях я раскрою каждый аспект подробнее и приведу множество других примеров.
А теперь самый главный вопрос: зачем тебе это знать, разбираться и практиковаться?
Всё просто — чтобы добавить в своё резюме и уметь защитить следующую строчку, например:
Настройка контейнеров Docker в соответствии с принципом минимальных привилегий через управление Capabilities, профили AppArmor/политики SELinux, с автоматизацией сборки и развертывания посредством CI/CD (GitLab), а также анализом уязвимостей контейнерных образов с помощью Clair/Trivy.
Формулировка неточная, требует доработки и тюнинга под ваш кейс, но вполне может прибавить ещё одну тему, о которой вы можете поговорить с интервьюером, описывая свой опыт. Вы будете к этой беседе подготовлены, а значит, ваши шансы получить заветный оффер возрастут.
