1

我知道 XACML 可以提供细粒度的控制来访问基于各种类别(如主题、资源、环境和操作)的资源。

但是,一旦进行评估并决定获取资源,我们是否可以控制用户/主题可以访问资源中的哪些字段/属性?

例如,有一个名为 Customer 的资源具有以下字段。

客户:{姓名,isVip,电话号码}

现在,如果我有一个销售代理访问此信息,我想仅向少数选定的销售代理显示 VIP 客户的电话号码。

这应该是对 GET customer info API 的响应:

由普通销售代理调用:{name, isVip}

由选定的销售代理致电:{name, isVip, phoneNumber}

我可以使用 XACML 实现这一目标吗?如果是,如何?

4

1 回答 1

1

是的你可以!

这完全取决于您如何定义资源以及如何为它们编写策略。在您的情况下,您有一个“客户”类型的对象,并且您有一个“字段”类型的对象。Name、isVip 和 phoneNumber 都是 Customer 对象的字段。

您可以编写以下策略:

  • 销售代理可以查看同一地区客户的客户对象
  • 如果销售代理已分配给该客户,则他们可以查看该客户的 phoneNumber 字段

执法将如何运作?您必须看到的是,您可以在进出的途中执行执法...... 换句话说,你可以问

  • 销售代理 Alice 可以查看客户记录 #123 吗?
  • 允许

然后应用程序获取记录。当记录通过 PEP 从底层系统返回时,您检查记录,发现您有 3 个部分值得控制访问,然后您询问 PDP:

  • 销售代理 Alice 可以查看客户记录 #123 的 #1、#2、#3 部分吗?
  • 允许,拒绝,拒绝

顺便说一下,后者是多决策请求的一个例子。您可以在此处此处阅读有关 MDP的更多信息。

于 2016-12-21T18:38:55.447 回答