Усиление защиты подов с помощью securityContext
Встраивание принципов минимальных привилегий в шаблоны по умолчанию
«Усиление защиты подов с помощью securityContext» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Почему стоит использовать усиленную защиту по умолчанию
Чарт с настройками по умолчанию, обеспечивающими минимальные привилегии, защищает каждый кластер, в котором он устанавливается. Встроенная в шаблоны безопасность лучше надежды на то, что пользователи не забудут добавить её самостоятельно.
Два уровня securityContext
Можно задать securityContext на уровне пода для всех контейнеров, а также более узкий контекст для каждого контейнера. Настройка контейнера переопределяет настройку пода для этого контейнера.
Не запускайте от имени root
Установите runAsNonRoot в true, чтобы Kubernetes отказался запускать контейнер, который должен работать от имени root. Это настройка по умолчанию с наибольшим влиянием на безопасность.
securityContext:
runAsNonRoot: true
runAsUser: 1000Корневая файловая система только для чтения
Включите readOnlyRootFilesystem, чтобы контейнер не мог записывать в собственные слои образа. Подключите emptyDir для путей, в которые приложению действительно необходимо выполнять запись.
containers:
- name: app
securityContext:
readOnlyRootFilesystem: trueУдалите возможности Linux
Большинству приложений не нужны особые полномочия ядра, поэтому сбросьте все возможности (ALL) и добавьте обратно только те редкие возможности, которые действительно требуются рабочей нагрузке.
capabilities:
drop:
- ALLЗапретите повышение привилегий
Установите allowPrivilegeEscalation в false, чтобы процесс никогда не мог получить больше привилегий, чем имел при запуске, даже через двоичные файлы setuid. 🔒
allowPrivilegeEscalation: falseЗадайте fsGroup
Используйте fsGroup в securityContext пода, чтобы подключённые тома принадлежали группе, в которую входит пользователь без прав root, и ошибок доступа не возникало.
securityContext:
fsGroup: 2000Никогда не устанавливайте privileged в True
Контейнер с параметром privileged получает почти полный доступ к узлу и практически никогда не должен присутствовать в значениях чарта по умолчанию. Оставьте этот параметр не заданным, что означает false.
Сделайте настройку переопределяемой
Свяжите securityContext с values с помощью toYaml, чтобы пользователи могли изменить его, но сохраните усиленные настройки в качестве безопасных значений по умолчанию.
securityContext:
{{- toYaml .Values.securityContext | nindent 4 }}Соответствуйте стандартам безопасности подов
Эти значения по умолчанию соответствуют стандарту безопасности подов Kubernetes restricted, поэтому ваш чарт корректно устанавливается даже в пространствах имён со строгими ограничениями.
Проверьте после установки
Убедитесь, что усиление защиты применилось, изучив спецификацию работающего пода с помощью команды kubectl get pod -o yaml и проверив поля securityContext.
kubectl get pod myapp -o jsonpath='{.spec.securityContext}'Быстрая проверка
Какая настройка не позволяет запустить контейнер, если он должен работать от имени пользователя root?
Итоги
Вы усилили защиту подов с помощью runAsNonRoot, удалили возможности, включили файловую систему только для чтения и запретили повышение привилегий. Безопасные значения по умолчанию защищают каждую установку. ✅
Часто задаваемые вопросы
Урок «Усиление защиты подов с помощью securityContext» бесплатный?
Да — полный текст урока «Усиление защиты подов с помощью securityContext» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Усиление защиты подов с помощью securityContext»?
Встраивание принципов минимальных привилегий в шаблоны по умолчанию Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Усиление защиты подов с помощью securityContext»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Стандартные метки и соглашения об именовании
- Разумные документированные значения по умолчанию
- Усиление защиты подов с помощью securityContext
- Фиксация версий и отказ от latest