Если секрет не меняется между выполнениями, используйте специальный файл конфигурации ".appsecrets"
.Установите права доступа файла только для чтения владельцем.Внутри файла установите переменную окружения для секрета.Файл должен находиться в домашнем каталоге пользователя, выполняющего команду.
#!/bin/bash
#filename: .appsecrets
set SECRET=polkalover
Загрузите файл конфигурации, чтобы установить переменную среды.
. ~/.appsecrets
То, что я видел, сделано:
1)
echo $SECRET | command
работает, если команда запрашивает парольиз стандартного ввода И если 'эхо' является встроенным в вашей оболочке.Мы использовали Korn.
2)
password=$ENV{"SECRET"};
работает, если у вас есть контроль над кодом (например, в Perl или C ++)
3)
. ./.app.config #sets the environment variables<br>
isql -host [host] -user [user] -password <<SECRET<br>
${SQLPASSWORD}<br>
SECRET
работает, если команда может принять секрет из стандартного ввода.Одно ограничение заключается в том, что строка <<
должна быть последним аргументом команды.Это может быть проблематично, если есть не необязательный аргумент, который должен появляться после -password
Преимущество этого подхода заключается в том, что вы можете расположить его так, чтобы секрет можно было скрыть в процессе производства.Используйте то же имя файла в рабочей среде, но оно будет находиться в домашнем каталоге учетной записи, которая запускает команду в рабочей среде.Затем вы можете заблокировать доступ к секрету, как если бы вы имели доступ к учетной записи root.Только определенные люди могут 'su' использовать учетную запись prod для просмотра или сохранения секрета, в то время как разработчики все еще могут запускать программу, потому что они используют свой собственный файл '.appsecret' в своем домашнем каталоге.
Вы можете использовать этот подходхранить защищенную информацию для любого числа приложений, если они используют разные имена переменных среды для своих секретов.
(WRONG WAY)
Один старый метод, который я видел, как администраторы БД использовалидолжен был установить SYBASE на "/opt/././././././././././././././././././././././././././././././././././sybase/bin"
.Поэтому их командные строки были такими длинными, что ps обрезал их.Но в Linux я думаю, что вы можете найти полную командную строку из /proc.