Настройка Containerfile для сборки пользовательских образов, совместимых с Tasks
Содержание
Обзор функцииСценарии использованияПредварительные требованияШаги1. Подтвердите базовый образ2. Добавьте пользователя без root-прав3. Настройте необходимые права для пользователя (необязательно)4. Установите пользователя по умолчанию5. Проверьте образРезультаты работыУстранение неполадокПодробнееОбзор функции
В Tekton для повышения безопасности Tasks могут быть настроены с runAsNonRoot: true, что требует, чтобы контейнеры запускались от имени пользователей, не являющихся root. Поэтому при сборке пользовательских образов необходимо уделять особое внимание настройке Containerfile, чтобы обеспечить корректную работу этих образов в таких Tasks.
В этом документе описывается, как настроить Containerfile для сборки пользовательских образов, совместимых с Tasks, с акцентом на конфигурацию прав пользователей.
Сценарии использования
Следующие сценарии требуют обращения к рекомендациям из этого документа:
- Сборка пользовательского образа для использования в Tasks
- Возникновение ошибок, связанных с правами доступа, при запуске существующих образов в Tasks
- Обеспечение соответствия образа требованиям безопасности Tasks
Предварительные требования
Перед использованием этой функции убедитесь, что у вас есть:
- Среда сборки OCI-образов
- Вы можете использовать встроенный конвейер сборки платформы
- Если необходимо использовать community/open-source инструменты, убедитесь, что у вас есть доступ в интернет или подготовлены офлайн-пакеты
- Базовое понимание написания Containerfile
- Вы можете обратиться к официальной документации Containerfile
- Понимание лучших практик Containerfile
- Файл Containerfile и связанная конфигурация
Шаги
1. Подтвердите базовый образ
Сначала подтвердите версию release базового образа, поскольку команда создания пользователя может отличаться между версиями:
2. Добавьте пользователя без root-прав
Добавьте в Containerfile пользователя без root-прав (рекомендуется использовать UID 65532):
3. Настройте необходимые права для пользователя (необязательно)
Если пользователю требуется доступ к определенным каталогам или файлам, для него следует добавить необходимые права.
4. Установите пользователя по умолчанию
Установите пользователя по умолчанию в Containerfile (используйте UID вместо имени пользователя):
Поскольку Pods, настроенные с
runAsNonRoot, проверяют, что идентификатор пользователя не является root, а не имя пользователя.
5. Проверьте образ
После сборки проверьте, может ли образ корректно запускаться:
Результаты работы
При такой конфигурации:
-
Конфигурация пользователя
- Последовательно используется UID 65532, что позволяет файлам, создаваемым в нескольких Tasks, иметь согласованные права доступа
- Убедитесь, что у пользователя есть соответствующие права на рабочий каталог
- Не используйте пользователя root или UID 0
-
Конфигурация приложения
- Убедитесь, что приложения могут нормально работать от имени пользователей без root-прав
- Предварительно настройте необходимые права на каталоги в Containerfile
- Используйте инструкцию
VOLUMEдля определения каталогов, которые необходимо сохранять
-
Рекомендации по безопасности
- Регулярно обновляйте базовый образ для устранения уязвимостей безопасности
- Используйте многослойную сборку, чтобы уменьшить размер образа
- Следуйте принципу наименьших привилегий при настройке прав пользователей
Устранение неполадок
Если при запуске образа в Tasks возникают проблемы с правами доступа, вы можете:
- Проверить сообщения об ошибках в событиях Pod
- Убедиться, что конфигурация пользователя в образе корректна
- Проверить, что для приложения настроены необходимые права доступа