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 命令时出现问题

如何在基于Bot framewok v4构建的团队聊天机器人中启用语音功能

在 Teams 中添加 Bot 后出现错误

使用 Team 的附件按钮将文件上传到 bot 应用程序时,Microsoft Teams 返回错误