Azure Bot Service 的 Teams 通道的 IP 地址限制
Posted
技术标签:
【中文标题】Azure Bot Service 的 Teams 通道的 IP 地址限制【英文标题】:IP address restriction to Teams channel of Azure Bot Service 【发布时间】:2021-08-24 05:23:55 【问题描述】:我正在通过 Azure 门户机器人服务注册创建机器人。关于 Azure Bot Service 的 Teams 通道,我想知道是否可以通过 Azure Portal 上的设置来限制 IP 地址对 bot 服务通道的访问?
我已阅读有关条件访问位置策略的信息,但这似乎适用于 Azure Active Directory 的范围,我不确定它在机器人服务范围内的哪个位置发挥作用。如果条件访问位置策略与我的问题相关,将不胜感激有关它如何与机器人服务相关的工作原理的更多信息。
编辑:
我包含了这篇文章中的有用图片。 https://hilton.giesenow.com/how-bot-calls-actually-work
对于可以是公共或私有的机器人,我想在图像的第 2 步应用某种形式的限制或身份验证,即来自 Azure 门户上的 Microsoft Bot Framework Services。
【问题讨论】:
Bots 没有这样的设置。通常,IP 限制是一种过时的实现安全性的方式,尤其是对团队等 SaaS 服务而言。您能否详细说明您要完成的工作,而不仅仅是允许 IP 地址/范围? @JosVerlinde 我包含了一个编辑以供进一步解释。如果用户要向 Microsoft Teams 中的机器人发送消息,我想知道在将请求转发(即发送或不发送)到机器人服务的消息之前是否可以对请求应用限制或身份验证Microsoft Bot Framework Services 的端点。 @BoydChing - 如果您希望根据租户添加限制,请查看How do I restrict the use of my bot to users belonging to my tenant only? doc。 【参考方案1】:所有(正在运行的)机器人都可以公开访问。
您无法阻止 Teams 从任何租户向您发送消息, 如果有人拥有您的应用清单,您也不能阻止他们安装您的机器人。 您甚至可以在不安装机器人的情况下@提及机器人因此,作为开发人员,您必须防止您的机器人处理不需要的消息。
您有两种不同的选项来限制机器人处理的传入消息。
如果您处理的是安全数据,绝对推荐使用 OAuth 对用户进行身份验证。
见Teams SSO bot - C# (experimental branch) 请注意,在身份验证之后,您仍然需要处理授权,可能基于the Teams context使用中间件进行过滤(只允许您的订阅客户)是另一个不错的选择。例如,在 Teams 频道的情况下,将 TeamsTenantFilteringMiddleware 类添加到您的机器人,并将其连接到您的启动方法中。 请参阅以下示例:
C# version, javascript version。所以对于租户过滤,看起来像这样:
if (!this.tenantMap.Contains(tenantId))
throw new UnauthorizedAccessException("Tenant Id '" + tenantId + "' is not allowed access.");
【讨论】:
基于 @wajeed-MSFT 在早期 cmets 中的信息 这个答案很好!以上是关于Azure Bot Service 的 Teams 通道的 IP 地址限制的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Bot Framework 向 Teams 中的用户发送通知?
利用Azure communication service实现跟Teams同样等级的沟通协作应用
从 Azure Bot App Service Console 运行 Bot Framework Orchestrator 命令时出现问题