Какие права нужны HTTP-сервису
UID, USER и файловые разрешения на примере приложения, которое только читает свой код.
После урока вы сможете
- Определять пользователя процесса
- Задавать USER в Dockerfile
- Диагностировать Permission denied без chmod 777
Начните с необходимого действия
Наш сервер читает /app/app.py, принимает запросы на порту 8000 и пишет ответ в сокет. Ему не нужно изменять системные файлы или устанавливать программы после старта. Поэтому запуск с административными правами не следует из его задачи.
В Linux у процесса есть числовые идентификаторы пользователя и группы — UID и GID. UID 0 означает root. Посмотреть реального пользователя полезнее, чем довериться имени образа или комментарию «secure» в Dockerfile.
docker exec qa-api python -c "import os; print(os.getuid(), os.getgid())"
Минимальные права уменьшают возможности ошибочного или скомпрометированного приложения. Они не превращают контейнер в отдельную виртуальную машину и не заменяют остальные ограничения среды. Для этого урока измерим конкретное свойство: HTTP работает с ненулевым UID.