Как сохранить учетные данные пользователя для скрипта
Мне необходимо использовать старую версию ClearQuest 7, и единственные API, которые включены в нашей установке, предназначены для VBA (Excel) и RatlPERL. (REST API для нас не вариант - хотя он сталкивается с той же проблемой с открытым текстом.)
Я написал скрипт ratlperl, который выполняет запросы к базе данных дефектов и выдает вывод csv. Обратите внимание, что для аутентификации ratlperl требуются учетные данные пользователя в открытом тексте.
ratlperl query.cqpl -u %userid% -p %password% -q "%query%" -c %outfile%
Этот скрипт вызывается из пакетного файла Windows. При запуске из командной строки Windows без параметров пакетный файл запрашивает учетные данные пользователя, но они также могут быть предоставлены в качестве параметров.
query.bat %userid% %password%
Я запускаю ежедневные запросы с учетными данными пользователя, передаваемыми в качестве параметров для пакетного файла.
Это все работает хорошо, но я бы не хотел хранить пароль в виде открытого текста таким образом. Реестр был бы одной из возможностей, но любой, имеющий доступ к компьютеру, имел бы доступ к этим учетным данным.
Как я могу хранить эти учетные данные в некоторой степени безопасным способом?
2 ответа
Есть две вещи, которые нужно остерегаться. Во-первых, ваш список процессов "показывает" учетные данные аутентификации. Особенно на Unix - если вы запускаете ps
он покажет вам аргументы, которые могут включать имя пользователя и пароль. Способ обработки этого - в основном "чтение из файла, а не списка аргументов". В Unix вы также можете изменить $0
изменить, как вы показываете в ps
(но это не помогает истории команд, и она также не идеальна, так как пройдет некоторое время, прежде чем она будет применена).
Другой - хранение данных в покое.
Это немного сложнее. По сути, существует не так много решений, которые позволили бы вашему сценарию получить доступ к учетным данным, которые не позволили бы злоумышленнику сделать это.
В конце концов, простым способом вставки print $password
в ваш сценарий... они обходят практически любой контроль, который вы можете надеть на него. Особенно, если у них есть доступ администратора к вашему ящику, и в этот момент... на самом деле вы ничего не можете сделать.
Решения, которые я бы предложил, хотя:
Создайте файл с (открытым текстом) именем пользователя и паролем. Установите минимальные разрешения на это. Запустите скрипт от имени пользователя, у которого есть права, но не позволяйте никому получать доступ к этой учетной записи.
Таким образом, другие люди могут "увидеть" ваш скрипт (и, возможно, потребуется запустить его), но не могут скопировать его / взломать / запустить его самостоятельно.
Я бы предложил sudo
для этого на Unix. Для Windows я не уверен, насколько гранулярность у вас есть RunAs
- это стоит посмотреть или, в качестве альтернативы, иметь запланированное задание, которое запускается как ваша учетная запись службы и выбирает "файлы запросов" для обработки, которые могут быть сгенерированы любым пользователем.
Поскольку уровень безопасности не должен быть таким высоким, возможно, стоит подумать о создании простого exe-файла? Пароль может быть каким-то образом считан из памяти, но я думаю, что таким образом создается достаточно большой барьер.
Или что-то подобное может быть полезным?
http://www.battoexeconverter.com/
НТН