你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Bot Framework 安全指南
适用于:SDK v4
在金融服务、零售、旅游等关键业务领域,机器人越来越普遍。 机器人可能会收集信用卡、SSN、银行帐户和其他个人信息等非常敏感的数据。 因此,机器人必须安全并防范常见的威胁和漏洞。
可以采取一些标准预防措施来提高机器人的安全性。 某些安全措施类似于其他软件系统中使用的安全措施,而有些安全措施则特定于 Bot Framework。 有关后者,请参阅 Azure 安全基准。 该基准提供有关如何在 Azure 上保护云解决方案的建议。
安全问题简介
本文将安全问题分组为 2 个类别:
威胁:某人可能用于入侵机器人的技巧,例如欺骗、篡改、泄露信息、拒绝服务等等。
漏洞:机器人或机器人的管理可能容易遭受此类技巧的途径,如 bug 或宽松安全性。
减少漏洞是缓解威胁的一个好方法,减少漏洞的一个已知方法是在开发和部署过程中实现安全检查点。
常见安全指南
应用程序通用的标准安全最佳做法涵盖了以下领域。
保障网络流量安全
现有协议提供加密控制,以解决数据在传输过程中被篡改和泄露的问题。 就此而言,机器人只应通过安全通道进行通信。
若要在线路上交换数据,任何安全系统都必须使用“HTTPS”协议,该协议在传输层安全性 (TLS) 或安全套接字层 (SSL) 保护的加密连接中通过 HTTP 传输数据。 另请参阅 RFC 2818 - HTTP Over TLS。
注意
所有机器人服务通道都需要 HTTPS 和 TLS 1.2。
自毁消息
不再需要任何敏感数据时立即永久删除这些数据,通常是在消息交换结束之后或是在一段时间后。 这可包括个人身份信息、ID、PIN、密码、安全问题和答案等等。
数据存储
最佳做法要求将信息以安全状态存储一段时间,然后在信息实现其用途后将其丢弃。
下面列出了一些常见的安全技术。
数据库防火墙
- 默认情况下,防火墙拒绝访问流量。 唯一允许的流量应源自需要访问数据的特定应用程序或 Web 服务器。
- 还应部署 Web 应用程序防火墙。 这是因为针对 Web 应用程序的 SQL 注入攻击等攻击可用于从数据库外泄或删除数据。
数据库强化
- 请确保数据库仍受供应商支持,并且运行的是最新版本的数据库,其中安装了所有安全补丁以删除已知的漏洞。
- 卸载或禁用不需要的任何功能或服务,并确保更改任何默认帐户的默认密码;或者,最好删除不需要的任何默认帐户。
- 请确保已启用数据库提供的所有数据库安全控件,除非有特定原因需要禁用任何控件。
最大程度地减少有价值的信息
- 请确保没有存储不需要在数据库中的任何机密信息。
- 出于合规性或其他目的保留的数据可以移动到更安全的存储(可能是脱机存储),即不易遭受数据库安全威胁的存储。
- 请确保删除在原始安装过程中由服务器写入的任何历史记录文件。 如果安装成功,这些文件就没有价值了,但会包含可能被利用的信息。
教育
机器人提供公司与其客户之间的创新交互工具。 但它们可能会为篡改公司网站提供后门。 因此,公司必须确保其开发人员了解机器人安全性作为网站安全性的一部分的重要性。 此外,用户的错误也可以是一个问题。 这将需要有关如何安全使用机器人的一些教育,例如:
- 对于开发人员,策略应包含有关如何安全使用机器人的内部培训。
- 可以为客户提供详细说明如何安全地与机器人交互的指南。
特定于机器人的安全指南
适用于 Bot Framework 应用程序的一些标准安全最佳做法涵盖了以下领域。 以下指南介绍了 Bot Framework 最佳做法安全措施。 有关详细信息,请参阅安全性和隐私常见问题解答。
Bot Connector 身份验证
Bot Connector 服务本机使用 HTTPS 在机器人和通道(用户)之间交换消息。 Bot Framework SDK 可自动执行基本的机器人到通道身份验证。
警告
如果正在编写自己的身份验证代码,则必须正确实现所有安全程序。 通过实现身份验证一文中介绍的所有步骤,可以降低攻击者能够读取发送到机器人的消息、发送模拟机器人的消息以及窃取密钥的风险。
用户身份验证
可以通过“Azure AI 机器人服务身份验证”对用户进行身份验证并从各类标识提供者(例如 Microsoft Entra ID、GitHub、Uber 等)处获取“访问令牌”。 也可为自定义 OAuth2 标识提供者配置身份验证。 因此,你可以编写适用于所有受支持的标识提供者和通道的身份验证代码。 若要利用这些功能,需执行以下步骤:
- 以静态方式在机器人上配置
settings
,其中包含应用程序注册到标识提供者时的详细信息。 - 使用在上一步提供的应用程序信息所支持的
OAuthCard
登录用户。 - 通过“Azure AI 机器人服务 API”检索访问令牌。 一个好的做法是对经过身份验证的用户可以保持“登录”的时长进行限制。
有关详细信息,请参阅用户身份验证一文。
网上聊天
使用 Web 聊天控件时,必须牢记一些有关模拟和标识欺骗的重要安全注意事项。 有关详细信息,请参阅 Direct Line 增强身份验证。