2015-04-05 2 views
2

Я пытаюсь сохранить некоторые переменные окружения для S3 в зашифрованном сценарии оболочек (так что эти ключи не хранятся в незашифрованном виде на моем диске) следующим образом:Установить переменные среды из зашифрованного сценария оболочки gpg?

export AWS_ACCESS_KEY_ID="example_key_id" 
export AWS_SECRET_ACCESS_KEY="example_secret_access_key" 

Это сохраняется в виде сценария оболочки setenv.sh, который я зашифрован как setenv.sh.gpg.

Я пытаюсь запустить сценарий файла с eval $(gpg --decrypt ./setenv.sh.gpg), который расшифровывает файл, но не загружает переменные среды соответственно (printenv подтверждает это).

Я чувствую, что он может что-то делать с этим вопросом: Shell script to set environment variables

Однако, я пытался несколько различных вариации с source без толка, как я предполагаю, что source ожидает файл, а не содержимое скрипт.

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

+0

[Замена процесса] (http://www.gnu.org/software/bash/manual/bash.html#Process-Substitution) в Bash может это сделать; что доступно в Zsh? 'source <(gpg --decrypt ./setenv.sh.gpg)'. Является ли безопасность такой иллюзорной? Что может помешать вашему пользователю запустить команду GPG и увидеть результат? –

+0

Причина, по которой я подумывала настроить сценарий, так это то, что я могу загружать разные ключи S3 для разных проектов, без необходимости вручную вводить их каждый раз. По соображениям безопасности, я думал, что это будет хорошая идея, если бы мой ноутбук был украден или скомпрометирован. (У меня есть полное шифрование диска, но оно также может быть украдено при разблокировке и т. Д.) – waffl

+0

Я думаю, что это квалифицируется как «безопасность через неизвестность», но до тех пор, пока вы это осознаете и осознаете свои ограничения, никакого большого вреда не делается. В частности, вы не должны, на мой взгляд, полагаться на это, чтобы все было в безопасности. –

ответ

1

Как сказал первый комментатор, source <(gpg --decrypt ./setenv.sh.gpg) выполнит то, что вам нужно. Он должен работать в Zsh, а также в bash.

N.B. Zsh также имеет = (...) для замещения процесса, но это оставит незашифрованный файл temp, лежащий где-то, который побеждает цель использования шифрования. Придерживайтесь < (...), который использует именованный канал.

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

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

+0

По какой-то причине запуск этого эха повторяет несколько строк, в которых ему нужна парольная фраза для расшифровки gpg, но никогда не предлагает подсказки для ввода пароля? Я не могу даже ctrl + c вернуться в оболочку. – waffl

+0

Как ни странно, он работает в bash, но не zsh, даже когда полностью удаляется мой профиль '.zshrc' временно – waffl

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