你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 应用服务中的安全性

本文介绍了 Azure 应用服务 如何帮助保护 Web 应用、移动应用后端、API 应用或 函数应用。 本文还介绍了如何使用内置应用服务功能进一步帮助保护应用。

Azure 应用服务积极保护并强化其平台组件,包括 Azure 虚拟机(VM)、存储、网络连接、Web 框架以及管理和集成功能。 应用服务会进行持续、严格的合规性检查,以确保:

  • 每个应用与其他 Azure 应用和资源隔离
  • VM 和运行时软件的定期更新 可解决新发现的漏洞。
  • 应用和其他 Azure 资源(例如 Azure SQL 数据库 )之间的机密和连接字符串的通信仅在 Azure 中发生,而不会跨越任何网络边界。 存储的机密始终加密。
  • 通过应用服务连接功能(如 混合连接 )的所有通信均已加密。
  • 通过 Azure PowerShell、Azure CLI、Azure SDK 和 REST API 等远程管理工具进行的所有连接均已加密。
  • 持续威胁管理可保护基础结构和平台免受恶意软件、分布式拒绝服务(DDoS)和中间人攻击和其他威胁。

有关 Azure 中的基础结构和平台安全性的详细信息,请参阅 Azure 信任中心

以下部分介绍了帮助保护应用服务应用免受威胁的更多方法。

HTTPS 和证书

可以使用应用服务通过 HTTPS 保护应用。 创建应用后,可通过 HTTPS 访问其默认域名 <app_name>.azurewebsites.net 。 如果 为应用配置自定义域,请使用 TLS/SSL 证书帮助保护该 域,以便客户端浏览器能够与自定义域建立安全的 HTTPS 连接。

应用服务支持以下类型的证书:

  • 免费应用服务托管证书
  • 应用服务证书
  • 第三方证书
  • 从 Azure Key Vault 导入的证书

有关详细信息,请参阅 在 Azure 应用服务中添加和管理 TLS/SSL 证书

不安全的协议(HTTP、TLS 1.0、FTP)

默认情况下,应用服务强制从 HTTP 请求重定向到 HTTPS。 在请求到达应用程序代码之前,会重定向不安全的请求。 若要更改此行为,请参阅 “配置常规设置”。

Azure 应用服务支持以下 传输层安全性(TLS) 版本来传入您的 Web 应用的请求:

  • TLS 1.3:最新版本和最安全的版本。
  • TLS 1.2:新 Web 应用的默认最低 TLS 版本。
  • TLS 1.1 和 TLS 1.0:支持向后兼容性的版本,但不受行业标准(如 支付卡行业数据安全标准(PCI DSS)保护。

可以为 Web 应用及其源代码管理管理器(SCM)站点的传入请求配置最低 TLS 版本。 默认情况下,最低设置为 TLS 1.2。 若要允许不同的 TLS 版本,请参阅 “配置常规设置”。

应用服务支持 FTP 和 FTPS 来部署应用文件。 默认情况下,新应用设置为仅接受 FTPS。 若要提高安全性,请尽可能使用 FTPS 而不是 FTP。 如果不使用 FTP/S,则应 禁用它。 有关详细信息,请参阅 使用 FTP/S 将应用部署到 Azure 应用服务

静态 IP 限制

默认情况下,应用服务应用接受来自所有 Internet IP 地址的请求,但你可以限制对一部分 IP 地址的访问。 你可以使用 Windows 上的应用服务来定义允许访问应用的 IP 地址列表。 允许列表可包括单个 IP 地址或由子网掩码定义的 IP 地址范围。 有关详细信息,请参阅设置 Azure 应用服务访问限制

对于 Windows 上的应用服务,还可以通过配置 web.config 文件来动态限制 IP 地址。 有关详细信息,请参阅 动态 IP 安全性 <dynamicIpSecurity>

客户端身份验证和授权

应用服务提供用户或客户端应用的内置身份验证和授权。 可以实现自己的身份验证和授权解决方案,或者允许应用服务为你处理它。

启用后,内置身份验证和授权可以使用很少或没有应用程序代码登录用户和客户端应用。 身份验证和授权模块在将 Web 请求传递给应用程序代码之前处理 Web 请求,并拒绝未经授权的请求。

应用服务身份验证和授权支持多个验证提供程序,包括 Microsoft Entra ID、Microsoft 帐户、Facebook、Google 和 X。有关详细信息,请参阅 Azure 应用服务中的身份验证和授权

服务到服务身份验证

针对后端服务进行身份验证时,应用服务提供两种机制,具体取决于你的需求:

远程资源连接

应用可能需要访问 Azure 资源本地资源Azure 虚拟网络中的资源。 应用服务为每个方案提供安全连接方法。 还应遵守安全最佳做法,例如,即使后端资源允许未加密的连接,也始终使用加密连接。

此外,请确保后端 Azure 服务允许尽可能小的 IP 地址集。 若要查找应用的出站 IP 地址,请参阅 “查找出站 IP”。

Azure 资源

当应用连接到 Azure 资源(如 Azure SQL 数据库Azure 存储)时,连接会保留在 Azure 中,并且不会跨越任何网络边界。 连接在 Azure 中使用共享网络,因此请确保它已加密。

如果应用托管在 应用服务环境中,则应使用 虚拟网络服务终结点连接到受支持的 Azure 服务。

Azure 虚拟网络中的资源

应用可以使用点到站点 VPN 通过虚拟网络集成访问 Azure 虚拟网络中的资源。 然后,应用可以使用其专用 IP 地址访问虚拟网络中的资源。 点对站点连接仍然通过 Azure 中的共享网络。

若要完全隔离资源连接与 Azure 中的共享网络,请在 应用服务环境中创建应用。 由于应用服务环境始终部署到专用虚拟网络,因此应用与虚拟网络中的其他资源之间的连接完全隔离。 有关应用服务环境中网络安全的详细信息,请参阅 网络隔离

本地资源

可以通过以下方式安全地访问本地资源,例如数据库:

  • 混合连接通过传输控制协议(TCP)隧道与远程资源建立点到点连接,该隧道使用 TLS 1.2 和共享访问签名密钥。

  • 虚拟网络与站点到站点 VPN 集成,或者应用服务环境与 站点到站点 VPN 集成。 这些方法将应用的虚拟网络连接到本地网络,如 Azure 虚拟网络中的资源中所述,但虚拟网络通过 站点到站点 VPN 连接到本地网络。 在这些网络拓扑中,应用可以连接到本地资源,就像它连接到虚拟网络中的其他资源一样。

应用程序密钥

不要在代码或配置文件中存储应用程序机密,如数据库凭据、API 令牌和私钥。 使用您代码语言的标准模式,将它们作为环境变量进行访问。 在应用服务中,通过 应用设置 定义环境变量,尤其是对于 .NET 应用程序,通过连接字符串定义 环境变量

应用设置和连接字符串存储在 Azure 中,并在应用启动时将其注入应用进程内存之前解密。 加密密钥会定期轮换。

或者,可以将应用服务应用与 Azure Key Vault 集成,以实现高级密钥管理。 应用服务应用 可以使用托管标识来安全地访问密钥保管库 ,以获取所需的机密。

网络隔离

除独立定价层外,所有应用服务定价层都在 Azure 共享网络基础结构上运行应用。 例如,公共 IP 地址和前端负载均衡器与其他租户共享。

隔离层通过在自己的 Azure 虚拟网络实例中的专用应用服务环境中运行应用来提供完整的网络隔离。 通过使用网络隔离,可以:

  • 通过具有专用前端的专用公共终结点为应用提供服务。
  • 使用仅允许从 Azure 虚拟网络内部进行访问的内部负载均衡器(ILB)为内部应用提供服务。 ILB 有一个来自专用子网的 IP 地址,它可以让应用与 Internet 完全隔离。
  • 在 Web 应用程序防火墙 (WAF) 后面使用 ILB。 WAF 为面向公众的应用程序提供企业级 URI 筛选、防止分布式拒绝服务 (DDoS) 攻击和 SQL 注入防护。

DDoS 防护

对于 Web 工作负载,请使用 WAFAzure DDoS 防护 来防范新兴的 DDoS 攻击。 另一种选择是使用 WAF 部署 Azure Front Door ,以便 针对网络级 DDoS 攻击提供平台级保护