从不受信任的输入构建可信的SQL查询
项目描述
HeimdaLLM
发音为[ˈhaɪm.dɔl.əm]或HEIM-dall-EM
HeimdaLLM是一个强大的静态分析框架,用于验证LLM生成的结构化输出是否安全。它目前支持SQL。
简单来说,它有助于确保AI不会破坏您的系统。
考虑以下自然语言数据库查询
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数据库正在进行积极开发。为了帮助我确定优先级,请对您想看到的数据库支持进行投票。
📜 许可证
HeimdaLLM既适用于开源也适用于商业使用。
🤝 开源许可证
开源许可证是AGPLv3,允许免费使用、修改和分发,适用于个人或开源使用。对于商业使用,AGPLv3有一些关键义务,您的组织可能希望避免。
-
源代码披露:您在网络中做出的任何更改和使用的代码必须公开,可能会泄露您的专有修改。
-
版权条款:如果将HeimdaLLM集成到您的应用程序中,整个应用程序可能需要遵守AGPLv3条款,包括您应用程序的代码披露。
-
服务提供商:如果您使用HeimdaLLM提供服务,您的客户也需要遵守AGPLv3,从而复杂化合同。
📈 商业许可证
商业许可证消除了上述限制,为您的业务运营提供灵活性和保护。此商业许可证适用于商业用途。请在此处咨询商业许可证。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
heimdallm-1.0.3.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 38da659e9da9339458378be1322f81fc3c1b1a76249ae0a0ec9f7ffb81ecdc63 |
|
MD5 | ef4c700014577a59121107987243e96d |
|
BLAKE2b-256 | a91a32d5e0561342262a164e1a310fb9389a11af47b73b8b3fb1eee485cfd4f2 |