Ответ
Ограничение прав доступа контейнера — базовая практика безопасности в DevOps. Настраивается комбинацией параметров.
1. Запуск от непривилегированного пользователя Самая важная мера. Задавайте в Dockerfile:
FROM alpine
RUN addgroup -g 1000 appgroup && adduser -u 1000 -G appgroup -D appuser
USER appuser
CMD ["myapp"]
Или при запуске:
docker run --user 1000:1000 my-image
2. Удаление Linux Capabilities По умолчанию контейнер получает широкий набор capabilities. Оставляйте только необходимые.
# Удалить все, затем добавить только нужные
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx
# Пример удаления опасных capabilities
docker run --cap-drop=CHOWN --cap-drop=NET_RAW my-image
3. Запуск контейнера в read-only режиме Запрещает запись в корневую файловую систему контейнера.
docker run --read-only my-image
# Для записи в определенные места используйте tmpfs или томы
docker run --read-only --tmpfs /tmp --mount type=volume,source=logs,target=/var/log my-image
4. Безопасные настройки монтирования (Security Options)
# Отключение доступа к устройствам ядра
docker run --device-read-bps /dev/sda:1mb --device-write-iops /dev/sdb:10 my-image
# Более строгий seccomp-профиль
docker run --security-opt seccomp=/path/to/profile.json my-image
# Отключение доступа к пространству имен хоста (где возможно)
docker run --security-opt="no-new-privileges:true" my-image
5. AppArmor / SELinux Использование мандатного контроля доступа.
docker run --security-opt apparmor=docker-default my-image
6. Права для томов (SELinux context)
В системах с SELinux (RHEL, CentOS) используйте :Z или :z для автоматического изменения контекста безопасности тома.
docker run -v /host/path:/container/path:Z my-image
Полный пример безопасного запуска:
docker run -d
--name secure-app
--user 1000:1000
--cap-drop=ALL --cap-add=CHOWN --cap-add=SETGID --cap-add=SETUID
--read-only
--tmpfs /tmp
--security-opt="no-new-privileges:true"
-v app_data:/data:rw,Z
my-secure-image:latest
В Kubernetes эти настройки задаются в securityContext Pod и Container спецификаций.