2015-06-04 5 views
1

Можно ли объединить защищенную строку с переменными и незащищенными строками в PowerShell?Объединение защищенной строки

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

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

ответ

2

Credential объекты позволяют расшифровать защищенную строку (source):

PS C:\>$pw = 'bar' | ConvertTo-SecureString -AsPlainText -Force 
PS C:\>$pw.GetType().FullName 
System.Security.SecureString 
PS C:\>$cred = New-Object Management.Automation.PSCredential 'foo', $pw 
PS C:\>$cred.GetType().FullName 
System.Management.Automation.PSCredential 
PS C:\>$cred.UserName 
foo 
PS C:\>$cred.Password 
System.Security.SecureString 
PS C:\>$cred.GetNetworkCredential().Password 
bar

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

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

+0

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