安全
LangChain 拥有庞大的集成生态, 可与本地和远程文件系统、API、数据库等各类外部资源交互。这些集成让开发者能够构建灵活多样的应用, 将 LLM 的能力与访问、交互和操作外部资源的能力结合起来。
最佳实践
构建此类应用时, 开发者应牢记遵循良好的安全实践:
- 限制权限 (opens in a new tab): 将权限范围严格限定在应用所需之内。授予宽泛或过多的权限会引入重大安全漏洞。为避免此类漏洞, 可根据应用需要考虑使用只读凭据、禁止访问敏感资源、采用沙箱技术(例如在容器中运行)等措施。
- 预见潜在滥用: 人会犯错, LLM 同样会。始终假设任何系统访问或凭据都可能以其被授予的权限所允许的任何方式被使用。例如, 如果一对数据库凭据允许删除数据, 最稳妥的做法是假设任何能够使用这些凭据的 LLM 都可能真的删除数据。
- 纵深防御 (opens in a new tab): 没有哪种安全技术是完美的。微调和良好的链设计可以降低、但不能消除 LLM 犯错的可能性。最好组合多层安全手段, 而不是依赖任何单一层防御来确保安全。例如: 同时使用只读权限和沙箱, 确保 LLM 只能访问明确授权给它们的数据。
不这样做可能带来的风险包括但不限于:
- 数据损坏或丢失。
- 机密信息遭到未授权访问。
- 关键资源的性能或可用性受损。
示例场景与缓解策略:
- 用户可能要求一个能访问文件系统的 agent 删除不该删除的文件, 或读取包含敏感信息的文件内容。缓解措施: 将 agent 限定为只能使用特定目录, 且只允许读写可安全读写的内容。可以进一步通过在容器中运行来对 agent 进行沙箱隔离。
- 用户可能要求一个对外部 API 有写权限的 agent 向该 API 写入恶意数据, 或从中删除数据。缓解措施: 为 agent 提供只读 API key, 或将其限定为只能使用已能抵御此类滥用的端点。
- 用户可能要求一个能访问数据库的 agent 删除表或修改 schema。缓解措施: 将凭据的作用域限定为 agent 需要访问的表, 并考虑只发放只读凭据。
如果你正在构建需要访问文件系统、API 或数据库等外部资源的应用, 建议咨询贵公司的安全团队, 以确定如何最好地设计和保护你的应用。
报告漏洞
请通过电子邮件 security@langchain.dev 报告安全漏洞。这能确保相关问题得到及时分诊并按需处理。