Рубрика:
Разработка /
Полезные советы
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
PowerShell: безопасность Управление паролями
Рассмотрим несколько наглядных примеров работы с паролями и списками безопасности при помощи PowerShell. Научимся преобразовывать обычные строки в SecurityString, вызывать штатное диалоговое окно для ввода пароля, получать, передать и изменять ACL-список безопасности
Преобразование пароля из String в SecurityString
$t = read-host -AsSecureString
$Ptr=[System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($t)
Комментарий
Осуществляется чтение данных из консоли. При вводе строки вместо символов отображаются звездочки. Выполняется преобразование данной строки в зашифрованную и обратно.
Преобразование пароля из SecurityString в String
$pwd="*******"
$Ptr=[System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($pwd)
$str=[System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
Write-host security string: $str
Комментарий
Выполняется преобразование полученного пароля из SecurityString в String. В качестве вспомогательного элемента используется прямое преобразование из String в SecurityString.
Запрос имени и пароля средствами Windows
$obj=Get-Credential
$pwd=$obj.Password
$uname=$obj.UserName
$Ptr=[System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($pwd)
$str=[System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
Write-host username: $uname
write-host password: $str
Комментарий
Осуществляется чтение данных с помощью стандартного диалогового окна. Выполняется преобразование пароля в зашифрованный вид.
Запуск приложения от имени пользователя
$username = "domain\username"
$password="*******"
$server="servername"
$pwd = ConvertTo-SecureString -String $password -asplaintext -force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $username,$pwd
Invoke-Command -ComputerName $server -ScriptBlock {(dir env:computername).value} -Credential $cred
Комментарий
Осуществляются преобразование полученного пароля в строковом виде с помощью командлета ConvertTo-SecureString и запуск приложения на удаленном сервере от имени заданного пользователя.
Управление паролями. ACL-списки. Получение ACL-списка папки
$path = (dir Env:\windir).Value
$Obj = Get-Acl -Path $Path
$Obj.Access | Out-GridView
Комментарий
Чтение ACL-списка с помощью командлета Get-ACL папки с ОС и вывод данных в GUI.
Копирование ACL-списка из одной папки в другую
$acl = Get-Acl c:\Windows
$acl | Set-Acl c:\Folder
Комментарий
В листинге осуществляется копирование разрешений из папки Windows в папку Folder.
Создание нового ACE-правила в существующем ACL-списке
$acl = Get-Acl c:\Folder
$permission = "island\corwin", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow"
# Равнозначная запись:
# $permission = "island\corwin",2032127, 3, 0, 0
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
$acl | Set-Acl $acl.path
Комментарий
Перед получением доступа к списку создают новое правило FileSystemAccessRule. Параметры правила могут быть заданы в качестве псевдонимов или напрямую – с помощью цифр.
Удаление ACE-правила в существующем ACL-списке
$acl = Get-Acl c:\Folder
$acl.access | % {
$acl.PurgeAccessRules($_.IdentityReference)
}
$acl | Set-Acl $acl.path
Комментарий
На первом этапе осуществляется получение ACL-списка и проход по каждому ACT-элементу с его удалением. Затем выполняется запись нового списка с помощью командлета Set-ACL. На практике, анализируя ACL-список, удаляют только лишние записи.
Составил Иван Коробко
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|