Каковы преимущества и недостатки непривилегированных контейнеров?
16
Техническое объяснение того, что такое непривилегированный контейнер , довольно хорошее. Однако это не для обычного пользователя ПК. Есть ли простой ответ, когда и почему люди должны использовать непривилегированные контейнеры, каковы их преимущества и недостатки?
Запуск непривилегированных контейнеров - это самый безопасный способ запуска контейнеров в производственной среде. Контейнеры получают плохую огласку, когда речь заходит о безопасности, и одна из причин этого заключается в том, что некоторые пользователи обнаружили, что если пользователь получает root в контейнере, то также существует возможность получения root на хосте. В основном то, что делает непривилегированный контейнер, это маскирование идентификатора пользователя с хоста. С непривилегированными контейнерами пользователи без полномочий root могут создавать контейнеры и будут иметь и появляться в контейнере как root, но будут отображаться как ID пользователя 10000, например, на хосте (независимо от того, как вы отображаете идентификаторы пользователей). Недавно я написал пост в блоге об этом на основе серии блогов Стефана Грабера на LXC (один из блестящих умов / ведущих разработчиков LXC и кто-то, кто обязательно последует за ним). Я говорю снова, чрезвычайно блестящий.
Как вы можете видеть, процессы внутри контейнера выполняются от имени пользователя root, но отображаются не как root, а как 100000 от хоста.
Итак, подведем итог: Преимущества - дополнительная безопасность и дополнительная изоляция для безопасности. Недостаток - сначала немного сбивает с толку, чтобы обернуть голову, а не для начинающего пользователя.
Так что, если я правильно понимаю, контейнеры сами по себе не на 100% безопасны. Независимо от того, какой контейнер вы запускаете, есть шанс, что зверь может убежать И только здесь, когда тип контейнера становится важным. Для привилегированных контейнеров зверь будет работать под root, сажая руткиты и собирая ценные ключи SSL. Для непривилегированных это будет ограничено только учетной записью пользователя, которая создала контейнер, верно? Кража его ключей SSH и т. Д. Это действительно более безопасно? Можно ли это объяснить изображением четырех вложенных ящиков?
анатолий техтоник
2
Короче говоря, сами контейнеры прямо из коробки не являются безопасными для производственного использования. Относитесь к своей среде LXC так же, как к любой другой среде Linux. Вы бы не оставили свою коробку Linux широко открытой, да ?! Да, ваш контейнер будет ограничен только тем, к которому привязана учетная запись пользователя. Посмотрите сообщение Грабера о непривилегированных конкатайнерах: я думаю, что самая большая проблема заключается в возможности использовать ядро и системные вызовы, потому что каждый контейнер использует одно и то же ядро. Есть несколько способов повысить безопасность с помощью cgroups и других приложений, таких как selinux, apparmor и seccomp и других.
Итак, создайте отдельного пользователя с ограниченными правами для запуска контейнеров. Кажется справедливым. Я принимаю это как ответ. Благодарю.
анатолий техтоник
4
Это очень ценные инструменты для тестирования, песочницы и инкапсуляции. Хотите, чтобы веб-сервер был надежно заблокирован в собственной рабочей среде и не имел доступа к конфиденциальным файлам? Используйте контейнер. У вас есть приложение, для которого требуются старые версии библиотек и определенные файлы конфигурации, несовместимые с другими приложениями? Также контейнер. Это в основном chroot сделано правильно. Это позволяет вам поддерживать службы достаточно раздельно, поэтому обслуживание каждого из них намного проще, и их можно перемещать или копировать на другой компьютер, не нарушая работу существующей системы.
Недостатком является то, что вам нужно помнить пространство имен для почти всего локального для контейнера. Вы должны знать, где вы находитесь, и связь между контейнерами не тривиальна. Это хорошая идея, когда вам нужна модульность, но вы не хотите загружать виртуальные машины, а вещи, которые вы храните в контейнерах, на самом деле мало связаны.
Для «обычного» пользователя вы можете использовать контейнеры, чтобы использовать одну машину для двух человек, сохраняя их, как будто они находятся на совершенно разных машинах. Соседи по комнате, например.
Хотя хорошее человеческое описание того, для чего предназначены контейнеры, это все же не объясняет разницу между привилегированными и непривилегированными.
анатолий техтоник
1
Что ж, с общим ядром, несмотря на то, что оно увеличивает требования противника к высвобождению в некотором смысле (точнее, помогает ограничить поверхность атаки), непривилегированные контейнеры все еще не полностью изолированы от прямых хаков, которые получают корень хоста, несмотря на это ,
По этой причине, это немного неправильное предположение / утверждение. Сказав это, уровень технических способностей у многих пользователей через Интернет будет по-прежнему запускать сервисы inet множеством способов, на которые они на самом деле технически не способны, так что, эй. :)
Это очень ценные инструменты для тестирования, песочницы и инкапсуляции. Хотите, чтобы веб-сервер был надежно заблокирован в собственной рабочей среде и не имел доступа к конфиденциальным файлам? Используйте контейнер. У вас есть приложение, для которого требуются старые версии библиотек и определенные файлы конфигурации, несовместимые с другими приложениями? Также контейнер. Это в основном chroot сделано правильно. Это позволяет вам поддерживать службы достаточно раздельно, поэтому обслуживание каждого из них намного проще, и их можно перемещать или копировать на другой компьютер, не нарушая работу существующей системы.
Недостатком является то, что вам нужно помнить пространство имен для почти всего локального для контейнера. Вы должны знать, где вы находитесь, и связь между контейнерами не тривиальна. Это хорошая идея, когда вам нужна модульность, но вы не хотите загружать виртуальные машины, а вещи, которые вы храните в контейнерах, на самом деле мало связаны.
Для «обычного» пользователя вы можете использовать контейнеры, чтобы использовать одну машину для двух человек, сохраняя их, как будто они находятся на совершенно разных машинах. Соседи по комнате, например.
источник
Что ж, с общим ядром, несмотря на то, что оно увеличивает требования противника к высвобождению в некотором смысле (точнее, помогает ограничить поверхность атаки), непривилегированные контейнеры все еще не полностью изолированы от прямых хаков, которые получают корень хоста, несмотря на это ,
По этой причине, это немного неправильное предположение / утверждение. Сказав это, уровень технических способностей у многих пользователей через Интернет будет по-прежнему запускать сервисы inet множеством способов, на которые они на самом деле технически не способны, так что, эй. :)
источник