文章系统分析了Passwordstate在多次供应链攻击和认证绕过漏洞后的安全信任危机,并按使用场景拆分为人类密码、机器密钥和特权访问三类需求,分别对比了KeePass/KeePassXC、1Password、Bitwarden、云厂商原生Secrets Manager以及Infisical。
Passwordstate 是 Click Studios 推出的一款自托管、基于 Web 的企业密码管理工具。在金融、政府和国防等限制或彻底禁止云访问的组织中,它非常常见。很多团队也把它当作一个临时的 secrets manager 来使用,将 API key、auth token 和服务凭证与人类密码一起存储。像 devblackops/PasswordState 这样的社区包也存在,用来让程序化访问不那么痛苦。
问题在于:Passwordstate 的安全记录已经侵蚀了人们对它的信任,而这种信任正是继续使用它的理由。
有三个主要的事件群,定义了这一模式:
moserware.secretsplitter.dll。任何拉取了该更新的实例,都会开始通过 Moserpass 恶意软件向攻击者的基础设施泄露已存储记录和主机系统元数据。Click Studios 花了 28 小时才作出响应。随后,攻击者还发起了一场冒充 Click Studios 的钓鱼活动,分发一个假的补丁,这意味着事件响应过程本身也变成了额外的攻击向量。比任何单一 bug 更重要的是这种模式。该产品的核心价值主张是“我们让 secrets 不上云,所以它们更安全”,但其实现却一再未能保护这些 secrets。再加上事件期间缓慢且不透明的沟通,你面对的是一个仅靠打补丁无法修复的信任问题。
在选择工具之前,先确定你真正要解决的是哪个问题。Passwordstate 被用于几种不同的用途,而正确的替代方案取决于哪一种用途对你的团队最重要。
这是最初的使用场景:员工凭证、共享登录、WiFi 密码、供应商门户访问。核心需求包括:一个能生成高熵凭证的密码生成器、团队成员之间安全共享密码而不诉诸 Slack 私信或电子表格,以及用于合规的审计日志。
API key、数据库连接字符串、SSH key、CI/CD token、服务账户凭证。这些需要程序化访问、具备环境感知的作用域(dev/staging/prod),以及与部署流水线集成。传统密码管理器并不适合这项工作。
控制谁可以访问关键基础设施、在什么条件下访问、可以访问多久。这包括 session 录制、凭证 checkout/checkin,以及针对提升权限访问的审批工作流。这属于 Privileged Access Management(PAM)的领域——Passwordstate 的用户群经常需要这一类别,但传统密码管理器并不能很好地解决它。
适用场景:云不是一个选项,而且范围严格限定为个人或非常小型团队的人类密码。
KeePass 及其跨平台分支 KeePassXC 将凭证存储在一个加密的本地数据库文件中(.kdbx,AES-256 或 ChaCha20)。默认情况下,KeePass 在本地运行,不需要服务器或云组件;除非你额外增加同步或共享层,否则不会通过网络暴露凭证。
以下是这两个变体在实际中的表现:
它的不足之处:
KeePassXC 是一个可靠的个人密码保险库。作为面向 50+ 团队的企业密码管理解决方案,它需要大量运维开销才能运转,而缺乏集中控制也使其难以成为需要审计轨迹或入职/离职工作流的组织的合格 Passwordstate 替代品。
适用场景:可以接受云,主要需求是人类凭证管理,并且团队重视 UX 和快速入职。
1Password 是一个云托管密码管理器,具有精致的 UI、细粒度的 vault 权限以及简洁的入职/离职工作流。当有人离开组织时,撤销访问权限只需要一次管理员操作,凭证仍然保留在公司内部。
为什么它与这一受众相关:
它的不足之处:
类似工具:Dashlane、LastPass(尽管 LastPass 自身也有显著的数据泄露历史,因此要谨慎评估)
适用场景:团队需要企业密码管理,并且希望保留自托管选项,同时开源对于可审计性或策略合规很重要。
Bitwarden 是一个开源密码管理器,既提供云托管,也提供自托管部署选项。对于那些因为自托管需求而特意从 Passwordstate 迁移的团队来说,Bitwarden 可以说是最自然的替代品——它在不放弃本地部署的前提下,提供了真正的多用户访问控制。
关键技术属性:
适用场景: 团队已经在主要云服务商上运行工作负载,并且需要具备深度平台集成的托管式 secrets management。
如果你的基础设施主要运行在某一家主流云上,那么原生 secrets management 服务通常是处理机器凭证最简单的路径。它们是完全托管的,与 IAM 深度集成,并且不需要额外基础设施来部署。
AWS Secrets Manager:
Azure Key Vault:
GCP Secret Manager:
三者的共同限制: 这些服务非常适合用于各自云生态内部消费的 secrets,但在多云或混合环境中会造成碎片化。它们也无法解决人类凭证管理问题。对于员工密码、共享账户和供应商门户访问,你仍然需要一个密码管理器。而且,它们都没有开发者导向 secrets management 平台原生提供的环境作用域模型(将 dev/staging/prod 作为一等构造)。
适用场景: 真正的痛点在于跨环境和流水线管理 API key、token 和服务凭证——或者团队需要对数据库和服务器等基础设施进行特权访问控制。
Infisical 是一个用于 secrets management、证书和 privileged access management 的开源平台,专为开发者和基础设施工作流构建。如果团队一直在把机器凭证塞进 Passwordstate,然后再用自定义脚本取出来,那么这就是一个专门构建的替代品。它不是面向人类登录凭证的传统密码管理器——而是一个用于管理现代基础设施所需 secrets、证书和特权访问的企业级平台。
关键技术属性:
对于那些将 Passwordstate 作为事实上的 PAM 工具来使用的团队——例如管理谁可以访问关键数据库、服务器和基础设施——Infisical PAM 直接解决了这一问题。Passwordstate 历史中的许多安全失败(尤其是 Emergency Access 绕过漏洞)正是源于恰当的 PAM 解决方案旨在防止的那类特权访问问题。
Infisical PAM 为访问数据库和服务器等基础设施资源提供中心化、基于策略的控制。其架构采用基于 Gateway 的模型:一个轻量级的 Infisical Gateway 部署在你的网络内部,并作为通向私有资源的安全桥梁。用户永远不会获得直接网络访问权限,也看不到底层凭证。相反,连接会通过 Gateway 代理,并自动注入凭证。
访问生命周期如何运作:
read_only 身份访问“Production PostgreSQL”)。如果配置了审批策略,请求会通过多步审批工作流进行路由——指定审批人会收到通知,并可批准或拒绝。在已配置的情况下,也可为紧急场景提供 break-glass 绕过。Infisical PAM 当前支持的资源包括 Active Directory、PostgreSQL、MySQL、MSSQL、Redis、Kubernetes、AWS IAM、SSH 和 Windows Servers,并且还会随着时间推移增加更多资源类型。对于 SSH 访问,Infisical 支持签名 SSH 证书,以实现临时、短生命周期的基础设施访问。
对于当前同时在 Passwordstate 中存储人类密码和机器凭证的团队,一个实用的迁移路径是:使用 1Password 或 Bitwarden 管理人类凭证 + 使用 Infisical 管理机器 secrets 和特权基础设施访问。 这能清晰地区分关注点,并为每个问题配上合适的工具。
类似工具: Doppler(不开源)、HashiCorp Vault(运维负担很重——把它运行好本身就是一份工作,不过 HCP Vault 提供了一个托管选项,可减轻负担),以及专门针对 PAM 的 CyberArk、Delinea 和 BeyondTrust。
从 Passwordstate 迁移 secrets 是手动且混乱的。 Passwordstate 的导出工具能力有限。你很可能需要针对其 API 编写脚本来提取凭证,并仔细验证完整性。API 存在速率限制,可能会影响批量导出,因此要据此规划。如果 2021 年攻陷窗口期内存储的任何 secrets 尚未轮换,应立即轮换。
“自托管”并不自动意味着“更安全”。 Passwordstate 就是自托管的,但它仍然被多次攻陷。自托管会把底层 OS 打补丁、网络加固、数据库维护和监控的责任转移给你的团队。若要让自托管真正提升安全性,你需要:经过加固且及时进行补丁管理的 OS、将密码/secrets manager 隔离开的网络分段、静态数据库加密、对异常访问的监控与告警,以及明确的安全更新应用 SLA。如果这些实践不够扎实,自托管会增加风险而不是降低风险。
不要让密码管理器变成你的 secrets manager。 密码管理器是为交互式的人类使用而设计的——登录网站、与同事共享凭证。机器 secrets(API key、DB 连接字符串、证书)有不同的访问模式、生命周期要求和轮换需求。把它们混在一个工具里,会在审计轨迹和访问控制两方面都制造盲点。
迁移前先审计 Passwordstate 里到底有什么。 团队常常会惊讶地发现陈旧凭证、没有所有者的共享服务账户,或者那些本应在多年前就轮换的 secrets。迁移是一个清理旧账的好机会。
迁移后的凭证轮换不是可选项。 将 secrets 移动到新平台之后,要轮换它们。迁移过程本身会制造一个凭证同时存在于两个系统、导出文件或 shell 历史中的窗口。把迁移视为一次潜在暴露事件,并据此进行轮换。
正确的行动取决于你的 Passwordstate 实例里究竟存放了什么。在评估任何工具之前,先导出完整清单,并对你存储的内容进行分类:人类凭证放在一个桶里,机器 secrets 放在另一个桶里,特权基础设施访问放在第三个桶里。
如果清单几乎完全由人类密码组成(登录凭证、共享账户、WiFi key),那么像 1Password 或 Bitwarden 这样的专用密码管理器就能以比 Passwordstate 更低的运维开销填补空缺。如果自托管是要求,Bitwarden 是更强的选择。如果清单中 API key、token 和服务凭证占很大比重,那么它们应该放进像 Infisical 或云原生选项(AWS Secrets Manager、Azure Key Vault、GCP Secret Manager)这样的 secrets manager 中,具体取决于你的基础设施,而不是密码保险库。如果团队需要针对数据库、服务器和其他基础设施的特权访问控制,那就是 PAM 问题。Infisical PAM 或像 CyberArk 这样的专用 PAM 工具可以直接解决它。
具体的下一步是审计你的 Passwordstate 实例。运行导出,将每一条记录标记为“human”“machine”或“privileged infrastructure”,并标记出过去 12 个月内未轮换的任何内容。这个清单就是迁移计划。其他一切(工具选择、环境映射、集成工作)都建立在你清楚知道自己在保护什么,以及它是如何被访问的基础之上。
Passwordstate 反复出现的安全失败已经清楚表明,继续留在原地会带来真实风险。但在没有计划的情况下迁移,只是把混乱搬到一个新平台。从审计开始。一旦你知道自己面对的是什么,工具选择就会变得直接。
- 原文链接: infisical.com/blog/passw...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码