Начало работы с модулем SecretStore
Модули SecretManagement и SecretStore доступны в коллекция PowerShell и могут быть установлены с помощью команд PowerShellGet.
# Install with PowerShellGet 2.x
Install-Module Microsoft.PowerShell.SecretManagement
Install-Module Microsoft.PowerShell.SecretStore
или
# Install with PSResourceGet 1.x
Install-PSResource Microsoft.PowerShell.SecretManagement
Install-PSResource Microsoft.PowerShell.SecretStore
После установки модулей вы можете загрузить их и приступить к использованию или созданию новых секретов.
Import-Module Microsoft.PowerShell.SecretManagement
Import-Module Microsoft.PowerShell.SecretStore
Create хранилища и добавить секрет
Сначала необходимо зарегистрировать хранилище. Параметр Name является понятным именем и может быть любой допустимой строкой.
Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Параметр DefaultVault делает это хранилище хранилищем по умолчанию.
Теперь можно создать секрет.
Set-Secret -Name TestSecret -Secret "TestSecretPassword"
В этом примере передается строка в виде открытого текста для значения секрета. Значение секрета может быть одного из пяти поддерживаемых типов:
- byte[]
- String
- Securestring
- PSCredential
- Хэш-таблица
При первом доступе к хранилищу необходимо указать пароль для нового хранилища. Этот пароль используется для блокировки и разблокировки хранилища.
Vault SecretStore requires a password.
Enter password:
********
Enter password again for verification:
********
Выполните команду Get-Secret
, чтобы получить секрет. При использовании параметра AsPlainText секрет возвращается в виде незашифрованной строки.
PS> Get-Secret -Name TestSecret -AsPlainText
TestSecretPassword
Чтобы получить список всех секретов, выполните следующую команду:
PS> Get-SecretInfo
Name Type VaultName
---- ---- ---------
TestSecret String SecretStore
Примечания
При запуске Set-Secret
с параметром Name для указания имени секрета командлет вызывает GetSecret()
, реализованный расширением хранилища. Set-Secret
передает имя, предоставленное пользователем. Расширение хранилища ищет секрет по такому имени. Если GetGecret()
возвращается совпадение, Set-Secret
секрет перезаписывается, если не используется параметр NoClobber . Расширение хранилища всегда записывает полученные секретные сведения.
Решение о том, следует ли использовать сравнение с учетом регистра для имени, зависит от реализации расширения хранилища. Например, имена секретов в хранилище расширений Microsoft.PowerShell.SecretStore не учитывают регистр. Если имя, которое вы передаете Set-Secret
, отличается только по регистру имени существующего секрета в хранилище SecretStore, имя будет перезаписан новым значением, которое вы указали.