SecretManagement 的安全性取决于它托管的扩展保管库。 这些保管库执行存储和检索机密的实际功能。 默认情况下,SecretManagement 不会以纯文本形式返回机密。 默认情况下,除非用户使用 AsPlaintext 开关显式请求将密钥作为纯文本形式返回,否则任何文本密钥都将作为 SecureString 对象返回。
至关重要的是,仅使用由已知和受信任源发布的扩展保管库模块,并且具有有效的包签名。
SecretStore 扩展保管库使用 .NET 加密 API 来加密机密数据并将其存储在本地文件系统上。 存储配置信息和秘密元数据也以加密形式存储,以防止无意泄露或随意阅读。
机密存储文件通过加密哈希进行验证,以检测文件损坏或篡改。 所有这些信息都受单个加密密钥和可选密码的保护。
SecretStore 的默认配置需要密码。 但是,密码更难管理,因为必须在首次配置 SecretStore 保管库时提供密码,并在访问存储时再次提供密码。
为了获得最佳安全性,请使用未存储在本地计算机上的密码,以便在计算机被破坏时无法发现该密码。
SecretStore 配置包括 PasswordTimeout,它限制了保管库在会话期间保持解锁状态的时间量。
超时值 表示 -1 保管库在会话的整个生命周期内保持解锁状态。
这可能不太安全,但在单个会话中运行无人值守脚本时很有用。 保管库将使用 Unlock-SecretStore解锁,并在整个会话中保持解锁状态。 脚本完成后,会话将关闭。
密码身份验证要求也可以完全关闭。 在这种情况下,从登录帐户访问机密不需要密码,而且更方便。 机密仍处于加密状态,但用于解密机密的密钥存储在当前用户帐户的文件系统上。 密钥仅受作系统文件系统安全性保护。 该密钥可能会被对该用户帐户拥有的文件具有读取权限的其他帐户发现。 因此,对于需要对存储的机密进行强大安全保护的任何系统,不建议使用无密码配置。