#amazon-web-services #docker #aws-fargate
#amazon-веб-сервисы #docker #aws-fargate
Вопрос:
Пользователь, не являющийся пользователем root, может запускать контейнеры docker, используя инструкцию ПОЛЬЗОВАТЕЛЯ.
ссылка: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user
Я хочу сделать это в Amazon ECS на Fargate.
Как пользователь, не являющийся пользователем root, запускает контейнеры docker в Amazon ECS на Fargate?
Заранее благодарю вас.
Ответ №1:
Если вам посчастливилось управлять файлом Dockerfile, вы можете просто включить в него USER
директиву, чтобы предотвратить запуск результирующего контейнера от имени root. Вы также можете создать специальный файл Dockerfile с FROM
инструкцией, указывающей на изображение, которое вы хотите запустить как некорневое, и USER
директивой. Все это требует использования файла Dockerfile и создания образа самостоятельно.
Другие альтернативы — удаление оболочки, что вы могли бы сделать после того, как контейнер начнет использоваться rm
, но это очень простое решение, которое не помешает доступу к разумным данным в контейнере.
Наконец, при использовании Kubernetes существует политика для запуска от имени пользователя или группы. Я напрямую вставлю фрагмент моего исходного кода для этого ответа: Руководство по передовым методам AWS — EKS
Спецификация Kubernetes podSpec включает набор полей в
spec.securityContext
, которые позволяют указать пользователя и / или группу для запуска вашего приложения. Эти поля являютсяrunAsUser
иrunAsGroup
соответственно. Вы можете санкционировать использование этих полей, создав политику безопасности pod. Смотрите https://kubernetes.io/docs/concepts/policy/pod-security-policy/#users-and-groups для получения дополнительной информации по этой теме.
Комментарии:
1. Вопрос заключается в запуске Docker image в Amazon ECS на Fargate.
Ответ №2:
При запуске образов контейнеров в Amazon ECS в качестве задач Fargate есть параметры «пользователь», «привилегированный», как описано здесь:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html который можно использовать для указания пользователя, который будет использоваться для запуска контейнера.
Комментарии:
1. Обратите внимание, что
privileged
параметр нельзя использовать с Fargate.