Начало работы с модулем 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

Создание хранилища и добавление секрета

Сначала необходимо зарегистрировать хранилище. Параметр 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, имя будет перезаписан новым значением, которое вы указали.