Azure 应用服务安全基线

此安全基线将 Microsoft 云安全基准版本 1.0 中的指南应用于App 服务。 Microsoft Cloud 安全基准提供有关如何在 Azure 上保护云解决方案的建议。 内容按 Microsoft 云安全基准定义的安全控制以及适用于App 服务的相关指南进行分组。

可以使用 Microsoft Defender for Cloud 监视此安全基线及其建议。 Azure Policy定义将在 Microsoft Defender for Cloud 门户页的“合规性”部分列出。

当功能具有相关的Azure Policy定义时,这些定义将列在此基线中,以帮助你衡量对 Microsoft 云安全基准控制和建议的合规性。 某些建议可能需要付费Microsoft Defender计划来实现某些安全方案。

注意

不适用于App 服务的功能已被排除。 若要查看App 服务如何完全映射到 Microsoft 云安全基准,请参阅完整的App 服务安全基线映射文件

安全配置文件

安全配置文件汇总了App 服务的高影响行为,这可能会导致安全注意事项增加。

服务行为属性
产品类别 计算、Web
客户可以访问主机/OS 无访问权限
可以将服务部署到客户的虚拟网络中 True
存储静态客户内容 True

网络安全性

有关详细信息,请参阅 Microsoft 云安全基准:网络安全

NS-1:建立网络分段边界

功能

虚拟网络集成

说明:服务支持部署到客户的专用虚拟网络 (VNet) 。 了解详细信息

支持 默认启用 配置责任
True False 客户

功能说明:虚拟网络集成在使用App 服务环境时默认配置,但在使用公共多租户产品/服务时必须手动配置。

配置指南:确保针对 Internet 地址的出站通信具有稳定的 IP:可以使用虚拟网络集成功能提供稳定的出站 IP。 这允许接收方根据需要基于 IP 列出允许列表。

在隔离定价层(也称为 应用服务环境 (ASE) )中使用App 服务时,可以直接部署到 Azure 虚拟网络中的子网中。 使用网络安全组来保护 Azure 应用服务环境,方法是阻止针对虚拟网络中资源的入站和出站流量,或限制对应用服务环境中应用的访问。

在多租户App 服务 (不在独立层) 的应用中,允许应用使用虚拟网络集成功能通过虚拟网络访问资源。 然后,可以使用网络安全组来控制来自应用的出站流量。 使用 虚拟网络 集成时,可以启用“全部路由”配置,使所有出站流量受集成子网上的网络安全组和用户定义的路由的约束。 此功能还可用于阻止从应用发送到公共地址的出站流量。 虚拟网络集成不能用于提供对应用的入站访问。

对于与 Azure 服务的通信,通常无需依赖于 IP 地址,应改用服务终结点等机制。

注意:对于 App 服务 环境,默认情况下,网络安全组包含优先级最低的隐式拒绝规则,并要求添加显式允许规则。 根据最小特权网络方法为网络安全组添加允许规则。 用于承载应用服务环境的底层虚拟机不能直接访问,因为它们位于 Microsoft 管理的订阅中。

在同一区域中对虚拟网络使用虚拟网络集成功能时,请使用网络安全组和包含用户定义的路由的路由表。 可以将用户定义的路由置于集成子网中,以便按预期方式发送出站流量。

参考将应用与 Azure 虚拟网络集成

网络安全组支持

说明:服务网络流量遵循其子网上的网络安全组规则分配。 了解详细信息

支持 默认启用 配置责任
True True Microsoft

功能说明:网络安全组支持适用于使用 App 服务 环境的所有客户,但仅适用于使用公共多租户产品/服务的客户的 VNet 集成应用。

配置指南:无需其他配置,因为默认部署上已启用此功能。

参考应用服务环境网络

NS-2:使用网络控制保护云服务

功能

说明:用于筛选网络流量的服务本机 IP 筛选功能 (不与 NSG 或Azure 防火墙) 混淆。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:为 Azure Web 应用使用专用终结点,以允许位于专用网络的客户端通过专用链接安全地访问应用。 专用终结点使用 Azure VNet 地址空间的 IP 地址。 专用网络上客户端与 Web 应用之间的网络流量将通过 VNet 以及 Microsoft 主干网络上的专用链接,因此不会从公共 Internet 公开。

注意:专用终结点仅用于传入 Web 应用的流。 传出流将不使用此专用终结点。 可以通过 VNet 集成功能将传出流注入到你的网络中的另一个子网。 在App 服务流量接收端对服务使用专用终结点可避免 SNAT 发生,并提供稳定的出站 IP 范围。

其他指导:如果在存储在 Azure 容器注册表 (ACR) App 服务上运行容器,请确保通过专用网络拉取这些映像。 为此,请在 ACR 上配置存储这些映像的专用终结点,同时在 Web 应用程序上设置“WEBSITE_PULL_IMAGE_OVER_VNET”应用程序设置。

参考对 Azure Web 应用使用专用终结点

禁用公用网络访问

说明:服务支持通过使用服务级别 IP ACL 筛选规则 (非 NSG 或Azure 防火墙) 或使用“禁用公用网络访问”切换开关来禁用公用网络访问。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:使用服务级别 IP ACL 筛选规则或专用终结点或通过在 ARM 中将 publicNetworkAccess 属性设置为禁用来禁用公用网络访问。

参考设置Azure 应用服务访问限制

NS-5:部署 DDOS 防护

NS-5 的其他指南

在托管应用服务的 Web 应用程序防火墙的虚拟网络上启用 DDOS 防护标准。 Azure 在其网络上提供 DDoS 基本保护,这可以通过智能 DDoS 标准功能进行改进,这些功能可了解正常流量模式并检测异常行为。 DDoS 标准适用于虚拟网络因此必须为应用前面的网络资源(例如应用程序网关或 NVA)配置它。

NS-6:部署 Web 应用程序防火墙

NS-6 的其他指南

避免应用程序绕过 WAF。 确保无法通过将访问锁定到仅 WAF 来绕过 WAF。 结合使用访问限制、服务终结点和专用终结点。

此外,还可以通过已启用 Azure 应用程序网关 或 Azure Front Door 的 Web 应用程序防火墙 (WAF) 路由流量来保护应用服务环境。

对于多租户产品/服务,请使用以下方法保护应用的入站流量:

  • 访问限制:控制入站访问的一系列允许或拒绝规则
  • 服务终结点:可以拒绝来自指定虚拟网络或子网外部的入站流量
  • 专用终结点:使用专用 IP 地址向虚拟网络公开应用。 在应用上启用专用终结点后,它将无法再访问 Internet

考虑实施 Azure 防火墙,跨订阅和虚拟网络中集中创建、实施和记录应用程序与网络连接策略。 Azure 防火墙对虚拟网络资源使用静态公共 IP 地址,使外部防火墙能够识别来自你的虚拟网络的流量。

身份管理

有关详细信息,请参阅 Microsoft 云安全基准:标识管理

IM-1:使用集中式标识和身份验证系统

功能

数据平面访问所需的 Azure AD 身份验证

说明:服务支持使用 Azure AD 身份验证进行数据平面访问。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:对于经过身份验证的 Web 应用程序,仅使用已知的已建立的标识提供者对用户访问进行身份验证和授权。 如果应用只能由自己组织的用户访问,或者用户都使用 Azure Active Directory (Azure AD) ,请将 Azure AD 配置为默认身份验证方法来控制数据平面访问。

参考Azure 应用服务和Azure Functions中的身份验证和授权

数据平面访问的本地身份验证方法

说明:数据平面访问支持的本地身份验证方法,例如本地用户名和密码。 了解详细信息

支持 默认启用 配置责任
True False 客户

功能说明:避免使用本地身份验证方法或帐户,应尽可能禁用这些方法或帐户。 请尽可能改用 Azure AD 进行身份验证。

配置指南:限制对数据平面访问使用本地身份验证方法。 改为使用 Azure Active Directory (Azure AD) 作为默认身份验证方法来控制数据平面访问。

参考Azure 应用服务和Azure Functions中的身份验证和授权

IM-3:安全且自动地管理应用程序标识

功能

托管标识

说明:数据平面操作支持使用托管标识进行身份验证。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:尽可能使用 Azure 托管标识而不是服务主体,这可以向支持 Azure Active Directory 的 Azure 服务和资源进行身份验证, (Azure AD) 身份验证。 托管标识凭据由平台完全托管、轮换和保护,避免了在源代码或配置文件中使用硬编码凭据。

将托管标识与 App 服务 配合使用的常见方案是访问其他 Azure PaaS 服务,例如Azure SQL数据库、Azure 存储或密钥保管库。

参考如何将托管标识用于App 服务和Azure Functions

服务主体

说明:数据平面支持使用服务主体进行身份验证。 了解详细信息

支持 默认启用 配置责任
True False 客户

其他指导:尽管服务支持服务主体作为身份验证模式,但我们建议尽可能改用托管标识。

Microsoft Defender for Cloud 监视

Azure Policy 内置定义 - Microsoft.Web:

名称
(Azure 门户)
说明 效果 版本
(GitHub)
应用服务应用应使用托管标识 使用托管标识以实现增强的身份验证安全性 AuditIfNotExists、Disabled 3.0.0

IM-7:根据条件限制资源访问

功能

数据平面的条件访问

说明:可以使用 Azure AD 条件访问策略控制数据平面访问。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:定义 Azure Active Directory (Azure AD) 工作负载中的条件访问的适用条件和条件。 请考虑常见的用例,例如阻止或授予特定位置的访问权限、阻止有风险的登录行为或要求组织管理的设备用于特定应用程序。

IM-8:限制凭据和机密的泄露

功能

服务凭据和机密支持 Azure 密钥保管库中的集成和存储

说明:数据平面支持将 Azure 密钥保管库本机用于凭据和机密存储。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:确保应用机密和凭据存储在安全的位置(如 Azure 密钥保管库),而不是将它们嵌入代码或配置文件中。 在应用上使用托管标识,然后以安全的方式访问存储在密钥保管库中的凭据或机密。

参考对App 服务和Azure Functions使用密钥保管库引用

特权访问

有关详细信息,请参阅 Microsoft 云安全基准:特权访问

PA-7:遵循 Just Enough Administration(最小特权)原则

功能

用于数据平面的 Azure RBAC

说明:Azure Role-Based 访问控制 (Azure RBAC) 可用于托管对服务的数据平面操作的访问。 了解详细信息

支持 默认启用 配置责任
False 不适用 不适用

配置指南:不支持此功能来保护此服务。

PA-8:确定云提供商支持的访问流程

功能

客户密码箱

说明:客户密码箱可用于 Microsoft 支持访问。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:在 Microsoft 需要访问你的数据的支持方案中,请使用客户密码箱进行评审,然后批准或拒绝 Microsoft 的每个数据访问请求。

数据保护

有关详细信息,请参阅 Microsoft 云安全基准:数据保护

DP-1:对敏感数据进行发现、分类和标记

功能

敏感数据发现和分类

说明:Azure Purview 或 Azure 信息保护) 等工具 (可用于服务中的数据发现和分类。 了解详细信息

支持 默认启用 配置责任
False 不适用 不适用

功能说明:在生成管道中实现凭据扫描程序,以识别代码中的凭据。 凭据扫描程序还会建议将发现的凭据转移到更安全的位置,例如 Azure Key Vault。

配置指南:不支持此功能来保护此服务。

DP-2:监视针对敏感数据的异常情况和威胁

功能

数据泄露/丢失防护

说明:服务支持 DLP 解决方案,用于监视客户内容) 中的敏感数据移动 (。 了解详细信息

支持 默认启用 配置责任
False 不适用 不适用

功能说明:虽然数据识别、分类和丢失防护功能尚不可用于App 服务,但可以通过删除目标使用 Internet 或 Azure 服务“标记”的所有规则来降低虚拟网络中的数据外泄风险。

Microsoft 会管理应用服务的底层基础结构,并实施严格的控制措施来防止数据丢失或泄露。

使用标记来帮助跟踪App 服务存储或处理敏感信息的资源。

配置指南:不支持此功能来保护此服务。

DP-3:加密传输中的敏感数据

功能

传输中数据加密

说明:服务支持数据平面的传输中数据加密。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:使用并强制使用 TLS/SSL 设置中配置的默认最低 TLS v1.2 版本来加密传输中的所有信息。 还要确保将所有 HTTP 连接请求均重定向到 HTTPS。

参考在 Azure 应用服务 中添加 TLS/SSL 证书

Microsoft Defender for Cloud 监视

Azure Policy 内置定义 - Microsoft.Web:

名称
(Azure 门户)
说明 效果 版本
(GitHub)
只应通过 HTTPS 访问应用服务应用 使用 HTTPS 可确保执行服务器/服务身份验证服务,并保护传输中的数据不受网络层窃听攻击威胁。 审核、已禁用、拒绝 4.0.0

DP-4:默认启用静态数据加密

功能

使用平台密钥进行静态数据加密

说明:支持使用平台密钥的静态数据加密,任何客户静态内容都使用这些 Microsoft 托管密钥进行加密。 了解详细信息

支持 默认启用 配置责任
True True Microsoft

功能说明:App 服务应用中的网站内容(如文件)存储在 Azure 存储中,后者会自动加密静态内容。 选择将应用程序密钥存储在 Key Vault 中,并在运行时检索它们。

客户提供的密钥存储在应用服务配置数据库中时会进行静态加密。

请注意,虽然网站可以选择将本地附加磁盘用作临时存储, (例如 D:\local 和 %TMP%) ,但它们仅在可以使用 Pv3 SKU 的公共多租户App 服务产品/服务中静态加密。 对于 Pv3 SKU 不可用的较旧的公共多租户缩放单元,客户必须创建新的资源组并在其中重新部署其资源。

此外,客户可以选择直接从 ZIP 包在 App 服务 中运行其应用程序。 有关详细信息,请访问:直接从 ZIP 包在 Azure 应用服务 中运行应用

配置指南:无需其他配置,因为默认部署上已启用此功能。

DP-5:需要时在静态数据加密中使用客户管理的密钥选项

功能

使用 CMK 进行静态数据加密

说明:服务存储的客户内容支持使用客户管理的密钥进行静态数据加密。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:如果需要符合法规要求,请定义需要使用客户管理的密钥进行加密的用例和服务范围。 使用客户管理的密钥为这些服务启用和实施静态数据加密。

注意:App 服务应用中的网站内容(如文件)存储在 Azure 存储中,该存储会自动加密静态内容。 选择将应用程序密钥存储在 Key Vault 中,并在运行时检索它们。

客户提供的密钥存储在应用服务配置数据库中时会进行静态加密。

请注意,虽然网站可以选择使用本地附加磁盘作为临时存储(例如 D:\local 和 %TMP%),但它们不会静态加密。

参考使用客户管理的密钥进行静态加密

DP-6:使用安全密钥管理流程

功能

Azure 密钥保管库中的密钥管理

说明:该服务支持任何客户密钥、机密或证书的 Azure 密钥保管库集成。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:使用 Azure 密钥保管库创建和控制加密密钥的生命周期,包括密钥生成、分发和存储。 根据定义的计划或在密钥停用或泄露时轮换和撤销 Azure 密钥保管库 和服务中的密钥。 如果需要在工作负载、服务或应用程序级别使用客户管理的密钥 (CMK) ,请确保遵循密钥管理的最佳做法:使用密钥层次结构生成单独的数据加密密钥, (DEK) 密钥加密密钥 (KEY Vault 中的 KEK) 。 确保向 Azure 密钥保管库注册密钥,并通过服务或应用程序中的密钥 ID 引用密钥。 如果需要将自己的密钥 (BYOK) 引入服务 (,例如将受 HSM 保护的密钥从本地 HSM 导入 Azure 密钥保管库) ,请遵循建议的准则来执行初始密钥生成和密钥传输。

参考对App 服务和Azure Functions使用密钥保管库引用

DP-7:使用安全证书管理流程

功能

Azure 密钥保管库中的证书管理

说明:该服务支持任何客户证书的 Azure 密钥保管库集成。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:可以使用 SSL/TLS 和其他证书配置App 服务,这些证书可以直接在App 服务上配置,也可以从密钥保管库引用。 为了确保集中管理所有证书和机密,请将应用服务使用的所有证书存储在密钥保管库中,而不是直接在应用服务上本地部署它们。 配置此项后,App 服务将自动从 Azure 密钥保管库 下载最新的证书。 确保证书生成遵循定义的标准,而不使用任何不安全的属性,例如:密钥大小不足、有效期过长、加密不安全。 根据定义的计划或在证书过期时,在 Azure 密钥保管库中设置证书的自动轮换。

参考在 Azure 应用服务 中添加 TLS/SSL 证书

资产管理

有关详细信息,请参阅 Microsoft 云安全基准:资产管理

AM-2:仅使用已获批准的服务

功能

Azure Policy 支持

说明:可以通过Azure Policy监视和强制实施服务配置。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:使用 Microsoft Defender for Cloud 配置Azure Policy以审核和强制实施 Azure 资源的配置。 使用 Azure Monitor 在资源上检测到配置偏差时创建警报。 使用Azure Policy [拒绝] 和 [如果不存在则部署] 效果跨 Azure 资源强制实施安全配置。

注意:使用 Azure Policy 为App 服务部署的应用定义和实施标准安全配置。 使用内置Azure Policy定义以及“Microsoft.Web”命名空间中的Azure Policy别名创建自定义策略,以发出警报、审核和强制实施系统配置。 开发一个用于管理策略例外的流程和管道。

参考Azure 应用服务的Azure Policy法规遵从性控制措施

AM-4:限制对资产管理的访问

AM-4 的其他指南

隔离处理敏感信息的系统。 为此,请使用单独的应用服务计划或应用服务环境,并考虑使用不同的订阅或管理组。

日志记录和威胁检测

有关详细信息,请参阅 Microsoft 云安全基准:日志记录和威胁检测

LT-1:启用威胁检测功能

功能

适用于服务/产品的 Microsoft Defender

说明:服务具有特定于产品/服务的Microsoft Defender解决方案,用于监视安全问题并发出警报。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:对App 服务使用 Microsoft Defender 来识别针对在 App 服务 上运行的应用程序的攻击。 启用适用于应用服务的 Microsoft Defender 后,你立即就能从该 Defender 计划提供的下列服务中受益:

  • 安全:Defender for App 服务 评估App 服务计划涵盖的资源,并根据调查结果生成安全建议。 可按照这些建议中的详细说明来强化你的应用服务资源。

  • 检测:Defender for App 服务 通过监视运行App 服务的 VM 实例及其管理界面、发送到App 服务应用的请求和响应、基础沙盒和 VM 以及App 服务内部日志,检测App 服务资源的多种威胁。

参考保护 Web 应用和 API

LT-4:启用日志记录以进行安全调查

功能

Azure 资源日志

说明:服务生成可提供增强的服务特定指标和日志记录的资源日志。 客户可以配置这些资源日志,并将其发送到自己的数据接收器,例如存储帐户或日志分析工作区。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:在 App 服务 上为 Web 应用启用资源日志。

参考为 Azure 应用服务 中的应用启用诊断日志记录

态势和漏洞管理

有关详细信息,请参阅 Microsoft 云安全基准:态势和漏洞管理

PV-2:审核并强制执行安全配置

PV-2 的其他指南

关闭远程调试,不能为生产工作负荷启用远程调试,因为这会在服务上打开额外的端口,从而增加攻击面。

Microsoft Defender for Cloud 监视

Azure Policy 内置定义 - Microsoft.Web:

名称
(Azure 门户)
说明 效果 版本
(GitHub)
[已弃用]:函数应用应启用“客户端证书 (传入客户端证书) ” 客户端证书允许应用请求传入请求的证书。 只有具有有效证书的客户端才能访问该应用。 此策略已被同名的新策略替换,因为 Http 2.0 不支持客户端证书。 Audit、Disabled 3.1.0-已弃用

PV-7:定期执行红队操作

PV-7 的其他指南

按照参与的渗透测试规则对 Web 应用程序进行定期 渗透测试

备份和恢复

有关详细信息,请参阅 Microsoft 云安全基准:备份和恢复

BR-1:确保定期执行自动备份

功能

Azure 备份

说明:服务可由Azure 备份服务备份。 了解详细信息

支持 默认启用 配置责任
True False 客户

配置指南:在可能的情况下,实施无状态应用程序设计,通过App 服务简化恢复和备份方案。

如果确实需要维护有状态应用程序,请在 App 服务 中启用备份和还原功能,以便轻松手动或按计划创建应用备份。 可以将备份配置为无限期保留。 通过覆盖现有应用或还原为另一应用可将应用还原为先前状态的快照。 确保定期和自动备份按组织策略定义的频率进行。

注意:App 服务可以将以下信息备份到已将应用配置为使用的 Azure 存储帐户和容器:

  • 应用配置
  • 文件内容
  • 连接到应用的数据库

参考在 Azure 中备份应用

服务本机备份功能

说明:如果不使用 Azure 备份) ,服务 (支持自己的本机备份功能。 了解详细信息

支持 默认启用 配置责任
False 不适用 不适用

配置指南:不支持此功能来保护此服务。

DevOps 安全性

有关详细信息,请参阅 Microsoft 云安全基准:DevOps 安全性

DS-6:在整个 DevOps 生命周期内加强工作负载的安全性

DS-6 的其他指南

从受控且受信任的环境(如管理良好且安全的 DevOps 部署管道)将代码部署到应用服务。 这避免了未受版本控制且经验证从恶意主机部署的代码。

后续步骤