Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文帮助你保护秘密,降低未经授权访问的风险。 请遵循本指南,确保你不会在代码、GitHub仓库、日志或持续集成/持续部署(CI/CD)流水线中存储敏感信息,如凭证。 本文的指导来自各个服务的建议以及 Microsoft Cloud 安全基准测试(MCSB)。
本文与Microsoft的 零信任 安全模型保持一致,该模型需要显式验证、最低特权访问和违规假设。 关于包含Azure Policy强制执行的规范性安全控制,请参见Microsoft Cloud安全基准v2:特权访问和MCSB v2:数据保护。
机密发现和预防
在你保护秘密之前,你需要先了解它们的存在位置。 你还需要控制措施,防止暴露发生。
进行审计以识别秘密:审计您的系统和应用,识别需要保护的敏感信息,如密码、API密钥、连接字符串及其他凭证。 定期审计有助于确保库存中包含新的秘密,并妥善管理现有秘密。 对动态生成的机密信息(如临时 OAuth 令牌)应以与长期机密信息同样严格的方式进行保护。
避免硬编码秘密:将秘密直接嵌入代码或配置文件中会带来重大安全风险。 如果攻击者攻破了你的代码库,他们也会泄露你的秘密。 相反,使用环境变量或配置管理工具,防止源代码隐藏秘密。 这种做法最大限度地减少了意外暴露的风险,并简化了秘密更新。 将秘密检索集成到自动化部署流程中,并使用秘密注入模式,帮助防止日志或版本控制中意外暴露。
实施秘密扫描工具:定期扫描代码库中的内嵌秘密,以防止意外泄露。 GitHub机密扫描等工具可以自动检测并提醒存储库中的机密。 将这些工具集成到你的CI/CD流水线中,实现持续监控。 将扫描工具发现的任何秘密视为已被破坏。 立即撤销并更换,以维护安全态势的完整性。
保护存储和加密
保护机密需要安全存储机制和在所有阶段进行适当的加密。
使用安全的密钥存储:例如 Azure 密钥保管库 和 Azure 密钥保管库 Managed HSM 等服务可提供安全功能,包括访问控制、日志记录和自动轮换。 这种方法集中管理秘密,降低未经授权访问的风险。 对于高度敏感或关键的密钥,使用硬件安全模块(HSM)支持的密钥存储,以比软件为基础的密钥存储提供更强的保护。 对于客户管理的密钥场景,至少使用Azure 密钥保管库 Premium层,该方案由HSM支持。 使用 Azure 密钥保管库 Managed HSM 以满足密钥主权要求。 有关Azure密钥管理产品/服务和要选择的指南的概述,请参阅Azure中的密钥管理。
对静态和传输中的机密进行加密:Azure 密钥保管库通过信封加密安全地存储机密,其中密钥加密密钥会加密数据加密密钥,从而提供额外一层安全保护。 使用安全通信协议,如HTTPS,对应用与密钥库之间的传输数据进行加密。 在Azure中,各种服务通过AES 256加密实现静态加密。 TLS和MACsec保护传输中的数据安全。 有关更多信息,请参阅 静态和传输中的加密。
实现网络隔离:配置 防火墙和网络安全组 以限制对密钥保管库的访问。 只允许可信的应用程序和服务访问您的秘密。 这种方法最大限度地减少攻击面,帮助防止未经授权的访问。 考虑使用多个密钥库为不同组件创建隔离边界。 如果攻击者攻破了一个组件,该组件就无法控制其他秘密或整个工作负载。
访问控制和标识
管理谁和可以访问机密的内容对于维护安全性至关重要。
使用托管身份:Azure中的托管身份为应用程序提供了一种安全的方式,无需将凭证存储在代码中,从而向Azure服务进行身份验证。 启用 Azure 资源的托管身份,以安全访问 Azure 密钥保管库 及其他服务,减少手动处理秘密的需求。 这种方法最大限度地减少了创建密钥的需要,并且由于平台会管理凭证,还缩小了潜在安全漏洞的攻击面。
应用精细访问控制:通过对机密应用精细访问控制,遵循最低权限原则。 使用Azure基于角色的访问控制(Azure RBAC),确保只有授权实体有权访问特定的秘密。 请定期查看和更新访问权限,以防止未经授权的访问。 实现用户、管理员和审计员等不同角色来管理对秘密的访问。 这种做法有助于确保只有可信身份获得相应级别的权限。 更多信息请参见 Azure 密钥保管库 RBAC 指南。
机密生命周期管理
机密需要在整个生命周期内持续管理,从创建到停用。
定期轮换机密:机密容易受到一段时间内的泄漏或暴露。 定期更换你的秘密,以降低未经授权访问的风险。 你可以在 Azure 密钥保管库 中轮换机密,但仅适用于某些机密。 对于无法自动轮换的秘密,建立手动轮换流程,并在不再使用时清除它们。 自动化秘密轮换,并在秘密管理中加入冗余,确保轮换不会影响服务可用性。 在代码中实现重试逻辑和并发访问模式,帮助减少轮换窗口中的问题。
安全分发秘密:分发秘密时,要在组织内外安全共享。 使用设计用于安全共享的工具,并在灾难恢复计划中包含秘密恢复程序。 如果攻击者攻破或泄露了某个密钥,请立即重新生成该密钥。 每个消费者使用不同的密钥,而不是共享密钥,即使用户的访问模式相似。 这种做法简化了密钥管理和撤销,因此你可以在不影响其他消费者的情况下撤销被泄露的密钥。
监视和日志记录
持续监控能够检测可疑活动并支持合规要求。
- 监视和记录访问:为机密管理系统启用日志记录和监视,以跟踪访问和使用情况。 使用 密钥保管库 日志、Azure Monitor 或 Azure 事件网格 来监控所有与秘密相关的活动。 监控可以让你了解谁访问了你的秘密,并帮助发现可疑行为或潜在的安全事件。 维护详细的审计记录,以检查和验证对机密的访问,有助于防止身份盗窃、避免拒证并减少不必要的暴露。
面向具体服务的机密处理指南
各个服务可能有更多最佳实践和保护秘密的指导。 示例包括:
- API 管理:在 Azure API 管理 策略中使用命名值,并与 密钥保管库 集成
- 应用服务:将 密钥保管库 引用用于应用服务和 Azure Functions
- 应用网关:通过使用 Azure 门户配置应用网关的 TLS 终止
- 自动化:在 Azure 自动化 中管理凭据
- Azure 应用程序配置:在 ASP.NET Core 应用中使用 密钥保管库 引用
- Azure 机器人服务:为静态数据加密的Azure 机器人服务
- Azure 容器应用:在 Azure 容器应用中管理机密
- Azure Cosmos DB:为 Azure Cosmos DB 配置客户管理的密钥
- Azure Database for PostgreSQL - Flexible Server:使用客户管理的密钥进行数据加密
- Azure 事件中心:配置客户管理的密钥,用于加密静态Azure 事件中心数据
- Azure Front Door: Azure Front Door secrets
- Azure 信息保护:密钥保管库 对 Azure 信息保护 的支持
- Azure Kubernetes 服务 (AKS):CSI 机密存储
- Azure 机器学习:在 Azure 机器学习 作业中使用身份验证凭据机密
- Azure 托管应用程序:部署 Azure 托管应用程序 时访问 密钥保管库 中的机密
- Azure SignalR 服务:URL 模板设置中的 密钥保管库 机密引用
- Azure Stack Hub:更换密钥
- Azure Web PubSub:添加自定义证书
- 备份:将保管库配置为使用客户管理的密钥进行加密
- 数据工厂:在 Azure 密钥保管库 中存储凭据
- ExpressRoute: 为ExpressRoute Direct配置MACsec加密
- 函数:使用 密钥保管库 引用用于 App Service 和 Azure Functions
- 密钥保管库:关于 Azure 密钥保管库 机密
- 逻辑应用: 逻辑应用标准应用设置
- Service Fabric:Service Fabric 应用程序的 KeyVaultReference 支持
- SQL Server on Azure VMs:为 Azure VMs 上的 SQL Server 配置 Azure 密钥保管库 集成
- 存储:授权访问 Azure 存储 数据
后续步骤
尽量减少安全风险是一种共同责任。 主动采取措施保护你的工作负载。 有关详细信息,请参阅云中责任分担。
- 请参阅 Azure 安全最佳做法和模式,了解在使用 Azure 设计、部署和管理云解决方案时要使用的更多安全最佳做法。
- 请查看 Microsoft Cloud Security Benchmark v2:特权访问控制,以获取全面的秘密、特权访问指导和 Azure Policy 映射。
- 了解Microsoft安全未来计划,这是Microsoft内部保护身份和秘密的安全最佳实践,Microsoft也向组织推荐。
- 浏览零信任标识部署,以获取有关实施标识和访问管理的零信任原则的指导。