2016-05-10 2 views
1

Я использую Postgres Amazon RDS и Amazon ECS для запуска контейнеров-докеров. Вопрос есть. Какова наилучшая практика для получения имени пользователя и пароля для базы данных RDS в контейнер докеров, работающий на ECS?Лучшая практика получения пароля RDS для контейнера докеров на ECS

Я вижу несколько вариантов:

  • Постройте параметры доступа в Докер изображения. Мне это не нравится, так как каждый, у кого есть доступ к изображению, может получить пароль.
  • Поместите учетные данные в пользовательские данные конфигурации запуска, используемые группой автомасштабирования для ECS. При таком подходе все изображения докеров, запущенные на моем кластере ECS, имеют доступ к учетным данным. Мне тоже это не нравится. Таким образом, если blackhat обнаружит отверстие безопасности в любой из моих служб (даже служб, которые не используют базу данных), он сможет получить учетные данные для базы данных.
  • Поместите учетные данные в S3 и ограничьте доступ к этому ведру с ролью IAM, которую имеет сервер ECS. Те же недостатки, что и их ввод в пользовательские данные.
  • Поместите учетные данные в определение задачи ECS. Я не вижу здесь никаких недостатков.

Что вы думаете о том, как это сделать? Я пропустил какие-либо варианты?

С уважением, Tobias

ответ

9

Строительство его в контейнер никогда не порекомендован. Это затрудняет распространение и изменение.

Ввод его в экземпляры ECS не помогает вашим контейнерам использовать его. Они изолированы, и вы получите их во всех экземплярах, а не там, где нужны контейнеры.

Ввод их в S3 означает, что вам нужно будет написать эту функциональность в свой контейнер. И это другое место для конфигурации.

Внесение их в определение своей задачи является рекомендуемым способом. Для этого вы можете использовать часть environment. Это гибко. Также, как предложения PaaS, такие как Heroku и Elastic Beanstalk, используют строки подключения DB для Ruby на рельсах и другие сервисы. Последнее преимущество заключается в том, что это упрощает использование ваших контейнеров в разных базах данных (например, dev, test, prod) без восстановления контейнеров или создания необычных функциональных возможностей.

+0

спасибо. Мы закончили тем, что поставили их в определение задачи, как вы предлагали, и оно работает как шарм. –

+0

Я знаю, что это немного старо, но разве мы не должны использовать роли IAM для предоставления доступа? Экземпляр EC2, несущий этот кластер, может иметь разрешение на чтение/запись в RDS, если он находится в экосистеме Amazon. Насколько я понимаю, вам никогда не придется записывать учетные данные жесткого кода - даже в качестве переменной окружения. – cameck

+1

Переменные окружения не являются жестко запрограммированными, особенно в определениях задач, вы можете их перебирать, потому что они не находятся в двоичном виде (контейнер). Также IAM не разрешает вам доступ к RDS. RDS - это размещенная база данных, вы все еще подключаетесь к ней со строкой соединения (url, port, username, password) –

3

В принятом ответе рекомендуется настроить переменные среды в определении задачи. Эта конфигурация глубоко погружена в веб-консоль ECS.Вы должны:

  1. Перейдите Определение задач
  2. Выберите правильную задачу и пересмотр
  3. Выберите, чтобы создать новую версию (не разрешено редактировать существующий)
  4. Прокрутки вниз к секции контейнера и выберите правильный контейнер
  5. Прокрутите вниз до раздела переменные Env
  6. Добавить конфигурацию
  7. Сохранить конфигурацию и задачи оборотов
  8. -концепции
  9. Выберите, чтобы обновить ваш сервис в новой редакции целевой

This tutorial has screenshots, которые иллюстрируют, куда идти.

Полное описание: В этом учебнике представлены контейнеры от Bitnami, и я работаю над Bitnami. Однако мысли, выраженные здесь, являются моими собственными, а не мнением Битнами.

+0

Добро пожаловать в Stack Overflow! Хотя это теоретически может ответить на вопрос, было бы [предпочтительнее включить основные части ответа] (http://meta.stackoverflow.com/q/8259) здесь и предоставить ссылку для справки. –

+0

Хорошая точка! Вызвали шаги. – Neal

+0

Спасибо, теперь вы можете сделать другой (почти идентичный) ответ, который вы оставили вчера? –

 Смежные вопросы

  • Нет связанных вопросов^_^