部署在VNet内的Azure Container Instance如何仅允许指定Azure App Service访问
配置步骤
1. 为授权的App Service开启VNet集成
所有需要访问ACI的App Service都需要完成以下配置:
- 打开App Service管理页,左侧导航选择「网络」,点击「VNet集成」模块的「配置」
- 选择「添加VNet」,选取ACI加入的目标VNet,分配一个与ACI所在子网无地址冲突的子网用于VNet集成(需确保子网已经委托给
Microsoft.Web/serverFarms服务,或者按页面提示自动配置) - 配置完成后,App Service的出站流量就可以路由到VNet内的ACI私有IP 10.0.0.4
2. 配置NSG限制仅指定App Service可访问ACI
通过网络安全组做入站流量控制,避免VNet内其他未授权资源访问ACI:
- 找到ACI所属子网关联的网络安全组(NSG),如果未关联则新建NSG绑定到该子网
- 新增入站安全规则,参数如下:
- 优先级:设置为100~1000之间(高于默认拒绝规则即可)
- 源:可以二选一,更推荐第一种
- 选择「应用服务」,勾选所有需要授权的App Service实例,自动匹配App Service的出站IP段
- 选择「IP地址/子网」,填写App Service VNet集成所用子网的地址段
- 源端口范围:
* - 目标:选择「IP地址」,填写
10.0.0.4/32 - 目标端口范围:填写你ACI暴露REST API的端口,例如
80,443 - 协议:TCP
- 操作:允许
- 调整NSG默认规则,确保其他未授权的入站流量到10.0.0.4的API端口都会被拒绝
3. (可选)API层身份验证增强
如果需要更高的安全性,可在ACI运行的REST API层面增加身份校验:
- 为所有授权的App Service开启系统分配托管标识
- 给ACI的API启用Azure AD OAuth2校验逻辑,仅允许上述托管标识的访问请求通过,进一步规避IP泄露导致的未授权访问风险
验证配置
- 进入App Service的「高级工具」->「SSH」,执行命令
curl http://10.0.0.4:<你的API端口>/test,确认可以正常获取返回结果 - 使用VNet内其他未授权的资源访问该API地址,确认访问被拒绝
内容的提问来源于stack exchange,提问作者Andrew Duffy
相关产品推荐
相关产品推荐

