Могу ли я предоставить учетные данные AWS через смонтированный каталог в локальный контейнер Docker, созданный sbt-native-packager - PullRequest
0 голосов
/ 11 октября 2018

У нас есть несколько образов докеров, которые мы создаем с помощью sbt-native-packager, которые должны взаимодействовать со службами AWS.При запуске их вне AWS нам необходимо явно предоставить учетные данные.

Я знаю, что мы можем явно передавать переменные среды, содержащие учетные данные AWS.Это усложняет сохранение секретности наших учетных данных.Один из вариантов - предоставить их через командную строку, обычно сохраняя их в нашей истории оболочки (да, я знаю, этого можно избежать, добавив пробел в начале команды, но это легко забыть) и подвергнув их более высокому рискуслучайного копирования / вставки.В качестве альтернативы мы можем предоставить их через env-файл.Но это подвергает нас возможности проверять их в системе управления версиями или непреднамеренно передавать их на другой сервер.

Мы обнаружили, что идеальной практикой является монтирование нашего локального каталога ~/.aws/ в домашний каталог работающего пользователя дляДокер контейнер.Однако наши попытки заставить его работать с образами sbt-native-packager оказались безуспешными.

Одна уникальная деталь для образов sbt-native-packager (по сравнению с другими) состоит в том, что они создаются с использованием док-станции ENTRYPOINT вместо CMD для запуска приложения.Я не знаю, имеет ли это отношение к проблеме.

Итак, вопрос: можно ли предоставить учетные данные AWS в докер-контейнер, созданный sbt-native-packager, путем монтирования папки учетных данных AWS через командную строку?параметры при запуске?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Проблема, с которой я столкнулся, была связана с разрешениями.Файлы .aws имеют очень ограниченный доступ на моем компьютере, и пользователь по умолчанию в образе sbt-native-packager - daemon.Этот пользователь не имеет доступа для чтения моих файлов при подключении к контейнеру.

Я могу получить желаемое поведение, добавив следующие флаги в команду запуска Docker: -v ~/.aws/:/root/.aws/ --user=root

Мне удалось обнаружить это с помощью флага --entrypoint=ash при запуске для просмотра переменной среды HOME (место для монтирования папки /.aws/) и попытки cat содержимого смонтированной папки.

Теперь мне просто нужно понять, каким уязвимостям безопасности я открываюсь, запустив докер-контейнеры таким образом.

0 голосов
/ 11 октября 2018

Я не совсем уверен, почему монтирование ~/.aws было бы проблемой - обычно это может быть связано с разрешениями на чтение в этом каталоге и различными UID между хост-системой и контейнером.

Тем не менее я могу предложить несколько обходных путей:

  1. Использовать файл переменной среды вместо явного указания их в командной строке.В docuer run вы можете сделать это, указав --env-file.Для меня это звучит как самый простой подход.

  2. Смонтируйте другой файл учетных данных и укажите переменную среды AWS_CONFIG_FILE, чтобы указать его местоположение.

...