Поделиться через


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

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

Сначала необходимо зарегистрировать хранилище. Параметр имени — понятное имя и может быть любой допустимой строкой.

Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault

Параметр DefaultVault делает это хранилище по умолчанию.

Теперь можно создать секрет.

Set-Secret -Name TestSecret -Secret "TestSecretPassword"

В этом примере передается строка открытого текста для значения секрета. Значение секрета может быть одним из пяти поддерживаемых типов:

  • байт[]
  • строка
  • 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 проходит через имя, предоставленное пользователем. Расширение хранилища ищет секрет по имени. Если GetSecret() возвращает совпадение, Set-Secret перезаписывает секрет, если не используется параметр NoClobber. Расширение хранилища всегда записывает полученную секретную информацию.

Это зависит от реализации расширения хранилища, чтобы решить, следует ли использовать сравнение с учетом регистра по имени. Например, имена секретов в хранилище расширений Microsoft.PowerShell.SecretStore не учитывает регистр. Если имя, которое вы передаете в Set-Secret, отличается только по имени существующего секрета в хранилище SecretStore, имя перезаписывается новым значением, которое вы указали.