mcpField
A
azure-app-service-security

azure-app-service-security

github.com/vinayaklatthe安全17876 次安装19 周前更新
代码仓库

关于 azure-app-service-security

azure-app-service-security 是为 Azure App Service 上的 Web 应用和 API 规划安全控制的指导技能,涵盖身份、机密、网络暴露、传输安全和监控。

主要功能

  1. 01托管身份与最小权限访问
  2. 02Easy Auth 登录配置
  3. 03Key Vault 机密引用
  4. 04专用终结点与 VNet 集成
  5. 05HTTPS、TLS 和 WAF 加固
  6. 06日志与 Defender 监控

适用场景

  1. 01加固 App Service Web 应用或 API
  2. 02通过专用终结点限制入站访问
  3. 03用 Key Vault 引用替换明文应用机密
  4. 04检查 WAF 后方的公网应用暴露

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vinayaklatthe/microsoft-security-skills --skill azure-app-service-security

安装后在 Claude Code 中输入/azure-app-service-security确认已加载。

详细介绍

Azure App Service 安全

Azure App Service 将 Web 应用和 API 托管为托管式 PaaS。保护它的安全意味着消除配置中的机密信息、尽可能移除公网暴露、强制使用现代传输协议,并在必须公开时将其置于 WAF 后方。

适用场景

加固托管在 Azure App Service 上的 Web 应用和 API。使用此技能规划 Web App / API App 的身份、网络、机密信息和传输安全状况。

此技能不适用于仅使用 Azure Functions 的场景(平台类似,但彼此独立)、AKS 工作负载或托管在 VM 上的 Web 应用。

根据暴露模式选择配置

暴露模式入站出站前端
仅限内部的应用(内联网、供 VNet 工作负载使用的 API)专用终结点,禁用公共访问VNet 集成到 Spoke内部 Application Gateway
公共 Web 应用,包含敏感数据公共访问 + 仅允许访问限制指向 WAFVNet 集成配置为 Prevention 模式的 Front Door 或带 WAF 的 App Gateway
基础公共 Web 应用公共访问,默认配置无 / VNet 集成带 WAF 的 App Gateway
供合作伙伴使用的 API专用终结点 + 前置 APIMVNet 集成APIM(若 APIM 公开,则为其配置 WAF)
后台工作进程 / 无入站流量禁用公共访问VNet 集成无

经验法则:如果不需要连接互联网,请使用专用终结点并禁用公共网络访问。如果确实需要连接互联网,请在前方部署配置为 Prevention 模式的 Front Door / 带 WAF 的 App Gateway,并限制应用仅接受来自 WAF 的 IP 范围或服务标记的流量。

方案

  1. 启用托管标识 — 默认使用系统分配的托管标识。为其授予 Azure SQL(SQL DB Contributor 不合适——应使用 AAD 身份验证和包含用户)、Storage(Storage Blob Data Reader)、Key Vault(Key Vault Secrets User)上的最小权限角色。 验证:应用具有托管标识;配置中没有嵌入密码的 SQL / Storage 连接字符串。

  2. 使用 Easy Auth 登录 — 使用内置的 App Service 身份验证(Easy Auth) 和 Microsoft Entra ID 实现 OIDC 登录,无需编写身份验证代码。配置重定向 URI、令牌存储,并设置 requireAuthentication = true 以限制对整个应用的访问。 验证:匿名请求会返回 302 并重定向到 Entra 登录页面;经过身份验证的请求会返回 200,并包含用户的主体声明。

  3. 通过 Key Vault 引用管理机密 — 将机密存储在 Key Vault 中;在应用设置中使用 @Microsoft.KeyVault(SecretUri=...) 引用。无需更改代码;托管标识会在启动时或刷新时读取机密。 验证:应用设置中的 Key Vault Reference 显示为 Resolved;配置中没有明文机密。

  4. 网络隔离 — 对出站流量使用 VNet 集成(以便应用访问专用终结点,以及通过网关访问本地网络)。对敏感应用使用入站 专用终结点。使用专用终结点时,请禁用公共访问。 验证:应用的出站 IP 位于集成子网中;从公共互联网向仅限专用终结点的应用进行入站测试,结果为 403 / 连接被拒绝。

  5. 强化传输安全 — 强制启用 仅 HTTPS,最低 TLS 版本为 1.2(建议使用 TLS 1.3),禁用 FTP(仅使用 FTPS 或部署中心),并在适当情况下启用 HSTS。 验证:HTTP 请求会 301 重定向到 HTTPS;httpsOnly = true;minTlsVersion = "1.2" 或更高;如果不需要 FTP,则设置 ftpsState = "Disabled"。

  6. 对外公开时在前端部署 WAF — 使用 Front Door(全球)或带有 WAF 的 App Gateway(区域),并设为 防护模式。通过 访问限制,使用 WAF 的服务标记(AzureFrontDoor.Backend)或 IP 范围以及 X-Azure-FDID 标头,将 App Service 的入站流量限制为仅允许来自 WAF 的流量。 验证:直接请求 App Service URL 时返回 403;通过 WAF FQDN 请求时返回 200。

  7. 监视并启用 Defender — 将诊断日志发送到 Log Analytics,在计划上启用 Defender for App Service,并使用 App Insights 收集应用遥测数据。针对异常身份验证失败设置警报。

防护措施

  • 对敏感应用使用专用终结点移除公共入站访问;对公共应用配合使用 WAF。 直接暴露于互联网且未使用 WAF 的应用会持续遭受扫描。
  • 使用托管标识和 Key Vault 引用,消除配置中的机密。 应用设置中的连接字符串迟早会成为审计发现。
  • 强制启用仅 HTTPS 和新式 TLS;禁用旧版协议和 FTP。 TLS 1.0 / 1.1 和 FTP 会立即导致审计不通过。
  • Easy Auth 不能取代授权。 它负责身份验证;对于敏感操作,仍需在代码中检查角色 / 声明。
  • 访问限制是后门上的锁。 如果不将 App Service 限制为仅允许来自 WAF 的 IP / FDID 标头,攻击者就能直接访问 App Service URL,绕过 WAF。
  • Defender for App Service 能捕获 AV 无法发现的问题。 上传 Webshell、应用行为异常——请在计划上启用 Defender。

常见反模式

  • “在应用设置中以明文形式存储连接字符串”——任何拥有该应用读取者权限的人都能看到。使用 Key Vault 引用。
  • “将带 WAF 的公共 App Service URL 视为‘稍后推荐添加’”——攻击者从第一天起就能绕过 WAF。启用 WAF 时,收紧访问限制。
  • “为旧版部署启用 FTP”——凭据以明文传输。使用 FTPS 或部署中心。
  • “因为一个旧版回调而关闭仅限 HTTPS”——修复回调,不要降低整个应用的安全性。
  • *“Easy Auth + ‘允许对 /api/ 匿名访问’”**——这会让防护形同虚设。对所有请求进行身份验证;在应用内部进行授权。
  • “集成 VNet,却不禁用公共访问”——你增强了安全性,却没有关闭旧入口。

示例提示词

  • 使用 Easy Auth、托管标识和 TLS 加固 Azure App Service Web 应用。
  • 如何通过专用终结点和 VNet 集成锁定 App Service?
  • 使用 Key Vault 引用存储 App Service 密钥,而不是使用纯文本应用设置。
  • 在 App Service 前部署带 WAF 的 Front Door,并锁定后门。
  • 禁用 FTP、强制仅使用 HTTPS,并将最低 TLS 版本设为 1.2。
  • 检查我的 App Service 网络和身份验证配置,找出安全漏洞。

Microsoft Learn

评论

支持 Markdown