gpt4 book ai didi

rest - REST API GET Collection 调用的记录级访问控制

转载 作者:行者123 更新时间:2023-12-03 23:54:27 25 4
gpt4 key购买 nike

因此,我正在开展下一个需要更详细访问控制功能的项目(即 Sally 只能查看她部门中的产品)。

我了解基于角色的访问控制模型或属性访问控制模型如何“包装”API 调用以确定给定用户是否可以对给定对象执行所述操作。

当您处理返回记录集合的 GET 调用时,我一直卡住的地方。如果我从该端点向 API 请求包含 20 条记录的页面,我无法获得 20 条记录,然后在返回它们之前对这些记录运行基于代码的授权检查,因为我很可能不会返回 20 条记录。

似乎授权检查必须在数据库中关闭和/或在数据库查询之前通过向查询调用添加额外的过滤器(即也过滤产品部门=服装的位置)进行。

任何人有任何更具体的实现示例或想法如何以高性能方式实现?

最佳答案

正如 David 所提到的,XACML 可用于数据库级别的过滤。
为数据库实现 XACML
下图适用于 SQL,但可以用作任何数据库技术的一般示例。
Example diagram for SQL database dynamic authorization
让我们看看这是如何工作的:

  • SQL 语句被截获。
  • 向实现 XACML
  • 的外部授权服务发送查询
  • 授权引擎 (PDP) 评估用 XACML 或 ALFA(XACML 的实现)编写的相关策略。
  • 它可以查询外部属性源 (PIP) 以获取更多信息。
  • 结果:SQL 语句被动态修改为只为用户检索授权数据。

  • 这将如何在应用程序中使用
    您选择使用的 XACML 实现理想情况下将具有您选择的语言的 SDK 或支持 XACML REST 配置文件。两者都可以集成到您的应用程序中。
    鉴于您正在使用 REST 调用,我认为您不必添加太多代码来将您的应用程序与 XACML 的实现集成。
    为 API 网关实现 XACML
    此集成中使用的原则是 API 网关能够调用第三方服务。
    在这种情况下,第三方服务是您的 XACML 实现的策略决策点 (PDP)。实现必须支持 REST/JSON。
    API 网关被配置为向 PDP 发送细粒度的授权请求。
    使用 PDP 公开的 REST/JSON 接口(interface)发出请求。 PDP 然后返回响应。
    XACML 的 JSON 配置文件扩展了请求/响应模式,允许请求和响应都以 JSON 编码而不是传统的 XML 编码。这使得请求和响应更容易阅读,并且尺寸也更小,因此传输的数据更少。
    XACML 的实现
    对于 XACML 实现的完整列表, you can check this list on Wikipedia .
    完全公开 - 我与 David Brossard 一起为 Axiomatics 工作,他为 XACML 设计了 ​​JSON 配置文件以与 REST 配置文件一起使用。
    公理提供 Axiomatics Data Access Filter对于 关系数据库 SmartGuard对于 哈多普 . Axiomatics Policy Server 本身支持 JSON 和 REST 配置文件。

    关于rest - REST API GET Collection 调用的记录级访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51200415/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com