2016-11-30 2 views
2

Поэтому я использую как Powershell, так и Python для доступа и работы с API-интерфейсами как часть моих сценариев.Как защитить данные аутентификации API в сценариях powershell и python

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

Я не хочу, чтобы набирать пароль в диалоговом окне, поскольку это предназначено для быстрой автоматизации со многими API-интерфейсами. И скрипты + ресурсы должны быть переносимыми, то есть я беру их на несколько других компьютеров и просто запускаю их как есть.

Как сделать его более безопасным с моими требованиями? Есть ли что-то вроде типа lastpass для программирования/API, с помощью которого я могу получить соответствующие учетные данные, возможно, даже из сетевой папки/базы данных?

Любая помощь будет отличной.

Благодаря

+0

полный путь с файлом credentials.txt/.json? – n1c9

+0

уверенный..и догадываюсь, но разве это еще не очень сильно разоблачает? .... Особенно если вам придется переносить это с помощью скриптовых файлов + ресурсов ....Думаю, я не понимаю, как это сделать, не имея такой же ситуации, как это написано в самом скрипте? Извините за мою нообильность. – AdilZ

ответ

2

Для хранения и извлечения зашифрованных учетных данных легко использовать PowerShell-х встроенный XML-сериализации (Clixml):

$credential = Get-Credential 

$credential | Export-CliXml -Path 'C:\My\Path\cred.xml' 

реимпортировать:

$credential = Import-CliXml -Path 'C:\My\Path\cred.xml' 

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

В результате зашифрованные учетные данные не могут быть импортированы другим пользователем или одним и тем же пользователем на другом компьютере .

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

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

Encrypter

# run as each user, and on each computer 

$credential = Get-Credential 

$credential | Export-CliXml -Path "C:\My\Secrets\myCred_${env:USERNAME}_${env:COMPUTERNAME}.xml" 

код, который использует сохраненные учетные данные:

$credential = Import-CliXml -Path "C:\My\Secrets\myCred_${env:USERNAME}_${env:COMPUTERNAME}.xml" 

правильная версия файла Ф.О. r бегущий пользователь будет загружен автоматически (или он не будет работать, потому что файл не существует).

+0

woah! спасибо .... но как бы я это сделал, если мне действительно нужно создавать новые машины/виртуальные машины? Нужно ли мне все переделывать? поскольку часть процесса создания некоторых новых виртуальных машин - это запуск этих сценариев и доступ к некоторым API-интерфейсам в рамках настройки. – AdilZ

+1

Способ шифрования с этими примерами использует ключ, привязанный как к пользователю, так и к компьютеру, поэтому вам нужно хранить учетные данные один раз на новой машине в качестве пользователя. – briantist

+0

hmm ok .. плохо попробуйте поглотить это ... и использовать его .... Интересно, могу ли я расширить это на python, а также – AdilZ

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