0Pricing
DevOps Bootcamp · Урок

Усиление защиты подов с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. Стандартные метки и соглашения об именовании
  2. Разумные документированные значения по умолчанию
  3. Усиление защиты подов с помощью securityContext
  4. Фиксация версий и отказ от latest
← Назад к DevOps Bootcamp