Microsoft выпустила крайне интересный PowerShell модуль SecretManagement. Данный модуль можно использовать для безопасного хранения и использования сохраненных паролей в ваших PowerShell скриптах. Данный модуль условно состоит из двух составляющих: SecretStore vault – собственно дефолтное хранилище паролей, и движок SecretManagement, который позволяет работать с хранилищами паролей. Поддерживается как встроенное хранилище (SecretStore vault), так и внешние инструменты для хранения паролей, например: KeePass, LastPass, HashiCorp Vault, Azure Key Vault, Bitwarden, Windows Credential Manager и т.д. С помощью SecretsManagement вы можете сохранить любые пароли и извлечь их в любой момент. Можно хранить не только пароли, но и лицензионные ключи, ключи доступа, и любую другую конфиденциальную информацию: поддерживаются типы объектов Hashtable, Byte, String, SecureString и PSCredential.
Рассмотрим использование модуля SecretManagement для доступа к паролям в файле KeePass (*.kdbx). Разумеется сначала нужно установить сам модуль SecretManagement для взаимодействия с KeePass:
Install-Module -Name SecretManagement.KeePass
Затем зарегистрируйте хранилище KeePass в своем профиле пользователя:
Register-SecretVault -Name "KeePassDB" -ModuleName "SecretManagement.Keepass" -VaultParameters @{
Path = "C:\App\keypass\Base.kdbx"
KeyPath = "C:\App\keypass\Base.keyx"
UseMasterPassword = $true
}
Чтобы проверить доступ к файлу KeePass, выполните команду:
Test-SecretVault -Name KeePassDB
В запросе следует указать мастер пароль для доступа к файлу KeePass. Если вы указали правильный пароль, команда должна вернуть True.
Теперь можно вывести список сохраненных паролей в базе KeePass.
Get-SecretInfo -Vault KeePassDB
На вывод последуют все записи независимо от иерархии в базе.
Извлечь конкретный пароль с именем записи ZTE:
Get-Secret -Vault KeePassDB ZTE
Извлечь конкретный пароль с именем записи ZTE и показать его:
$secur = Get-Secret -Vault KeePassDB ZTE -AsPlainText
$secur.GetNetworkCredential().password
Сохранить новый пароль для логина admin в KeePass:
Set-Secret -Vault KeePassDB -Name "ILO_admin" -Secret (Get-Credential ILO\admin)
Аналогичным образом вы можете подключить другое популярное решение для хранения паролей и использовать его в PowerShell, их сейчас в PowerShell Gallery с десяток.
Успехов.
No comments:
Post a Comment
А что вы думаете по этому поводу?