Azure App Service自定义域名限制特定租户访问的技术咨询
多租户Azure App Service实现方案相关问题解答
首先针对你提到的两个方案和三个疑问逐一解答:
方案前置补充
你提到的第一种TenantKey方案也可以做体验优化,无需用户每次手动输入:用户首次登录成功后,将TenantKey加密存储在浏览器本地缓存/IndexedDB中,后续访问时自动从缓存读取带到登录接口,可大幅降低用户记忆成本,也能一定程度缓解密钥泄露的风险。如果你们更倾向自定义域名方案,三个疑问的解答如下:
1. 自定义域名的访问限制实现
可以实现仅客户VPN环境访问的需求:
- 直接使用Azure App Service自带的访问限制功能,为每个租户的自定义域名配置独立的IP允许规则,仅将客户VPN的出口IP段加入白名单,其余IP默认拒绝即可。
- 如果后续有更复杂的安全需求,也可以在接入层加WAF组件,在WAF层配置基于域名的访问控制规则,还可以叠加速率限制、异常流量拦截等安全策略。
2. 自定义域名配额超限的扩容方案
单个App Service 500个自定义域名的配额确实是固定上限,可通过两种方案扩容:
- 方案一:拆分多套App Service部署,按租户地域、规模等维度分组,每组对应一个App Service,各自分摊域名配额,只需要在Catalog DB中补充域名与后端App Service的路由映射规则即可,原有业务逻辑基本不用修改。
- 方案二:替换为通配符域名方案,给你的应用主域名配置
*.yourdomain.com的通配符证书,每个租户使用[租户标识].yourdomain.com的二级域名,这种场景下仅需要给App Service添加1个通配符域名,完全不受500个配额的限制,同时省去了每个租户单独配置域名解析、SSL证书的工作量,是多租户场景下的主流选择。
3. 自定义域名方案对负载均衡架构的影响
基本不会产生负面影响:
不管你使用Azure原生的应用网关、Front Door还是第三方负载均衡器,都原生支持读取请求头中的Host字段(即用户访问的自定义域名)做路由转发,你只需要在负载均衡层配置好域名与后端App Service池的映射规则即可,原有的租户识别、数据库连接查询逻辑完全不需要调整。如果使用通配符域名,仅需要配置一条通配符路由规则就能覆盖所有租户的请求转发,配置成本更低。
内容的提问来源于stack exchange,提问作者RashmiMs
相关产品推荐
相关产品推荐

