保护机密的最佳做法

本文提供了保护秘密和降低未经授权访问风险的指导。 请遵循本指南,确保你不会在代码、GitHub仓库、日志或持续集成/持续部署(CI/CD)流水线中存储敏感信息,如凭证。 本文的指导来自各个服务的建议以及 Microsoft Cloud 安全基准测试(MCSB)。

本文与Microsoft的 零信任 安全模型保持一致,该模型需要显式验证、最低特权访问和违规假设。 有关强制实施Azure Policy的规范性安全控制,请参阅Microsoft Cloud安全基准 v2 - 特权访问MCSB v2 - 数据保护

机密发现和预防

在你保护秘密之前,你需要先了解它们的存在位置。 你还需要控制措施,防止暴露发生。

  • 进行审计以识别秘密:审计您的系统和应用,识别需要保护的敏感信息,如密码、API密钥、连接字符串及其他凭证。 定期审计有助于确保新机密被纳入考量,并妥善管理现有机密。 对动态生成的机密信息(如临时 OAuth 令牌)应以与长期机密信息同样严格的方式进行保护。

  • 避免硬编码秘密:将秘密直接嵌入代码或配置文件中会带来重大安全风险。 如果你的代码库被攻破,你的机密也会被泄露。 相反,使用环境变量或配置管理工具,防止源代码隐藏秘密。 这种做法最大限度地减少了意外暴露的风险,并简化了秘密更新。 将秘密检索集成到自动化部署流程中,并使用秘密注入模式,帮助防止日志或版本控制中意外暴露。 有关详细信息,请参阅保护应用程序机密的建议

  • 实施秘密扫描工具:定期扫描代码库中的内嵌秘密,以防止意外泄露。 GitHub机密扫描等工具可以自动检测并提醒存储库中的机密。 将这些工具集成到你的CI/CD流水线中,实现持续监控。 将扫描工具发现的任何秘密视为已被破坏。 立即撤销并更换,以维护安全态势的完整性。

保护存储和加密

保护机密需要安全存储机制和在所有阶段进行适当的加密。

  • 使用安全密钥存储:如 Azure 密钥保管库Azure 密钥保管库 Managed HSM 等服务提供强大的安全功能,包括访问控制、日志记录和自动轮换。 这种方法集中管理秘密,降低未经授权访问的风险。 对于高度敏感或关键的密钥,使用硬件安全模块(HSM)支持的密钥存储,以比软件为基础的密钥存储提供更强的保护。 对于客户管理的密钥场景,至少使用由 HSM 支持的 Azure 密钥保管库 高级层。 使用 Azure 密钥保管库 Managed HSM 以满足密钥主权要求。 有关Azure密钥管理产品/服务和要选择的指南的概述,请参阅Azure中的密钥管理

  • 加密静态和传输中的机密信息Azure 密钥保管库通过信封加密安全地存储机密信息,其中数据加密密钥由密钥加密密钥加密,从而提供额外的一层安全保护。 使用安全通信协议,如HTTPS,对应用与密钥库之间的传输数据进行加密。 在 Azure 中,静态加密通过使用 AES 256 加密在各类服务中实现。 传输中的数据通过TLS和MACsec进行保护。 有关更多信息,请参阅 静态和传输中的加密

  • 实现网络隔离:配置 防火墙和网络安全组 以限制对密钥保管库的访问。 只允许可信的应用程序和服务访问您的秘密。 这种方法最大限度地减少攻击面,帮助防止未经授权的访问。 考虑使用多个密钥库为不同组件创建隔离边界。 如果某个组件被攻破,该组件无法控制其他秘密或整个工作负载。

访问控制和标识

管理谁和可以访问机密的内容对于维护安全性至关重要。

  • 使用托管身份:Azure中的托管身份为应用程序提供了一种安全的方式,无需将凭证存储在代码中,从而向Azure服务进行身份验证。 启用 Azure 资源的托管身份,以安全访问 Azure 密钥保管库 及其他服务,减少手动处理秘密的需求。 这种方法最大限度地减少了创建密钥的需要,并且由于平台会管理凭证,还缩小了潜在安全漏洞的攻击面。

  • 应用精细访问控制:通过对机密应用精细访问控制,遵循最低权限原则。 使用Azure基于角色的访问控制(Azure RBAC),确保只有授权实体有权访问特定的秘密。 请定期查看和更新访问权限,以防止未经授权的访问。 实现用户、管理员和审计员等不同角色来管理对秘密的访问。 这种做法有助于确保只有可信身份获得相应级别的权限。 更多信息请参见 Azure 密钥保管库 RBAC 指南

机密生命周期管理

机密需要在整个生命周期内持续管理,从创建到停用。

  • 定期轮换机密:机密容易受到一段时间内的泄漏或暴露。 定期更换你的秘密,以降低未经授权访问的风险。 你可以在 Azure 密钥保管库 中轮换机密,但仅适用于某些机密。 对于无法自动轮换的秘密,建立手动轮换流程,并确保它们在不再使用时被清除。 自动化秘密轮换,并在秘密管理中加入冗余,确保轮换不干扰服务可用性。 在代码中实现重试逻辑和并发访问模式,帮助减少轮换窗口内的问题。

  • 安全分发秘密:分发秘密时,要在组织内外安全共享。 使用设计用于安全共享的工具,并在灾难恢复计划中包含秘密恢复程序。 如果密钥已失陷或泄露,请立即重新生成。 每个消费者使用不同的密钥,而不是共享密钥,即使用户的访问模式相似。 这种做法简化了密钥管理和吊销工作,确保可以撤销泄露的密钥,而不影响其他使用者。

监视和日志记录

持续监视可检测可疑活动并支持合规性要求。

  • 监视和记录访问:为机密管理系统启用日志记录和监视,以跟踪访问和使用情况。 使用 密钥保管库 日志Azure MonitorAzure 事件网格 来监控所有与秘密相关的活动。 监控可以让你了解谁访问了你的秘密,并帮助发现可疑行为或潜在的安全事件。 维护详细的审计记录,以检查和验证对机密的访问,有助于防止身份盗窃、避免拒证并减少不必要的暴露。

面向具体服务的机密处理指南

各个服务可能具有保护机密的其他最佳做法和指导方针。 以下是一些示例:

后续步骤

尽量减少安全风险是一种共同责任。 主动采取措施保护你的工作负载。 有关详细信息,请参阅云中责任分担