Безопасно ли развертывать приложение GAE с ключом PEM своей служебной учетной записи?

Я развертываю приложение Google App Engine, которое считывает ключ Pem своей служебной учетной записи для создания подписи. Сейчас закинул ключ на Cloud Storage, но не уверен, что так будет. В качестве другого варианта ключ может быть встроен в код приложения. Что безопаснее? Или какие-то другие варианты? Эти идеи неверны?

РЕДАКТИРОВАТЬ: Если вы можете загрузить отдельный файл ключа pem, как я могу это сделать? Как это написано в вашем yaml?

Справка: Вы уже загружаете все файлы с помощью приложения. https://stackoverflow.com/a/12609865/1717563


person jumeno    schedule 30.12.2015    source источник
comment
Я уточнил свой ответ. Вы не можете загрузить ключевой файл отдельно, а только вместе с кодом приложения.   -  person Ani    schedule 31.12.2015


Ответы (2)


Вы можете развернуть ключ PEM как часть кода вашего приложения, но вам нужно держать его вне каких-либо статических каталогов. Вы не должны включать его как строку в файл кода, а сохраните его как отдельный файл, а затем загрузите ключ вместе с приложением.

В более ранних версиях GAE вы также могли запретить загрузку кода приложения другими разработчиками в вашей команде. Не уверен, что эта опция все еще поддерживается. Если да, вам следует подумать об этом, если есть другие разработчики, имеющие доступ к вашему приложению.

Кроме того, вы, вероятно, захотите исключить ключ PEM из своей системы управления версиями (например, git). Я делаю это, исключая каталог, содержащий все ключи PEM и другие секретные файлы. У вас может быть резервная копия в другом безопасном месте.

В качестве альтернативы вы можете сохранить ключ PEM в GCS, как вы тоже предложили, но это может добавить небольшую задержку вашему приложению, и вам нужно будет позаботиться о том, чтобы разрешения были установлены правильно (и не были случайно изменены в будущем). Я думаю, что этот подход менее благоприятен.

person Ani    schedule 30.12.2015
comment
Спасибо за ваш аккуратный комментарий. Я отредактировал непонятный момент. - person jumeno; 31.12.2015

Где нужна подпись?

В большинстве случаев вы можете использовать app_identity (без ключа PEM) для авторизации запросов или создания подписи для подписи запросов на доступ к службам Google, таким как GCS. Подробнее здесь

Вот пример, который показывает, как опубликовать объект в GCS, используя app_identity и сервис аккаунт для подписи почтового запроса.

person voscausa    schedule 31.12.2015
comment
Теперь я использую его для signurl. ссылка - person jumeno; 31.12.2015