Azure 应用服务提供平台即服务(PaaS)环境,可用于生成、部署和缩放 Web 应用、移动应用后端、RESTful API 和函数应用。 部署此服务时,请务必遵循安全最佳做法来保护应用程序、数据和基础结构。
本文提供有关如何最好地保护 Azure 应用服务部署的指导。
Azure 应用服务积极保护并强化其平台组件,包括 Azure 虚拟机(VM)、存储、网络连接、Web 框架以及管理和集成功能。 应用服务会进行持续、严格的合规性检查,以确保:
- 每个应用与其他 Azure 应用和资源隔离。
- VM 和运行时软件的定期更新 可解决新发现的漏洞。
- 应用和其他 Azure 资源(例如 Azure SQL 数据库 )之间的机密和连接字符串的通信仅在 Azure 中发生,而不会跨越任何网络边界。 存储的机密始终加密。
- 通过应用服务连接功能(如 混合连接 )的所有通信均已加密。
- 通过 Azure PowerShell、Azure CLI、Azure SDK 和 REST API 等远程管理工具进行的所有连接均已加密。
- 持续威胁管理可保护基础结构和平台免受恶意软件、分布式拒绝服务(DDoS)和中间人攻击和其他威胁。
网络安全
应用服务支持许多网络安全功能来锁定应用程序并防止未经授权的访问。
配置专用终结点:通过使用 Azure 专用链接将流量通过虚拟网络路由到您的应用服务,确保您专用网络中客户端的安全连接,从而消除公共 Internet 的暴露。 请参阅 为 Azure 应用服务使用专用终结点。
实现虚拟网络集成:通过使应用能够访问 Azure 虚拟网络中的或通过 Azure 虚拟网络中的资源来保护出站流量,同时保持与公共 Internet 的隔离。 请参阅 将应用与 Azure 虚拟网络集成。
配置 IP 访问限制:通过定义可访问应用程序的 IP 地址和子网允许列表来限制对应用的访问,从而阻止所有其他流量。 可以定义子网掩码定义的单个 IP 地址或范围,并通过 Windows 应用上的 web.config 文件配置动态 IP 限制。 请参阅 设置 Azure 应用服务访问限制。
设置服务终结点限制:使用服务终结点从虚拟网络中的特定子网锁定对应用的入站访问,这些终结点与 IP 访问限制结合使用以提供网络级筛选。 请参阅 Azure 应用服务访问限制。
使用 Web 应用程序防火墙:通过在应用服务前面实现具有 Web 应用程序防火墙功能的 Azure Front Door 或应用程序网关,增强对常见 Web 漏洞和攻击的保护。 请参阅 Azure 应用程序网关上的 Azure Web 应用程序防火墙。
标识和访问管理
正确管理标识和访问控制对于保护 Azure 应用服务部署免受未经授权的使用和潜在的凭据盗窃至关重要。
为传出请求启用托管标识:通过使用托管标识,从应用程序安全地向 Azure 服务进行身份验证,而无需在代码或配置中存储凭据,从而无需管理服务主体和连接字符串。 在 Microsoft Entra ID 中托管的标识为应用提供了一个自动管理的身份,用于在发出到其他 Azure 服务(例如 Azure SQL 数据库、Azure Key Vault 和 Azure 存储)的请求时使用。 应用服务支持系统分配的托管标识和用户分配的托管标识。 请参阅 使用应用服务和 Azure Functions 的托管标识。
配置身份验证和授权:实现应用服务身份验证/授权,以使用 Microsoft Entra ID 或其他标识提供者保护应用程序,从而防止未经授权的访问,而无需编写自定义身份验证代码。 内置身份验证模块在将 Web 请求传递给应用程序代码之前处理 Web 请求,并支持多个提供程序,包括Microsoft Entra ID、Microsoft 帐户。 请参阅 Azure 应用服务中的身份验证和授权。
为管理作实现基于角色的访问控制:通过向用户和服务主体分配最低所需的 Azure RBAC 权限,控制谁可以管理和配置应用服务资源(管理平面),并遵循最低特权原则。 这会控制对作的管理访问权限,例如创建应用、修改配置设置和管理部署-独立于应用程序级身份验证(简易身份验证)或应用到资源身份验证(托管标识)。 请参阅 Azure 内置角色。
实现代理身份验证:使用 Microsoft Entra ID 作为身份验证提供程序,代表用户委托对远程资源的访问。 应用服务应用可以执行委托登录到 Microsoft Graph 或远程应用服务 API 应用等服务。 有关端到端教程,请参阅 “在 Azure 应用服务中对用户进行身份验证并授权端到端”。
启用相互 TLS 身份验证:当应用程序需要验证客户端标识时,需要客户端证书才能增加安全性,尤其是对于 B2B 方案或内部应用程序。 请参阅 为 Azure 应用服务配置 TLS 相互身份验证。
数据保护
保护传输中的数据和静止状态的数据对于维护应用程序及其数据的机密性和完整性至关重要。
强制实施 HTTPS:通过启用仅 HTTPS 模式将所有 HTTP 流量重定向到 HTTPS,确保客户端和应用之间的所有通信都已加密。 默认情况下,应用服务强制从 HTTP 请求重定向到 HTTPS,并且应用的默认域名
<app_name>.chinacloudsites.cn已通过 HTTPS 访问。 请参阅 “配置常规设置”。配置 TLS 版本:通过将最低 TLS 版本配置为 1.2 或更高版本来使用新式 TLS 协议,并禁用过时不安全的协议,以防止潜在的漏洞。 应用服务支持 TLS 1.3(最新)、TLS 1.2(默认最小值)和 TLS 1.1/1.0(仅用于向后兼容性)。 为 Web 应用和 SCM 站点配置最低 TLS 版本。 请参阅 “配置常规设置”。
管理 TLS/SSL 证书:使用正确配置的 TLS/SSL 证书建立受信任的连接来保护自定义域。 应用服务支持多种证书类型:免费应用服务托管证书、应用服务证书、第三方证书和从 Azure Key Vault 导入的证书。 如果配置自定义域,请使用 TLS/SSL 证书保护该域,以便浏览器能够建立安全的 HTTPS 连接。 请参阅 在 Azure 应用服务中添加和管理 TLS/SSL 证书。
在 Key Vault 中存储机密:通过将机密存储在 Azure Key Vault 中并使用托管标识访问机密,而不是将它们存储在应用程序设置或代码中,来保护敏感的配置值,例如数据库凭据、API 令牌和私钥。 应用服务应用可以使用托管标识身份验证安全地访问 Key Vault。 请参阅 使用 Key Vault 引用于 Azure 应用服务和 Azure Functions。
加密应用程序设置:使用加密的应用设置和连接字符串,而不是将机密存储在代码或配置文件中。 应用服务在 Azure 中存储加密的这些值,并在应用启动时在应用进程内存中注入之前解密这些值,并定期轮换加密密钥。 使用编程语言的标准模式以环境变量的形式访问这些值。 请参阅 “配置应用设置”。
安全远程连接:访问远程资源时始终使用加密连接,即使后端资源允许未加密的连接也是如此。 对于 Azure SQL 数据库和 Azure 存储等 Azure 资源,连接会保留在 Azure 中,不会跨越网络边界。 对于虚拟网络资源,请使用虚拟网络与点到站点 VPN 的集成。 对于本地资源,请使用支持 TLS 1.2 的混合连接,或通过站点到站点 VPN 进行虚拟网络集成。 确保后端 Azure 服务仅允许来自应用的尽可能少的 IP 地址集。 请参阅查找外部 IP。
日志记录和监控
实施全面的日志记录和监视对于检测潜在安全威胁和排查 Azure 应用服务部署问题至关重要。
启用诊断日志记录:配置 Azure 应用服务诊断日志以跟踪应用程序错误、Web 服务器日志、失败的请求跟踪和详细的错误消息,以识别安全问题并解决问题。 请参阅 在 Azure 应用服务中为应用启用诊断日志记录。
与 Azure Monitor 集成:设置 Azure Monitor 以从应用服务收集和分析日志和指标,为安全事件和性能问题启用全面的监视和警报。 请参阅 Azure 应用服务中的“监视应用”。
配置 Application Insights:实现 Application Insights,以便通过实时监视和分析功能深入了解应用程序性能、使用模式和潜在安全问题。 请参阅 “监视 Azure 应用服务性能”。
设置安全警报:创建自定义警报,以通知异常使用模式、潜在的安全漏洞或服务中断,从而影响应用服务资源。 请参阅 使用 Azure Monitor 创建、查看和管理指标警报。
启用运行状况检查:配置运行状况检查以监视应用程序的作状态,并尽可能自动修正问题。 参见使用运行状况检查监视应用服务实例。
合规性和治理
建立适当的治理并确保符合相关标准对于 Azure 应用服务应用程序的安全作至关重要。
实现 Azure Policy:通过创建和分配用于审核和强制实施合规性要求的 Azure Policy 定义,为应用服务部署强制实施组织范围的安全标准。 请参阅 Azure 应用服务的 Azure Policy 法规符合性控制措施。
查看安全建议:使用 Microsoft Defender for Cloud 定期评估应用服务安全状况,以识别和修正安全漏洞和配置错误。 请参阅 “保护 Azure 应用服务 Web 应用和 API”。
进行安全评估:定期对应用服务应用程序执行安全评估和渗透测试,以确定潜在的漏洞和安全弱点。
维护法规符合性:根据行业和地区的适用法规要求配置应用服务部署,尤其是有关数据保护和隐私的法规要求。
实现安全的 DevOps 做法:建立安全 CI/CD 管道,以便将应用程序部署到应用服务,包括代码扫描、依赖项检查和自动化安全测试。
备份和恢复
实施可靠的备份和恢复机制对于确保 Azure 应用服务部署中的业务连续性和数据保护至关重要。
启用自动备份:为应用服务应用程序配置计划备份,以确保在意外删除、损坏或其他故障时恢复应用程序和数据。 请参阅 在 Azure 应用服务中备份和还原应用。
配置备份保留:根据业务需求和合规性需求为备份设置适当的保留期,确保关键数据在所需持续时间内保留。 请参阅 在 Azure 应用服务中备份和还原应用。
测试备份还原:定期测试备份还原过程,以确保备份有效,并在需要时成功还原,同时验证应用程序功能和数据完整性。 请参阅 从备份还原应用程序。
文档恢复过程:为恢复过程创建和维护全面的文档,确保在服务中断或灾难期间快速有效的响应。
特定于服务的安全性
Azure 应用服务具有应解决的独特安全注意事项,以确保 Web 应用程序的整体安全性。
禁用基本身份验证:禁用 FTP 和 SCM 终结点的基本用户名和密码身份验证,以支持基于 Microsoft Entra ID 的身份验证,这为基于 OAuth 2.0 令牌的身份验证提供了增强的安全性。 请参阅 “在 Azure 应用服务部署中禁用基本身份验证”。
保护 FTP/FTPS 部署:使用 FTP 进行部署时禁用 FTP 访问或强制实施仅 FTPS 模式,以防止以明文形式传输凭据和内容。 默认情况下,新应用设置为仅接受 FTPS。 请参阅 使用 FTP/S 将应用部署到 Azure 应用服务。
实现完整的网络隔离:使用应用服务环境在自己的 Azure 虚拟网络实例的专用应用服务环境中运行应用。 这产品提供完整的网络隔离,与共享基础设施相分离,同时包括专用的公共终结点,仅供内部访问的内部负载均衡器(ILB)选项,并且可以将 ILB 放置在 Web 应用程序防火墙后以实现企业级保护。 请参阅 Azure 应用服务环境简介。
使用 ILB 来保护 Web 应用程序防火墙 (WAF)。 WAF 为面向公众的应用程序提供企业级 URI 筛选、防止分布式拒绝服务 (DDoS) 攻击和 SQL 注入防护。