SecretStore 模块入门

SecretManagementSecretStore 模块可从 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"

此示例传递机密值的纯文本字符串。 机密值可以是五种受支持的类型之一:

  • 字节[]
  • 字符串
  • 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

笔记

使用 Name 参数运行 Set-Secret 以指定机密的名称时,cmdlet 将调用由保管库扩展实现的 GetSecret()Set-Secret 通过用户提供的名称。 保管库扩展按该名称查找机密。 如果 GetSecret() 返回匹配项,Set-Secret 将覆盖机密,除非使用 NoClobber 参数。 保管库扩展始终写入它收到的机密信息。

由保管库扩展实现决定是否对名称使用区分大小写的比较。 例如,Microsoft.PowerShell.SecretStore 扩展保管库中的机密名称不区分大小写。 如果传递给 Set-Secret 的名称与 SecretStore 保管库中现有机密的名称不同,则名称将覆盖你提供的新值。