Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
本文提供了保护秘密和降低未经授权访问风险的指导。 请遵循本指南,确保你不会在代码、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 Monitor 或 Azure 事件网格 来监控所有与秘密相关的活动。 监控可以让你了解谁访问了你的秘密,并帮助发现可疑行为或潜在的安全事件。 维护详细的审计记录,以检查和验证对机密的访问,有助于防止身份盗窃、避免拒证并减少不必要的暴露。
面向具体服务的机密处理指南
各个服务可能具有保护机密的其他最佳做法和指导方针。 以下是一些示例:
- API 管理:在具有 密钥保管库 Integration 的 Azure API 管理 策略中使用命名值
- 应用服务:将 密钥保管库 引用用于应用服务和 Azure Functions
- 应用程序网关:使用 Azure 门户配置具有 TLS 终止的应用程序网关
- 自动化:在 Azure 自动化 中管理凭据
- Azure 应用程序配置:Tutorial:在 ASP.NET Core应用中使用密钥保管库引用
- Azure 机器人服务:为静态数据加密的Azure 机器人服务
- Azure 容器应用:在 Azure 容器应用中管理机密
- Azure Cosmos DB:为Azure Cosmos DB帐户配置客户管理的密钥
- Azure Database for PostgreSQL - 灵活服务器:Azure Database for PostgreSQL - 使用客户管理的密钥进行灵活服务器数据加密
- Azure 事件中心:配置客户管理的密钥,用于加密静态Azure 事件中心数据
- Azure Front Door:Azure Front Door Secrets
- Azure 信息保护:Azure 信息保护密钥库支持详情
- Azure Kubernetes 服务 (AKS):CSI 机密存储
- Azure 托管应用程序:在部署 Azure 托管应用程序 时访问 密钥保管库 机密
- Azure OpenAI:使用 密钥保管库 开发 Azure AI 服务应用程序
- Azure Purview:用于 Microsoft Purview 中源身份验证的凭据
- Azure SignalR 服务:URL 模板设置中的 密钥保管库 机密引用
- Azure Stack Hub:更换密钥
- Azure Web PubSub:添加自定义证书
- 备份:配置保管库以使用客户管理的密钥进行加密
- 认知服务:使用 密钥保管库 开发 Azure 认知服务应用程序
- 数据工厂:在 Azure 密钥保管库 中存储凭据
- ExpressRoute:为 ExpressRoute Direct 配置 MACsec 加密
- 函数:使用 密钥保管库 引用用于 App Service 和 Azure Functions
- 密钥保管库:关于 Azure 密钥保管库 机密
- 逻辑应用:逻辑应用标准应用设置
- 机器学习服务:在Azure 机器学习作业中使用身份验证凭据机密
- Service Fabric:Service Fabric 应用程序的 KeyVaultReference 支持
- SQL IaaS:为在 Azure 虚拟机(资源管理器)上的 SQL Server 配置 Azure 密钥保管库 集成
- 存储:授权访问 Azure 存储 数据
后续步骤
尽量减少安全风险是一种共同责任。 主动采取措施保护你的工作负载。 有关详细信息,请参阅云中责任分担。
- 请参阅 Azure 安全最佳做法和模式,了解在使用 Azure 设计、部署和管理云解决方案时要使用的更多安全最佳做法。
- 查看 Microsoft Cloud 安全基准 v2 - 特权访问 控制,以便于了解具有 Azure Policy 映射的综合机密和特权访问指南。
- 了解 Microsoft 安全未来计划(SFI),这是一套 Microsoft 内部用于保护身份和机密的安全最佳实践,我们也推荐给客户。
- 浏览零信任标识部署,以获取有关实施标识和访问管理的零信任原则的指导。