文章解释了“秘密蔓延”问题:随着应用、环境和外部服务增多,API 密钥、数据库凭据、证书等敏感信息分散在开发、测试、生产及多种基础设施中,导致配置遗漏、泄露难追踪、轮换撤销低效等风险。作者提出用中心化秘密管理器统一存储、分发、审计和管理 secrets,并介绍其在本地开发、CI/CD 与生产中的接入方式,以及选型时应考虑部署模式、加密能力、功能集与成本。
首先,我们需要定义“secret”这个词。在这个语境中,secret 指的是任何敏感数据,例如 API keys、数据库凭证、TLS certificates、加密密钥,以及需要为你的应用/基础设施安全存储和处理的环境变量。
在大多数情况下,secret 允许应用程序访问系统。例如,凭证可能允许应用程序从数据库、S3 等位置读写数据。鉴于 secret 经常用于身份验证和/或授权,它们应该得到妥善保护,避免落入坏人之手,否则这些人可能会利用 secret 获取对关键系统和数据的访问权限。
考虑到这一点,让我们来讨论“secret sprawl”。
术语 secret sprawl 指的是团队无法有效管理分散在其基础设施中的 secret。随着团队在多个环境中部署越来越复杂的服务(例如 development、staging、production),而每个服务又依赖一个或多个外部服务,他们会积累数百个,有时甚至数千个 infrastructure secrets、kubernetes secrets 等。
需要管理大量 secret 会带来显著的安全风险、配置错误,并最终导致失误。从难以保证对 secret 的正确处理和加密,到难以准确定位某个特定 secret 在哪里以及不知道谁有访问权限,再到忘记在软件开发生命周期的不同阶段创建/更新/删除 secret,secret sprawl 会引发许多问题。
下面这些相关场景听起来可能很熟悉:
总的来说,secret sprawl 使得有效管理 secret 变得困难,从而带来不必要的风险和麻烦。
要解决 secret sprawl,你需要中心化你的 secrets management,也就是为你基础设施中的 secret 提供一个统一的视图和管理入口。更具体地说,你需要使用一个专门的工具,称为 secret manager,来存储 secret,并简化向应用程序和基础设施交付 secret 的过程。借助它,你可以在应用程序中存储和查询敏感数据。
你可以把 secret manager 想象成一种特殊的安全数据库,数据受到严格控制、加密并被审计。虽然其核心功能是存储和分发 secret,但 secret manager 还具有独特的 secret-specific 功能,例如生命周期管理能力,包括版本控制、轮换、吊销,甚至 dynamic secrets。顺带一提,有些 secret manager 允许你附加不同的“存储后端”。例如,你可以将它们配置为对接 PostgreSQL、MySQL、S3 等。
使用 secret manager 有助于解决上一节所描述的问题,并且是任何安全体系的重要组成部分。最明显的是,它确保你整个开发周期中的服务在任何时候都能获得正确的 secret,这也包括开发者经常使用 .env 文件作为替代方案的本地开发。同时,它不仅提供所有 secret 管理活动的详细记录,使你能立即了解任何事件的完整经过,还在需要时提供一种简单机制来即时轮换 secret。
作为一种旨在服务整个开发周期的工具,secret manager 应该位于你的 stack 旁边,并将 secret 从本地开发、CI/CD pipelines 一直到 production 分发到你的基础设施中。开始使用 secret manager 的一般流程通常包括:
关于使用哪种 secrets management solution 的决定,在很大程度上取决于你的团队或组织的需求。例如,你可能会考虑是否要使用 Azure Key Vault 这类云服务,或者选择像 HashiCorp Vault 这样的本地开源解决方案。进一步来说,在考虑云方案时,你可能会思考静态加密(encryption-at-rest)是否足够,或者你是否需要一个提供端到端加密的解决方案。
除此之外,你可能会考虑每个 secret manager 的功能集,以及这些功能是否足以满足你的组织需求。例如,有些解决方案提供基于路径的 secret 存储,这一特性对编排最苛刻的架构很有用;有些提供跨多个环境的鸟瞰视图,让你可以轻松比较并一眼定位任何差异;还有一些可能会把 secret scanning 和 leak prevention 等功能也打包提供。最后,你可能还会考虑设置 secret manager 的成本和难度(即学习曲线)。
在提到一些基本考量之后,你应该考虑 Infisical,这个具有出色开发者体验的开源 secret management 平台。它提供名为 Infisical Cloud 的托管服务,但也有一个 self-hosted 版本,你可以在自己的基础设施上部署,并支持端到端加密。
Secret sprawl 是一个全行业范围的问题,涉及无法有效管理分散在应用程序和基础设施中的 secret 所带来的挑战。这些挑战包括难以知道 secret 位于何处、无法及时快速地吊销和轮换它们,更不用说不了解每个 secret 的完整经过;其结果就是不良的 secrets hygiene。
也就是说,通过采用一个名为 secret manager 的专用工具,例如 Infisical,你可以在一个统一的位置管理你的 secret,并最终防止 secret sprawl。
- 原文链接: infisical.com/blog/what-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码