Как запускать контейнеры docker от имени пользователя, не являющегося пользователем root, в Amazon ECS на Fargate

#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.