Главная

Wednesday, 15 March 2023

Доступ к паролям в KeePass из PowerShell.

Всем привет.

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

А что вы думаете по этому поводу?