2

我们有多个 API 模块。

我会为每个 API 模块编写一个策略,还是一个具有不同规则的策略?

假设我有一个 API

http://api.example.org/api/v1/users

http://api.example.org/api/v1/products

http://api.example.org/api/v1/purchases

每个 api 都会有一个策略,每个资源都有不同的规则吗?还是 PolicySet 中每个 API 模块的策略?

我是 XACML 的新手,我们正在编写我们的第一个策略。OASIS的介绍只是说:

Policy 表示单个访问控制策略,通过一组规则表示。

不是很清楚解决我的需求...

4

1 回答 1

3

这是一个很好的问题。一个简短的回答是:这取决于您的用例。这里没有对与错。您可以在单个策略甚至单个规则中保护所有 API。

也就是说,请考虑整个策略生命周期:

  • 需求收集
  • 政策设计
  • 政策创作
  • 政策评估
  • 政策审核
  • 政策协调

在每个阶段,谁负责?同一群人?不同的球队?您希望如何在您的公司中扩大 XACML 的使用范围?您想要一个中央创作团队吗?当您需要支持 10、100、1000 个 API 时,这会起作用吗?答案很可能是否定的。

这意味着您希望让 API 所有者编写他们自己的策略。他们可以选择他们在政策中定义的内容,允许的内容,不允许的内容。

然后,您想拥有一个“策略打包者”角色。该人收集并汇总所有已编写的策略。有不同类型的政策:

  • 应用程序策略(由 API 所有者编写的)
  • 运营政策(关于全球检查的政策,例如上午 9 点之前禁止访问或来自流氓国家的禁止访问......)
  • 合规和监管政策(关于 HL7、PCI-DSS 和其他法规的政策)

在全局策略集中,您可以组合策略(或策略集,因为策略集可以包含策略集)。您可以选择您的组合算法来满足您的需要。一个典型的就是first-applicable。这意味着无论哪个政策/规则首先应用,都会在总体上获胜。一个更保守的选择是deny-unless-permit,它拒绝所有请求,除非策略明确允许访问。

回到您的具体示例,根据过去的经验,我很想编写 3 个不同的策略,每个 API 一个。您可以使用策略引用和策略集引用来链接和重用策略。

Axiomatics(免责声明:这是我工作的公司)提供有关 XACML 和基于属性的访问控制的研讨会。

于 2014-04-29T21:21:45.377 回答