REST API GET集合调用的记录级访问控制
因此,我正在进行下一个项目,该项目需要更详细的访问控制功能(即Sally只能查看其部门的产品) 我了解了基于角色的访问控制模型或属性访问控制模型如何“包装”API调用,以确定给定用户是否可以对给定对象执行所述操作 当你处理一个返回一组记录的GET调用时,我总是被卡住。如果我要求API从该端点获取一个包含20条记录的页面,我无法获取20条记录,然后在返回这些记录之前对它们运行基于代码的授权检查,因为我很可能不会返回20条记录 似乎授权检查必须在数据库中关闭和/或在数据库查询之前进行,方法是向查询调用添加其他筛选器(即,在product department=clothing的情况下也进行筛选器)REST API GET集合调用的记录级访问控制,rest,rbac,abac,role-base-authorization,Rest,Rbac,Abac,Role Base Authorization,因此,我正在进行下一个项目,该项目需要更详细的访问控制功能(即Sally只能查看其部门的产品) 我了解了基于角色的访问控制模型或属性访问控制模型如何“包装”API调用,以确定给定用户是否可以对给定对象执行所述操作 当你处理一个返回一组记录的GET调用时,我总是被卡住。如果我要求API从该端点获取一个包含20条记录的页面,我无法获取20条记录,然后在返回这些记录之前对它们运行基于代码的授权检查,因为我很可能不会返回20条记录 似乎授权检查必须在数据库中关闭和/或在数据库查询之前进行,方法是向查询调
有谁有更具体的实现示例或想法如何以性能的方式实现吗?正如David提到的,XACML可以在数据库级别用于过滤 为数据库实现XACML 下图是针对SQL的,但可以用作任何数据库技术的通用示例 让我们看看它是如何工作的:
Axiomatics为关系数据库和HADOOP提供了支持。Axiomatics策略服务器本机支持JSON和REST配置文件。通常使用一组单独的表来指定每个域对象和用户的角色和访问权限()。通过面向方面编程(AOP),通常可以从业务方法本身中提取出这样的检查,这些检查用方法所需的支持需求进行注释,以便用户能够执行。如果成功,将调用该方法,AOP逻辑可能会过滤掉调用用户不允许的任何域对象。虽然这是有意义的,但也意味着当分页条件传递到DAO中时,它只返回与条件匹配的前X条记录。不过,在AOP筛选器完成其工作后,返回的记录可能少于X条,即使数据库中确实有X条符合条件和身份验证检查的记录。因此,在查询运行后发生的AOP逻辑不起作用。最理想的版本是,如果流式处理结果并在返回n个条目后停止。分页视图也不能保证每个条目都能看到一次。想象一下,如果在两个连续的页面请求期间插入或删除数据。这可能会影响显示项目的页面。它可能会在多个页面上显示相同的项目(取决于插入的频率),或者根本不显示,因为删除了前一个项目,条目将从下一页的顶部移动到当前页的底部。您可以使用XACML在API或API网关甚至数据库中进行数据级过滤…David,我再次在谷歌上搜索,但是您是否有任何特定的资源可以推荐在数据库级别使用XACML。到目前为止,我还没有在这方面看到任何东西,我宁愿不要重新发明轮子。迈克尔,谢谢,这是有道理的。我怀疑在数据层上一定发生了什么事情,从而影响了SQL语句的标准。上一次我看Axiomatics时,它的定价基本上只供企业使用。小企业/创业版有没有未来?嗨,杰夫,没问题。我认为将此对话转移到电子邮件中可能会很好,我可以帮助您获得有关小型企业/初创企业版本的信息。你能给我发封电子邮件吗mgood@axiomatics.com? 另外,如果我回答了你的问题,你能接受我的回答吗?:-)