Key Vault 中机密管理的最佳做法

可以通过 Azure Key Vault 安全地将服务或应用程序凭据(例如密码、访问密钥)作为机密进行存储。 Key Vault 中的所有机密均已使用软件密钥进行加密。 使用 Key Vault 时,不再需要将安全信息存储在应用程序中。 无需将安全信息存储在应用程序中,因此也无需将此信息作为代码的一部分。

应存储在 Key Vault 中的机密的示例:

  • 客户端应用程序机密
  • 连接字符串
  • 密码
  • 访问密钥(Redis 缓存、事件中心、Cosmos DB)
  • SSH 密钥

任何其他敏感信息(如 IP 地址、服务名称和其他配置设置)和其他配置设置都应存储在 Azure 应用程序配置中,而不应存储在 Key Vault 中。

每个单独的 Key Vault 定义机密的安全边界。 建议为每个应用程序、每个区域、每个环境使用一个 Key Vault,以便为应用程序提供精细的机密隔离。

若要详细了解 Key Vault 的最佳做法,请参阅使用 Key Vault 的最佳做法

配置和存储

以机密值的形式存储访问数据库或服务所需的凭据信息。 对于用户名/密码等复合凭据,可将其存储为连接字符串或 JSON 对象。 管理所需的其他信息应存储在标记中,例如轮换配置。

有关机密的详细信息,请参阅关于 Azure Key Vault 机密

机密轮换

在整个应用程序生命周期中,机密通常作为环境变量或配置设置存储在应用程序内存中,这使得它们对不需要的公开操作非常敏感。 由于机密对泄露或公开非常敏感,因此经常轮换机密非常重要,至少每 60 天需轮换一次。

有关机密轮换过程详细信息,请参阅自动轮换使用两组身份验证凭据的资源的机密

访问和网络隔离

可以通过指定哪些 IP 地址有权访问来减少保管库的曝光。 将防火墙配置为仅允许应用程序和相关服务访问保管库中的机密,以削弱攻击者访问机密的能力。

有关网络安全的详细信息,请参阅配置 Azure Key Vault 网络设置

此外,应用程序应遵循最低特权访问原则,只能具有读取机密所需的访问权限。 可以使用访问策略或 Azure 基于角色的访问控制来控制对机密的访问。

有关 Azure Key Vault 中的访问控制的详细信息,请参阅:

服务限制和缓存

Key Vault 最初是根据 Azure Key Vault 服务限制中指定的限制创建的。 若要最大化吞吐率,建议采用以下两种最佳做法:

  • 在应用程序中缓存机密至少 8 小时。
  • 实现指数回退重试逻辑,以处理超出服务限制时的情况。

有关限制指南的详细信息,请参阅 Azure Key Vault 限制指南

监视

若要监视对机密的访问以及机密的生命周期,请启用 Key Vault 日志记录。 使用 Azure Monitor 在一个位置监视所有保管库中的所有机密活动。 或使用 Azure 事件网格监视机密生命周期,因为它可以与 Azure 逻辑应用和 Azure Functions 轻松集成。

有关详细信息,请参阅:

备份和清除保护

打开清除保护可防止恶意或意外删除机密。 在清除保护不可用的情况下,建议备份无法通过其他源重新创建的机密。

了解更多