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 轻松集成。
有关详细信息,请参阅:
备份和清除保护
打开清除保护可防止恶意或意外删除机密。 在清除保护不可用的情况下,建议备份无法通过其他源重新创建的机密。