跳转到主要内容

从不受信任的输入构建可信的SQL查询

项目描述

HeimdaLLM

发音为[ˈhaɪm.dɔl.əm]或HEIM-dall-EM

HeimdaLLM是一个强大的静态分析框架,用于验证LLM生成的结构化输出是否安全。它目前支持SQL。

简单来说,它有助于确保AI不会破坏您的系统。

Heimdall Build status Docs GitHub Sponsors PyPI License: Commercial License: AGPL v3 Coverage Status

考虑以下自然语言数据库查询

how much have i spent renting movies, broken down by month?

从这个查询(以及一些上下文),一个LLM可以生成以下SQL查询

SELECT
   strftime('%Y-%m', payment.payment_date) AS month,
   SUM(payment.amount) AS total_amount
FROM payment
JOIN rental ON payment.rental_id=rental.rental_id
JOIN customer ON payment.customer_id=customer.customer_id
WHERE customer.customer_id=:customer_id
GROUP BY month
LIMIT 10;

但您如何确保LLM生成的查询是安全的,并且它只能访问授权的数据呢?

HeimdaLLM对生成的SQL进行静态分析,以确保只使用特定的列、表和函数。它还自动编辑查询以添加LIMIT并删除禁止的列。最后,它确保存在一个列约束,将结果限制为仅用户数据。

它所有这些都通过本地方式完成,不使用AI,使用传统的语法和解析器

✅ Ensuring SELECT statement...
✅ Resolving column and table aliases...
✅ Allowlisting selectable columns...
   ✅ Removing 2 forbidden columns...
✅ Ensuring correct row LIMIT exists...
   ✅ Lowering row LIMIT to 10...
✅ Checking JOINed tables and conditions...
✅ Checking required WHERE conditions...
✅ Ensuring query is constrained to requester's identity...
✅ Allowlisting SQL functions...
   ✅ strftime
   ✅ SUM

验证后的查询可以执行

月份 总金额
2005-05 4.99
2005-06 22.95
2005-07 100.78
2005-08 87.82

想要快速开始?请点击这里

🥽 安全性

我正在进行对HeimdaLLM的独立安全审计。在此审计完成之前,我建议不要在没有仔细风险评估的情况下将HeimdaLLM用于任何生产系统。这些审计是自筹资金的,所以如果您将从中获得信心带来的价值,请考虑赞助我咨询商业许可的兴趣

为了了解一些潜在的安全漏洞,请查看攻击面以了解风险和缓解措施。

📚 数据库支持

  • Sqlite
  • MySQL
  • Postgres

其他顶级关系型SQL数据库正在进行积极开发。为了帮助我确定优先级,请对您想看到的数据库支持进行投票。

Static Badge

📜 许可证

HeimdaLLM既适用于开源也适用于商业使用。

🤝 开源许可证

开源许可证是AGPLv3,允许免费使用、修改和分发,适用于个人或开源使用。对于商业使用,AGPLv3有一些关键义务,您的组织可能希望避免。

  • 源代码披露:您在网络中做出的任何更改和使用的代码必须公开,可能会泄露您的专有修改。

  • 版权条款:如果将HeimdaLLM集成到您的应用程序中,整个应用程序可能需要遵守AGPLv3条款,包括您应用程序的代码披露。

  • 服务提供商:如果您使用HeimdaLLM提供服务,您的客户也需要遵守AGPLv3,从而复杂化合同。

📈 商业许可证

商业许可证消除了上述限制,为您的业务运营提供灵活性和保护。此商业许可证适用于商业用途。请在此处咨询商业许可证。

License Inquiry

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

heimdallm-1.0.3.tar.gz (60.0 kB 查看散列)

上传时间

构建分发

heimdallm-1.0.3-py3-none-any.whl (92.6 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面