Azure Bot Service能否借助VNET实现出站通信?禁用公网访问后Teams通道失效
Azure Bot Service VNET 出站通信与Teams通道问题解答
针对你的场景和问题,逐一解答如下:
1. Azure Bot Service是否正在通过VNET进行出站通信?
默认情况下,Azure Bot Service的业务流量(包括向你的消息端点samplebot.azurewebsites.net/api/messages发起的请求)是通过公共网络出站的,而非你配置的vnet_1。你创建的专用终结点仅控制Bot Service管理平面的访问(比如Azure门户对Bot资源的操作),而非业务流量的出站路径。
只有当你为Bot Service(仅限Premium SKU)配置了虚拟网络集成,或者你的Bot托管在已启用VNET集成的App Service中时,Bot的出站流量才会通过VNET路由。目前从你的描述看,未完成这一关键配置,因此Bot Service并未通过VNET进行出站通信。
2. 是否缺少无法通过Azure门户界面配置的设置?
核心缺失的是让Bot Service出站流量进入VNET的配置,这部分大部分可通过门户完成,无需额外非界面操作:
- 启用Bot Service的虚拟网络集成:若你的Bot使用Premium SKU,在Azure门户的Bot资源「网络」选项中,找到「虚拟网络集成」并关联
vnet_1,确保Bot的出站流量路由至VNET。 - 确认消息端点的网络权限:你的
samplebot.azurewebsites.net/api/messages已配置专用链接,需确保VNET内的Bot Service出站流量(而非仅VM)被允许访问该端点。可在App Service的「网络」-「专用端点连接」中确认专用链接状态,同时检查App Service的「接入限制」是否允许来自vnet_1的流量。 - 验证Bot Service的SKU:只有Premium SKU的Azure Bot Service支持虚拟网络集成,若使用Standard或Free SKU,无法配置VNET出站,需升级SKU。
3. 为何禁用消息端点的公共访问后通道会失效?
Teams通道的工作流程是:Teams服务将用户消息发送至Azure Bot Service,Bot Service再将请求转发至你的消息端点进行处理。默认情况下,Bot Service是从公共IP地址向你的消息端点发起请求的。
当你禁用消息端点的公共访问后,所有来自公网的请求(包括Bot Service的公共出站请求)会被阻断,导致Bot Service无法将Teams的消息传递至你的端点,进而引发通道失效。虽然VNET内的VM能访问端点,但Bot Service未配置为通过VNET出站,因此它的请求仍走公网,被你的端点的访问限制拦截。
内容的提问来源于stack exchange,提问作者Tobi
相关产品推荐
相关产品推荐

