[玩转系统] 通过秘密管理模块的PowerShell加密密码命令
作者:精品下载站 日期:2024-12-14 13:09:46 浏览:15 分类:玩电脑
通过秘密管理模块的PowerShell加密密码命令
将机密信息存储为可读文本是一个重大的安全风险。遗憾的是,使用纯文本密码的 PowerShell 脚本似乎仍然存在,脚本编写者应该采取措施改变这种做法。但保护脚本中使用的秘密和密码一直是一个挑战。
但借助新的 PowerShell 加密密码模块,现在只需几个命令即可保护机密和密码。本教程将教您如何使用 PowerShell 机密管理和机密存储模块以交互方式或在脚本中安全地存储和检索密码。
先决条件
本教程将是一个实践演示,但不需要太多先决条件。只要您拥有一台运行 Windows PowerShell 5.1 或 PowerShell 7.x 的计算机,就可以开始使用。本教程使用装有 PowerShell 7.2.0 的 Windows 10 计算机。
安装 PowerShell 加密密码模块
在管理和存储 Powershell 加密密码之前,您需要安装 PowerShell 加密密码模块,有两个:
- Microsoft.PowerShell.SecretStore - 一个扩展模块,提供用于存储机密的机密存储(保管库)。
- Microsoft.PowerShell.SecretManagement - 为您提供用于连接和管理保管库及其包含的项目的命令。
有一些第三方机密存储模块可与 PowerShell 机密管理模块配合使用。但是,本教程将仅涵盖 Microsoft 提供的秘密存储。与往常一样,使用第三方保管库时请务必小心。
请按照以下步骤安装必要的 PowerShell 加密密码模块:
1. 在计算机上打开提升的 PowerShell 控制台(以管理员身份)。
2. 接下来,运行以下命令将 PowerShell 的执行策略 Set-ExecutionPolicy
设置为 RemoteSigned
。此命令确保您可以在计算机上运行 PowerShell 脚本。
Set-ExecutionPolicy RemoteSigned
在非 Windows 计算机上,执行策略始终设置为“无限制”且不可更改。
3. 现在,运行以下 Install-Module
命令来安装机密管理模块 (Microsoft.PowerShell.SecretManagement
)。
Install-Module -Name Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore
在如下所示的确认提示中,按Y,然后按 Enter 继续安装。
4. 最后,运行下面的Get-Module
命令来确认模块的安装。
Get-Module -ListAvailable Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore
下面的屏幕截图确认您已在此计算机上成功安装了模块。
创建 Microsoft Secret Store Vault
在开始存储加密密码和机密之前,您首先需要设置一个保管库。保险库是用于存储您的秘密的安全存储库。
运行下面的 Register-SecretVault
命令来注册新保管库,并将保管库存储提供程序设置为 Microsoft.PowerShell.SecretStore
模块。在此示例中,保管库名为 Vault1
,但您可以对其进行不同的命名。此外,-Description
是可选的,但有助于描述您的新秘密保险库。
Register-SecretVault -Name Vault1 -ModuleName Microsoft.PowerShell.SecretStore -Description "My first secret vault"
Microsoft Secret Store 保管库仅适用于当前用户帐户上下文,这意味着只有创建该保管库的用户帐户才能访问它。
现在,运行下面的 Get-SecretVault
保管库命令以确认新保管库的创建。
Get-SecretVault -Name Vault1 | Select-Object *
如下所示,Vault1
显示为 Microsoft.PowerShell.SecretStore
保管库。请注意,IsDefault
值设置为 True
,因为此保管库是您用户帐户上的第一个也是唯一一个秘密保管库。
请勿使用同一保管库模块创建多个保管库。如果这样做,每个保管库将包含重复的条目,并且没有任何额外的好处。
存储和更新机密
您已经注册了一个新的秘密保管库,现在可以开始在其中存储敏感信息。但在此之前,您应该知道可以在保险库中存储什么类型的秘密。
Microsoft 机密存储接受以下数据类型作为机密。
- PS凭证
- 哈希表
- 安全字符串
- 细绳
- 字节[]
如果您计划存储秘密对,例如用户名+密码或应用程序 ID+API 密钥,则需要考虑 PSCredential 或 HashTable 类型。其他秘密类型仅更适合单值秘密。
例如,运行以下命令将新的用户名和密码 PSCredential 对象添加到存储中。
# Create a credential object.
$credential = Get-Credential
# Create a new secret named Secret1
Set-Secret -Name Secret1 -Secret $credential
第一次将机密添加到机密存储时,Set-Secret
命令将要求您为机密存储本身分配主密码,如下所示。为您的保管库指定新密码并确保记住它,因为无法恢复丢失的秘密存储密码。
当您需要更新密钥时,只需运行相同的 Set-Secret
命令即可覆盖现有密钥。
取回秘密
您现在已经创建了第一个秘密并将其存储在您的秘密保险库中。现在,每当您需要从保管库检索机密时,请执行以下指南。
默认情况下,秘密存储需要密码才能解锁。 900 秒不活动后,保险库会再次自行锁定。因此,在检索秘密之前,您需要先解锁保险库。
1. 运行以下命令来解锁您的秘密保管库。
Unlock-SecretStore
输入保管库的密码,然后在出现密码提示时按 Enter 键。
如下所示,如果解锁操作成功,您将不会看到任何消息。
但如果解锁失败,也许您输入了错误的密码,您会收到一条失败消息,如下所示。
2. 解锁秘密存储后,运行以下命令以查看其中包含的秘密列表。如果您知道要检索的密钥的名称,请跳至下一步。
Get-SecretInfo
在下面,您可以看到该命令显示了密钥的名称、类型以及它所在的保管库名称。
3. 现在您知道了密钥的名称,请运行以下命令来检索密钥的值。
Get-Secret -Name Secret1
请注意,下面的密码显示为 System.Security.SecureString,这表明密码加密效果良好。
4. 最后,运行以下命令调用 PSCredential 上的 GetNetworkCredential()
方法以查看明文密码。
(Get-Secret -Name Secret1).GetNetworkCredential() | Select-Object *
现在您已成功找回密码。
在自动化中使用 PowerShell 加密密码
到目前为止,您已经学会了注册和创建新的秘密商店。您还创建了一个新的秘密,并学会了如何在需要时调用该秘密。但秘密检索的方式是交互式的。
自动化的全部目的是消除与脚本的手动交互。手动输入秘密存储主密码来解锁它不太适合自动化。但不用担心,因为有一些方法可以解决这个挑战。
加密秘密存储主密码
由于默认情况下解锁秘密存储需要密码,因此您需要一种无需手动输入主密码即可解锁的方法。但您还必须确保不要以纯文本形式公开主密码。
实现此自动化场景的一种方法是将主密码保存在加密的 XML 文件中。
1. 首先,运行以下命令将主密码保存在 CliXml 文件中。此命令会提示凭据并将该凭据导出 (Get-Credential | Export-CliXml
) 到主目录 (~/vaultpassword.xml
) 中的 XML 文件。
您可以根据需要以不同的方式命名 XML 文件,并将其导出到不同的文件路径。
Get-Credential | Export-CliXml ~/vaultpassword.xml
在用户提示中输入任意用户名,然后按 Enter。
接下来,输入秘密存储的主密码并按 Enter。
2. 现在,运行下面的 Get-Content
命令来确认您导出的凭证文件 (~/vaultpassword.xml
) 存在并且包含加密的主密码。
Get-Content ~/vaultpassword.xml
XML 文件不会以纯文本形式显示主密码,而是以安全字符串形式显示,如下所示。您现在可以在脚本中重复使用此 XML 文件。
3. 在脚本中运行或添加以下命令。此命令将加密密码从 XML 文件 (Import-CliXml ~/vaultpassword.xml
) 导入到变量 ($vaultpassword
) 中。
$vaultpassword = (Import-CliXml ~/vaultpassword.xml).Password
如果您想知道,从 XML 解密/导入加密密码仅适用于加密密码的用户帐户。即使其他人复制了 XML 文件,也无法解密密码。
4. 运行以下命令解锁您的秘密存储,无需指定密码。为何如此?因为您的脚本调用 Unlock-SecretStore
命令并将 $vaultpassword
传递给 -Password
参数
Unlock-SecretStore -Password $vaultpassword
5. 最后,运行以下命令来检索您需要的机密 (Select-Object Username,Password
)。
(Get-Secret -Name Secret1).GetNetworkCredential() | Select-Object Username,Password
禁用秘密库密码验证
请记住,秘密存储只能由创建它的用户帐户访问。只要您的脚本或 PowerShell 会话在该用户帐户上下文下运行,秘密存储就可用。
考虑到这种情况,禁用秘密存储密码要求是您可以尝试的另一种解决方案。这样做时,您的自动化脚本不需要额外的逻辑来处理主密码。
要禁用秘密存储的密码身份验证要求:
1. 首先,运行下面的 Get-SecretStoreConfiguration
命令以确认安全存储上启用了密码身份验证。 获取 SecretStoreConfiguration
根据下面的结果,秘密存储验证需要密码。
2. 接下来,运行以下 " target="_blank" rel="noreferrer noopener nofollow">Set-SecretStoreConfiguration
命令来设置 Authentication
和 交互
设置为None
以禁用密码要求。
Set-SecretStoreConfiguration -Authentication None -Interaction None
3. 在出现确认提示时,按 Y 并 Enter。最后输入当前密库密码并按Enter键即可完成操作。
结论
在整个教程中,您已经意识到在 PowerShell 中使用密码通常需要脚本编写人员开发安全存储和检索密码的方法。有第三方解决方案,但最合适的解决方案通常涉及成本和复杂的设置。
除了在本地存储密码之外,Microsoft 还提供 Azure Key Vault 模块,允许将凭据保存到 Azure 订阅 - 非常适合在团队或组织内共享机密。
随着秘密管理和秘密存储模块的发布,现在可以在 PowerShell 中标准化凭据管理。现在,您愿意转换脚本以利用 PowerShell 加密密码模块吗?
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[软件合集] 25年5月28日 精选软件37个
[软件合集] 25年5月27日 精选软件26个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[办公模版] office模板合集:包含word、Excel、PowerPoint、Access四类共计2000多个模板
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag