Вопрос или проблема
Singularity явно заявляет, что он предназначен для того, чтобы позволить недоверенным пользователям безопасно выполнять недоверенный код: https://docs.sylabs.io/guides/2.6/admin-guide/security.html:
Недоверенные пользователи запускают недоверенные контейнеры!
Эта простая фраза описывает перспективу безопасности, с которой был разработан Singularity. И если вы дополнительно учтете тот факт, что запуск контейнеров обычно требует некоторого уровня повышения привилегий, это означает, что внимание к безопасности имеет первостепенное значение.
Мой вопрос: так ли это в случае с podman, или есть другие выборы безопасности и компромиссы, которые делают его менее подходящим для использования podman, чтобы позволить недоверенным пользователям запускать недоверенный код? Судя по архитектуре и спецификациям podman (в частности, без привилегий / без демона), кажется, что podman тоже безопасен для этого случая использования, но было бы хорошо получить более детальный ответ.
Ответ или решение
Безопасность Podman: Подход к выполнению непроверенного кода для неопознанных пользователей
Введение
Вопрос, касающийся возможности безопасного выполнения непроверенного кода неопознанными пользователями с использованием инструментов контейнеризации, таких как Podman и Singularity, становится все более актуальным в современных условиях, когда безопасность остается на первом месте. Оба решения предлагают различные подходы и архитектуры, что напрямую влияет на их пригодность для указанных сценариев.
Архитектура Podman и безопасность
Podman, как и Singularity, был разработан с целью управления контейнерами, но его архитектура имеет ряд особенностей, которые позволяют различать его подход к безопасности, особенно в контексте запуска непроверенного кода.
-
Rootless Operation:
Podman поддерживает запуск контейнеров в режиме без прав администратора (rootless), что минимизирует потенциальное количество уязвимостей и снижает уровень доступа к системным ресурсам. Это позволяет пользователям запускать контейнеры, не имея привилегий суперпользователя, что является ключевым элементом безопасности при работе с непроверенным кодом. -
Отсутствие демона:
В отличие от Docker, Podman не использует архитектуру со служебным демоном. Это означает, что каждый запуск контейнера происходит из изолированного контекста, что добавляет дополнительный уровень безопасности, так как отсутствует единая точка алгоритмической атаки.
Сравнение с Singularity
Singularity изначально был разработан с акцентом на выполнение непроверенного кода от неопознанных пользователей, что было отражено в его архитектуре. Важные аспекты безопасности Singularity включают:
- Явно отраженная модель работы с пользователями, где каждый пользователь может исполнить свои контейнеры, не влияя на других.
- Функциональность, позволяющая ограничивать доступ к системным ресурсам контейнера и обеспечивать изоляцию кода.
Подход Singularity к безопасности имеет свои преимущества, особенно для научных и исследовательских сообществ, где непроверенный код часто считается нормой.
Альтернативные решения и компромиссы
Несмотря на безопасные аспекты и rootless подход Podman, существуют компромиссы, о которых стоит упомянуть:
-
Сложность настройка:
Для достижения оптимального уровня безопасности в Podman может потребоваться более сложная настройка системы, включая установку дополнительных правил и контроль за доступом к ресурсам. -
Гибкость и масштабируемость:
Хотя Singularity лучше подходит для сценариев, где часто используется выполнение непроверенного кода, Podman может предоставлять больше возможностей для интеграции с существующими DevOps процессами и CI/CD.
Заключение
Вопрос о том, безопасен ли Podman для выполнения кода от неопознанных пользователей, зависит от задач, которые стоят перед администраторами системы. Оба инструмента, Podman и Singularity, предлагают свою уникальную ценность, и выбор между ними должен основываться на специфических требованиях по безопасности и контексте использования.
Таким образом, можно утверждать, что Podman предлагает безопасный способ запуска непроверенного кода с помощью rootless операций и отсутствия демона, хотя может потребоваться дополнительная настройка для достижения уровня безопасности, аналогичного Singularity.