首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在基于属性的访问控制中表示分页?

如何在基于属性的访问控制中表示分页?
EN

Stack Overflow用户
提问于 2022-08-23 04:04:50
回答 1查看 64关注 0票数 1

基于我的粗略阅读,ABAC,即基于属性的访问控制,归结为将属性附加到主题、资源和其他相关实体(例如要对资源执行的操作),然后计算一组布尔值函数来授予或拒绝访问。

具体而言,让我们考虑XACML。

当要访问的资源在到达决策引擎(在XACML中为XACML)之前已知时,这是很好的,例如查看某个帐户的移动号码,在这种情况下,可以使用单个select SQL轻松检索要访问的资源的属性。

但是,考虑一下清单中的银行帐户交易历史记录(每页10个条目)的功能,让我们假设只有帐户所有者才能查看此历史记录,并且事务存储在一个表transaction中的数据库中,如下所示:

代码语言:javascript
复制
transaction_id, from_account_id, to_account_id, amount, time_of_transaction

此函数没有访问控制,通常使用如下SQL编写:

代码语言:javascript
复制
select to_account_id, amount, time_of_transaction
from transaction
where from_account_id = $current_user_account_id

问题是:如何用XACML来表达这一点?显然,以下方法不实用(由于性能原因):

  • 使用from_account_id属性将事务表中的每个事务附加到
  • 使用account_id属性附加(列出事务历史的请求)
  • 决策规则R是if from_account_id == account_id then grant else deny
  • 决策引擎fetch循环事务表,根据R计算每一行,如果被授予,则发出行,util 10行被发出。

我假设会有一些预处理步骤来先获取事务(不需要咨询决策引擎),然后使用获取的事务查询决策引擎,看看它是否有访问权限?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-24 04:38:44

您所指的是所谓的“开放端”或以数据为中心的授权i.e.access控制一个未知数目(或大量)的项目,如银行帐户的交易历史记录。通常,ABAC (和XACML或阿尔法)都有一个事务性的决策模型(例如,Alice记录#123?)

值得注意的是,XACML/ALFA中的策略在这两种情况下都不会改变。你仍然会写一些大意如下的东西:

  • 用户可以查看一个事务历史项目,如果所有者是XXX,并且日期小于YYY.

您需要考虑的是如何问这个问题(从PEP到PDP)。有两种方法可以做到这一点:

  1. 使用多决策剖面捆绑您的请求,例如,Alice可以查看条目#1,#2,#3.
  2. 使用开放式请求。这被称为部分评估或反向查询。公理学有一个解决这个用例的产品(ARQ)。

实际上,我在这个所以贴中写了一个类似的用例。

HTH,大卫

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73453024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档