即时实时GraphQL与SQL Server的内置授权

2021-06-18 19:40:05

在此帖子中,我们总结了Hasta如何使用SQL Server作为数据源。 以下是几种方式可以在几分钟内轻松尝试使用SQL Server: 运行强大的查询,支持嵌套过滤,排序和SQL Server类型,如GIS。 创建粒度模型级RLS样式授权规则,以保护内部或外部消费者的GraphQL API。 Hasura将GraphQL查询编译为单个SQL查询,包括谓词授权规则的谓词,防止典型的n + 1问题获取数据。 Hasura还使用JSON聚合来避免从数据库中获取笛卡尔产品,并避免不必要的Ser / de开销。 扩展GraphQL API并通过作为REST或GraphQL API添加自己的解压器来添加任何语言或框架的自定义业务逻辑

云或最终用户网/移动应用中的现代工作负载需要通过HTTP的灵活性和安全的API来访问数据

使用Hasura瞬间获取数据,而不是必须构建和维护API服务器

Hasura服务开始运行后,您可以动态配置其元数据。通过使用UI或使用API​​呼叫或使用Git Repo中的代码来实现此配置,以与CI / CD管道集成。

元数据将连接配置捕获到上游数据源,模型之间的关系以及它们的授权策略.PASURA生成GraphQL架构并呈现可以消耗的GraphQL API。

HASURA将通过HTTP呼叫传入的GraphQL API呼叫,然后将其编译到T-SQL查询中,包括具有谓词俯冲的授权策略。

由于其编译器,类似的架构Hasura可以完全避免n + 1个问题。它可以积极弥补,并发出对上游数据源的最小次数。

Hasura而不是解析GraphQL查询片,Hasura尝试将查询的部分编译为单个数据源,进入umstread源可以理解的单个查询 - 在这种情况下,SQL Server的SQL查询。

当处理授权规则时,这尤其有影响,因为它们可以被编译成与数据获取相同的查询,而不是必须对数据源进行多个请求。

Hasura在数据库中运行JSON聚合。与连接返回笛卡尔产品的连接相比,这可以防止序列化/解除级化开销并从数据库中传输更大的数据。

Hasura还执行连接池,因为它作为服务运行,并且还会自动利用准备的语句。

这允许整个GraphQL +数据获取查询和规划过程尽可能高效,因为只处理变量(参数或会话变量)并且已经处理了不同层的查询并计划。

HASURA在表格和视图上生成GraphQL API - 支持即将推出存储过程和功能。这允许底层数据模型的演变而不影响生成的GraphQL API。

用户可以添加限制对特定实体(或行)及其字段(列)访问权限的授权规则。这些授权规则将具有API请求的会话属性访问的数据的属性组合。

Hasura可以从JWT索赔或来自Webhook中提取会话信息。这允许Hasura直接接受最终用户API调用并安全地处理它们。阅读文档有关其工作原理的更多信息。

以下是可以使用Hasura实现的授权规则类型的一些示例:

#允许访问音乐曲目,如果曲目和#39; s album' sartist_id是当前的用户角色:用户表:tracks.album.Artist_ID = session.user_id

这允许Hasura用户为&#39创建特定应用程序角色或范围的特定子图;公共'范围,允许访问ID和用户名字段角色:Public表:Profile Permission:字段:[ID,用户名]#为'私人'范围,允许访问所有字段,但仅当会话用户是该数据角色的所有者:私有表:配置文件权限:字段:[ID,用户名,电子邮件]规则:profile.id = session.user_id

比较列值允许通过在数据库的另一部分中的动态变化的值来控制访问权限

这使得&#34的建模东西;访问层和#34;在订阅计划中,或从动态ACL表的查找非常简单

Hasura撰写使用A&#34保留行和现场级别访问的角色;基于单元格的无效"合并算法

这允许Hasura用户轻松地将不同数据模型的所有权和可见性进行规范。

示例:允许用户获取自己的配置文件的所有字段,但只有一些areN' t他们的文件1私有:用户可以访问自己的数据,以及该数据的所有字段:[ID,电子邮件,用户名]#角色2公共:用户可以访问任何人和#39; s的数据,但只有ID和用户名#角色3 =角色1 +角色2用户:[公共,私有]#现在可以安全地分配给所有记录的用户角色-in用户

如果您' d喜欢查看Hasura + SQL Server如何为您的团队工作通过我们的网站联系我们。

#7074突变:在GraphQL API上运行Inserts,更新,删除,存储过程和交易

#7075事件触发器:触发具有原子捕获的HTTP Webhook,并且至少在数据库内更改数据时保证(阅读更多)

#7076远程加入:将SQL Server中的型号连接到来自其他API服务的模型(GraphQL或REST)

请使用覆盖/订阅上述问题以保持更新!我们估计7月/ 8月2021年7月/ 8月的增量发布可以通过增量发布。