Powershell: Генерация уникальных паролей

25 ноябрь 2021, Четверг
3 121
0
0 0
При создании учетных записей, необходимо задавать им уникальный пароль, соответствующий заданным требованиям информационной системы, политики информационной безопасности и других регламентных документов. Бывают конечно случаи, когда всем назначают пароль Password, но думаю таких с каждым годом все меньше. Традиционный способ - это набирать на клавиатуре псевдослучайную последовательность символов, которая по рекомендациям должна отвечать следующим требованиям:
  1. Мимнимальная длина пароля - не менее и\или не более опеределенного количества символов.
  2. Пароль должен содержать (как правило 3 из 4х наборов)
    • малые буквы латинского алфавита (a-z), 
    • заглавные буквы латинского алфавита (A-Z), 
    • арабские цифры (0-9) 
    • специальные символы ( . , : ; ? ! * + % - < > @ [ ] { } / \ _ {} $ # )
  3. Быть уникальным для каждой учетной записи
  4. Периодически изменяться, либо по истечении времени, либо при компрометации

В современных тенденциях, при создании новых учетных записей, пароль уже, как правило, не генерируется человеком, а используются автоматизированные средства по автоматической генерации паролей, исходя из заданных требований.
Здесь приходят на помощь системы:
  • управления жизненным циклом учетных записей
  • online генерации паролей
  • самописное ПО
  • скрипты
Ниже будет показан пример простого скрипта, который мождно использовать для генерации случайных паролей, с заданными требованиями по его длине. Конечно, каждый для себя может написать свою собственную функцию по генерации паролей, это не так сложно, но 
у комании Microsoft в пространстве имен System. Web. Security, есть Class Membership, в котором  есть метод Membership.GeneratePassword(Int32, Int32). Этот метод генерирует случайный пароль указанной длины. У этого метода 2 параметра:
1. Число символов в генерируемом пароле. Допустимый диапазоне от 1 до 128.
2. Минимальное число не буквенно-цифровых символов (например, @, #, !, %, & и т. д.) в создаваемом пароле (но не более чем значение первого параметра).

Используя это метод в PowerShell весь скрипт генерации пароля из 10 символов с минимум двумя спецсимволами будет состоять всего из двух строк:
Add-Type -AssemblyName System.Web
[System.Web.Security.Membership]::GeneratePassword(10, 2)
Если необходимо чуть более гибкое решение, с генерацией бОльшего количества паролей. то скпирт можно слегка модернизировать. Параметры вынести в переменные, и задать генерацию нескольких паролей, то скрипт преобразуется следубющим образом:
Add-Type -AssemblyName System.Web
$NumberOfCharacters = 15         # Количество символов в пароле
$NumberOfSpecialCharacters=1     # Минимальное Количество спец символов в пароле
$NumberOfPasswords=10            # Количество паролей
1..$NumberOfPasswords| % {[System.Web.Security.Membership]::GeneratePassword($NumberOfCharacters,$NumberOfSpecialCharacters)}

В случаереализации автоматического создание учетных записей, скрипт можно преобразовать в функцию, и уже вызывать функцию с параметрами:
add-type -AssemblyName System.Web

function GeneratePassword{
    param(
        [int]$NumberOfCharacters = 12, # Количество символов пароле (по умолчанию 12)
        [int]$NumberOfSpecialCharacters = 1 # МИНИМАЛЬНОЕ количество спецсимволов в пароле (по умолчанию 1)
    )
    [System.Web.Security.Membership]::GeneratePassword($NumberOfCharacters,$NumberOfSpecialCharacters)
}

GeneratePassword 20

Комментарии:
Прокомментировать
При использовании материалов ссылка на сайт UserMan.ru обязательна.
Политика конфиденциальности
Пользовательское соглашение
UserMan.ru © 2017-2024
Соцсети: VK