NGINX.COM
Web Server Load Balancing with NGINX Plus

在应用安全领域, 密钥是指在身份验证和授权过程中有关证明持有者是谁及其所声明内容的任何信息。如果攻击者获取了密钥,他们便可非法访问您的系统,以达到各种目的,包括窃取公司机密和客户信息,甚至挟持您的数据勒索赎金。

允许应用访问数据库的用户名和密码就是典型的密钥,但密钥也可以是 API 密钥、凭证、证书、私钥及其他类型的信息。由于密钥用于控制对企业资产的访问,因此为了降低企业遭到入侵的风险,安全地存储和保护密钥至关重要。

 

什么是密钥管理?

密钥管理是企业用于执行以下操作的流程:

  • 确定敏感数据
  • 对数据进行分类
  • 标记数据
  • 安全存储数据
  • 分发密钥
  • 定期轮换(更换)密钥

企业从单体架构转向微服务架构时,独立应用和基础架构组件(每个组件都有自己的凭证)的数量会增加,这意味着需要管理更多密钥。

 

密钥存储方法

下面我们来详细了解一下安全存储密钥的两种方法:

Vault

Vault 方法需要安装一套第三方密钥管理工具。Vault 解决方案对每个密钥进行加密,以防止未经授权的用户访问。Vault 提供一个 API,允许用户根据既定策略访问密钥。当 API 的用户使用它进行身份验证时,他们只能访问已获得授权的密钥。

缺点:

  • 必须自行管理解决方案和凭证
  • 需要围绕它构建基础架构,否则团队很难独立使用

优点:

  • 行业熟悉度(大多数开发人员都知道如何使用此类工具)
  • 可轻松集成 Vault 厂商提供的其他工具
  • 有些 Vault 是免费的

市场上有很多工具可供开发人员用来存储和管理加密密钥。有关如何使用集中自动化密钥管理工具的示例,请阅读我们的博客“使用 HashiCorp Vault 保护 NGINX 中的 SSL 私钥”。

云提供商

另一种方法是使用云提供商,将密钥管理作为服务使用。这种方法的一大优势是,密钥管理工具通常能够紧密集成其他云服务,如托管数据库。云提供商服务还可以提供自动轮换等功能,但需要进一步确认是否会导致停机。

缺点:

  • 通常不是免费的

优点:

  • 访问和用户界面由云提供商进行设置和管理
  • 可很好地与云提供商的其他服务相集成
  • 可以使用基础架构作为代码工具进行管理

 

不应存储密钥的位置

必须谨慎管理密钥,以防止在解锁和访问密钥时导致应用中断。最佳实践是切勿将密钥签入源控制系统。在此处存储密钥将使企业面临潜在灾难,当团队或个人更新代码或应用时,密钥有可能被意外访问或泄露。因此,如果曾将密钥签入源控制系统,即便是短暂签入,也必须视为密钥已泄露。敏感数据必须从仓库中删除,并从源控制系统的历史记录中清除。

Tags

No More Tags to display