Защищать переменные GAE env с помощью gsutil builder для источника app.yaml во время сборки? - PullRequest
0 голосов
/ 06 февраля 2019

У меня та же проблема, что и здесь: Безопасное хранение переменных среды в GAE с помощью app.yaml , а именно:

"Мне нужно хранить ключи API идругая конфиденциальная информация в app.yaml в качестве переменных среды для развертывания в GAE. Проблема с этим заключается в том, что если я отправлю app.yaml в GitHub, эта информация станет общедоступной (не очень хорошая). "

ДополнительноЯ хочу установить следующие флажки:

  • Предотвратить блокировку вендора (насколько это возможно) и возможность перенести мой dockerfile в другое место.
  • Простота развертывания с помощью GitHub.Я хочу нажать на мастера, который запускает сборку.
  • Минимальная настройка или подходящее усилие и рабочий процесс для соло-разработчика или небольшой команды.

В результате моего исследования было получено следующее:

Безопасное хранение переменных среды в GAE с помощью app.yaml

Как настроить средупеременные / секреты приложения в Google App Engine

GAE: Как развернуть различные среды с секретами?

переменные среды appengine и ОС

Как передать переменные среды в app.yaml с помощью облачной сборки

Много полезной информации от GAE: Как развернуть различные среды с секретами?, где автор перечислил три обходных пути и причину их неиспользования:

  • Использовать Google KMS - позволяет нам помещать зашифрованные секреты непосредственно в проект, но это требует от насдобавьте пользовательский код в наши приложения, чтобы расшифровать их.Это создает другую среду управления между местным, промежуточным и производственным.Это увеличивает риск ошибок из-за сложности.
  • Хранить секреты в Google Datastore - я пробовал, я создал помощник, который ищет env vars в proccess.ENV, затем в кеше ив конечном итоге в Datastore.Но, как и в KMS, это значительно увеличивает сложность.
  • Храните секреты в файле JSON и помещайте их в облачное хранилище Google: опять же, требуется загружать переменные env через помощника, который проверяет envvars, затем загружает файл и т.д ...

Однако лучшее для меня решение пришло от Как передать переменные среды в приложение.yaml с использованием облачной сборки

Это позволяет мне использовать следующий поток развертывания с использованием гибкой среды GAE для nodejs:

  1. Объединение с моими триггерами главной ветви Githubсборка облака
  2. Мой первый шаг в моем cloudbuild.yaml - получение файла app.yaml с помощью gsutil builder , поскольку app.yaml не находится в системе контроля версий
  3. Myapp.yaml указывает на мой dockerfile для моей среды выполнения и содержит мои переменные env

Это проверяет все мои поля и было довольно простым решением , но , это определенно неЭто популярное решение, поэтому яСкажите что-нибудь здесь?

Самое главное, есть ли какие-либо проблемы безопасности?

1 Ответ

0 голосов
/ 06 февраля 2019

Я поражен тем, как вы провели исследование, вы собрали все возможные способы его достижения.

Как вы упомянули, существует множество способов передачи переменных в приложение, но я считаю, что предлагаемое вами решение (хранение переменных в Google Cloud Storage и получение их с помощью Google Cloud Build) является оптимальным для ваших целей.Это не требует большого количества кода и это элегантно, я надеюсь, что этот пост поможет людям узнать об этом решении.Что касается ваших проблем безопасности, это решение включает в себя высокую степень безопасности, так как вы можете установить файл в корзине так, чтобы он был доступен только от Google Cloud Build и владельца проекта.

...