安全
LangChain 拥有一个庞大的生态系统,集成了各种外部资源,如本地和远程文件系统、API 和数据库。这些集成使开发人员能够创建多功能应用程序,将 LLM 的强大功能与访问、交互和操作外部资源的能力相结合。
最佳实践
在构建此类应用程序时,开发人员应记住遵循良好的安全实践
- 限制权限:根据应用程序的需求具体限定权限范围。授予广泛或过度的权限可能会引入重大的安全漏洞。为了避免此类漏洞,请考虑使用只读凭据,禁止访问敏感资源,使用沙箱技术(例如在容器内运行)等,这些都适用于您的应用程序。
- 预测潜在的误用:正如人类会犯错一样,大型语言模型 (LLM) 也会犯错。始终假设任何系统访问或凭据都可能以分配给它们的权限允许的任何方式使用。例如,如果一对数据库凭据允许删除数据,那么最安全的做法是假设任何能够使用这些凭据的 LLM 实际上都可能删除数据。
- 纵深防御:没有哪种安全技术是完美的。微调和良好的链设计可以减少,但不能消除大型语言模型 (LLM) 可能犯错的几率。最好结合多种分层安全方法,而不是依赖任何单层防御来确保安全。例如:同时使用只读权限和沙箱,以确保 LLM 只能访问明确用于它们的数据。
不这样做的风险包括但不限于
- 数据损坏或丢失。
- 未经授权访问机密信息。
- 关键资源的性能或可用性受到损害。
具有缓解策略的示例场景
- 用户可能会要求有权访问文件系统的代理删除不应删除的文件,或读取包含敏感信息的文件内容。为了缓解这种情况,请限制代理仅使用特定目录,并且仅允许其读取或写入可以安全读取或写入的文件。考虑通过在容器中运行来进一步沙箱化代理。
- 用户可能会要求有权写入外部 API 的代理将恶意数据写入 API,或从该 API 删除数据。为了缓解这种情况,请为代理提供只读 API 密钥,或将其限制为仅使用已经能够抵抗此类滥用的端点。
- 用户可能会要求有权访问数据库的代理删除表或更改模式。为了缓解这种情况,请将凭据的范围限定为代理需要访问的表,并考虑颁发只读凭据。
如果您正在构建访问外部资源(如文件系统、API 或数据库)的应用程序,请考虑与您公司的安全团队沟通,以确定如何最好地设计和保护您的应用程序。
报告漏洞
请通过电子邮件将安全漏洞报告至 security@langchain.dev. 这将确保问题得到及时分类并根据需要采取行动。