你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Bot Framework 安全和隐私常见问题解答

本文解答了常见的安全和隐私问题。

适用于:SDK v4

注册到 Bot Framework 的机器人是否会收集个人信息? 如果是,我如何确保数据的安全性? 如何保护隐私?

每个机器人都是自己的服务,这些服务的开发人员必须根据其开发人员行为准则提供服务条款和隐私声明。 有关详细信息,请参阅机器人审查指南

是否可在自己的服务器上托管机器人?

是的。 可将机器人托管在 Internet 上的任何位置, 包括你自己的服务器、Azure 或其他任何数据中心。 唯一的要求是机器人必须公开一个可公开访问的 HTTPS 终结点。

如何从服务中禁用或删除机器人?

用户可以通过目录中机器人的联系人卡片报告存在不当行为的机器人。 开发人员必须遵守 Microsoft 服务条款才能参与该服务。

需要在企业防火墙中将哪些特定的 URL 列入允许列表才能访问 Bot Framework 服务?

如果出站防火墙阻止了机器人的流量发往 Internet,则你需要在防火墙中将以下 URL 列入允许列表:

  • login.botframework.com(机器人身份验证)
  • login.microsoftonline.com(机器人身份验证)
  • westus.api.cognitive.microsoft.com(用于 Luis.ai NLP 集成)
  • *.botframework.com(通道)
  • state.botframework.com(后向兼容性)
  • login.windows.net(Windows 登录)
  • login.windows.com(Windows 登录)
  • sts.windows.net(Windows 登录)
  • 特定 Bot Framework 通道的其他 URL

注意

语言理解(LUIS)将于 2025 年 10 月 1 日停用。 从 2023 年 4 月 1 日开始,将无法创建新的 LUIS 资源。 语言理解的较新版本现已作为 Azure AI 语言的一部分提供。

对话语言理解(CLU)是 Azure AI 语言的一项功能,是 LUIS 的更新版本。 有关 Bot Framework SDK 中的语言理解支持的详细信息,请参阅 自然语言理解

注意

如果不希望将带有星号的 URL 列入允许列表,可以使用 <channel>.botframework.com<channel> 相当于机器人使用的每个通道,如 directline.botframework.comwebchat.botframework.comslack.botframework.com。 在测试机器人以查看通过防火墙的流量是有意义的,可以查看防火墙阻止的流量。

是否可以阻止发往机器人的所有流量,但来自 Bot Framework Service 的流量除外?

Bot Framework Service 托管在全球的 Azure 数据中心,Azure IP 列表会不断变化。 这意味着,将特定的 IP 地址列入允许列表可能只管用一天,当 Azure IP 地址发生变化时,这种做法就不起作用。

创建和部署机器人需要哪个 RBAC 角色?

在 Azure 门户中创建机器人需要在订阅或特定资源组中有“参与者”访问权限。 在某个资源组中担任“参与者”角色的用户可以在该特定资源组中创建新的机器人。 担任某个订阅的“参与者”角色的用户可以在新的或现有的资源组中创建机器人。

使用 Azure CLI 时,基于角色的访问控制方法可以支持自定义角色。 若要对自定义角色的权限进行更多约束,可以使用以下集,使用户能够创建和部署也支持 LUIS、QnA Maker 和 Application Insights 的机器人。

"Microsoft.Web/*",
"Microsoft.BotService/*",
"Microsoft.Storage/*",
"Microsoft.Resources/deployments/*",
"Microsoft.CognitiveServices/*",
"Microsoft.Search/searchServices/*",
"Microsoft.Insights/*",
"Microsoft.Insights/components/*"

注意

Azure AI QnA Maker 将于 2025 年 3 月 31 日停用。 从 2022 年 10 月 1 日开始,您将无法创建新的 QnA Maker 资源或知识库。

语言理解 (LUIS) 将于 2025 年 10 月 1 日停用。 从 2023 年 4 月 1 日开始,将无法创建新的 LUIS 资源。

这些服务的较新版本现已作为 Azure AI 语言的一部分提供。 有关 Bot Framework SDK 中的问答和语言理解支持的详细信息,请参阅自然语言理解

注意

LUIS 和 QnA Maker 需要 Azure AI 服务权限。 QnA Maker 还需要搜索权限。 创建自定义角色时,请记住,任何继承的拒绝权限将取代这些允许权限。

当客户端模拟 Bot Framework Service 时,机器人受到哪种保护?

  1. 所有可信 Bot Framework 请求都附带了 JWT 令牌,此令牌的加密签名可以按身份验证指南进行验证。 此令牌旨在使攻击者无法模拟受信任的服务。
  2. 向机器人发出的每个请求所随附的安全令牌中包含一个编码的 ServiceUrl,这意味着,即使攻击者获取了该令牌的访问权限,也无法将聊天重定向到新的 ServiceUrl。 SDK 的所有实现都会强制实施此机制,身份验证参考材料中对此做了阐述。
  3. 如果传入的令牌缺失或格式不当,Bot Framework SDK 不会在响应中生成令牌。 当机器人配置不当时,此机制可以限制损害程度。
  4. 在机器人内部,可以手动检查令牌中提供的 ServiceUrl。 如果服务拓扑发生更改,此机制会使机器人变得更脆弱,因此,这种机制是可行的,但不建议。

注意

这是机器人与 Internet 之间的出站连接。 Bot Framework 连接器服务不是使用 IP 地址或 DNS 名称的列表来与机器人通信。 不支持将入站 IP 地址加入允许列表。

身份验证期间,魔码的作用是什么?

在 Web 聊天控件中,有两种机制可以确保正确的用户登录。

  1. 魔码。 在登录过程结束时,用户会看到一个随机生成的 6 位数代码(魔码)。 用户必须在聊天中键入此代码才能完成登录过程。 这往往会使用户体验变得糟糕。 另外,它仍容易受到钓鱼攻击。 恶意用户可能会诱骗另一用户登录,然后通过钓鱼获得幻码。

    警告

    不建议使用魔码。 应如下所述改用 Direct Line 增强身份验证。

  2. Direct Line 增强身份验证。 由于魔码方法存在问题,Azure AI 机器人服务已将它弃用。 Azure AI 机器人服务确保登录过程只能在网上聊天本身所在的“浏览器会话”中完成。 若要启用此项保护,必须使用一个 Direct Line 令牌启动 Web 聊天,该令牌包含可以托管机器人 Web 聊天客户端的受信任源(也称为受信任域)列表。 使用增强身份验证选项,可以在 Direct Line 配置页中以静态方式指定受信任源列表。 有关详细信息,请参阅 Direct Line 增强身份验证

Bot Framework 如何处理标识和访问管理?

标识和访问管理 (IAM) 是一个允许适当的人员对技术资源进行适当访问的框架(策略和技术)。 有关详细信息,请参阅标识管理

Bot Framework 提供以下标识机制:

  • 机器人身份验证。 确定请求是否来自合法来源。 它由机器人连接器服务控制,可在机器人与通道之间实现安全通信。 有关详细信息,请参阅机器人身份验证

  • 用户身份验证。 它使机器人能够代表用户访问受保护的联机资源。 行业标准 OAuth 用于对用户进行身份验证,以及授权机器人访问资源。 有关详细信息,请参阅用户身份验证

总而言之,Bot Framework 处理服务到服务的身份验证(机器人身份验证),而本质上是验证请求是否确实来自正确的通道。 机器人负责处理较低级别的身份验证。 你可以应用筛选器,以便机器人仅接受来自特定租户 ID 的请求,或者,你可以要求用户使用某种 OAuth 服务进行身份验证(用户身份验证)。

如何实现将我的机器人仅限于属于我的租户的用户?

可以使用两种不同的方法来限制机器人处理的传入消息。

  • 如果你正在处理安全数据,则绝对建议使用 OAuth 对用户进行身份验证。

  • 使用中间件是另一种不错的方法。 例如,在 Teams 频道中,可以创建中间件来从 Teams 频道数据获取租户 ID。 然后,中间件可以决定是让传入活动继续执行机器人逻辑,还是返回错误消息。

    警告

    无法防止 Teams 从不同的租户向你发送消息,且无法防止拥有你的应用清单的人员安装你的机器人。 你能够做到的就是防止机器人处理不需要的消息。