虽然GraphQL提到安全性应该委托给底层业务逻辑,但GraphQL的本质非常适合安全性。
在GraphQL中,Query可以有一个resolve方法,每个字段也可以有一个resolve方法。在某种程度上,如果我们为每个查询及其结果的所有字段提供解析器,我们将遍历图表。
现在,“基于属性的访问控制”越来越受欢迎,其方法是在
中定义安全策略实现“基于属性的访问控制”的一种方式是,它修改被触发的查询以仅获取符合条件的数据。这可以通过包装解析器来完成。
第二种方式“基于属性的访问控制”可以在GraphQL中实现,是使用字段级解析器来决定是否公开该字段。
我对社区的问题是在GraphQL中实现“基于属性的访问控制”的各种方法是什么,特别是利用GraphQL的优势
干杯, 罗希特夏尔
答案 0 :(得分:0)
有两种方法可以使用ABAC来保护数据 - 无论是GraphQL; SQL; HQL ...... - 就像你说的那样:
'SELECT a, b, c FROM t'
并将其转换为'SELECT a, b, c FROM t WHERE...'
Axiomatics通过其数据访问过滤器进行转换。1.的好处是它是不引人注目的。它位于数据源的前面,原则上可以用于几种类型的数据源,例如SQL,GraphQL ... 2.的好处是你不需要代理组件,配置是目标系统的原生。
无论如何,是的,由于不同实体之间的关系,图形数据库非常适合ABAC。从某种程度上说,关系型数据库也有,但可能不那么明显。