Переменные среды AWS ECS - PullRequest
       16

Переменные среды AWS ECS

0 голосов
/ 26 марта 2019

Я потратил некоторое время на изучение этого вопроса, но до сих пор не ясно, насколько переменные среды ECS безопасны для использования с точки зрения безопасности, но варианты ENV и ENV-FILE для докера или нет?

Например: Документация AWS ECS гласит, что добавляют секреты к определению задачи, и они будут доступны как переменные среды контейнера.

Докерская документация имеет похожий язык:

Переменные среды, заданные с помощью ENV, будут сохраняться при запуске контейнера из полученного изображения. Вы можете просмотреть значения с помощью Docker Inspect и изменить их с помощью Docker run --env =.

Теперь вопрос, на который я не смог найти ответ: если обе опции устанавливают переменные среды в контейнере (что означает, что пользователи могут просматривать их при проверке Docker), в чем преимущество использования переменных среды AWS ECS?

Какова наилучшая стратегия для получения переменных (таких как dbuser, dbpassword) из хранилища параметров AWS (или) SSM, но не устанавливайте их в качестве переменных среды контейнера (если это возможно без использования входного скрипта docker)?

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

DockerFiles можно проверить с помощью кода, скажем, на Github.Так что любой, кто имеет доступ к коду, может увидеть секреты (dbUser и dbPassword).В случае, если репозиторий станет публичным, случайные секреты также будут раскрыты.

При использовании переменных AWS ECS Env секреты могут видеть только пользователи, имеющие доступ к AWS Infra.Это также облегчает работу в нескольких средах.

И, как предположил Имран, вы всегда можете получить конфигурацию из какого-либо стороннего менеджера конфигурации до запуска процесса.

1 голос
/ 02 апреля 2019

Одним из вариантов будет получение конфигурации переменных через удаленный протокол (через HTTP API) в вашем приложении во время запуска.

Пример - У меня есть док-контейнеры Spring Boot на основе Javaработает под ECS, где я перетаскиваю свою конфигурацию, такую ​​как dbuser и dbpassword, используя Spring Cloud Config .Когда запускаются мои загрузочные контейнеры Spring, они загружают необходимую конфигурацию с помощью Spring Cloud Config и инициализируют приложение.

Spring Cloud Config поддерживает получение конфигурации из различных источников, таких как Git, Vault и даже AWS Parameter Store.

Мой контейнер приложений -> Контейнер сервера Spring Cloud Config -> Хранилище параметров Git / Vault / AWS

Вот пример руководства по интеграции SpringОблако с хранилищем параметров AWS и несколько вопросов SO с репозиторием Github.https://blog.trifork.com/2018/07/20/integrating-the-aws-parameter-store-with-spring-cloud/

Почему интеграция приложения Spring Cloud с хранилищем параметров AWS не возвращает свойства из хранилища параметров?

Теперь это может не работать для других контейнеров платформы, но вы можетепримените подобную концепцию и к вашей платформе.Пример: Spring Cloud Config предоставляет общий API HTTP Rest, вы можете получить необходимые настройки из этого API в вашем приложении, написанном на других языках программирования и т. Д.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...