在应用安全的背景下,秘密是任何可以在身份验证和授权过程中证明持有者是谁以及持有者声称是什么的信息。 如果恶意行为者获得了机密信息,他们就会意外地访问您的系统,并将其用于各种目的,包括窃取公司机密和客户信息,甚至扣留您的数据以索要赎金。
一个典型的例子是允许应用访问其数据库的用户名和密码,但秘密也可以是 API 密钥、凭据、证书和私钥以及其他类型的信息。 由于秘密用于控制对组织资产的访问,因此安全地存储和保护它们对于降低组织受到损害的风险至关重要。
机密管理是组织用于以下操作的过程:
当组织从单一架构转向微服务架构时,独立的应用和基础设施组件的数量(每个组件都有自己的凭证)会增加,这意味着需要管理更多的秘密。
让我们仔细看看安全存储机密的两种选择:
保险库方法涉及安装第三方秘密管理工具。 保险库解决方案对每个秘密进行加密,以防止未经授权的用户访问。 该保险库公开一个 API,让用户根据既定的策略访问秘密。 当 API 用户通过身份验证时,他们只能访问他们被授权的秘密。
缺点:
优点:
市场上有许多工具可供开发人员用来存储和管理加密机密。 有关如何使用集中自动化机密管理工具的示例,请阅读我们的博客“使用 HashiCorp Vault 保护 NGINX 中的 SSL 私钥”。
另一种方法是使用云提供商提供秘密管理服务。 一个好处是,秘密管理工具通常与其他云服务(例如托管数据库)紧密集成。 云提供商服务可能还提供自动轮换等功能,但还需要未来的研究来了解该选项是否会导致停机。
缺点:
优点:
必须谨慎管理秘密,以防止在解锁和访问时对应用造成中断。 最佳做法是永远不要将机密放入源代码控制系统中。 如果在团队或个人更新代码或应用时机密被意外访问或泄露,那么将机密存储在那里可能会给组织带来灾难。 因此,如果秘密被纳入源代码控制,即使时间很短,也必须被视为已被泄露。 必须从存储库中删除敏感数据并将其从源代码控制系统的历史记录中清除。