构建XACML策略的最佳实践是什么?

时间:2014-04-29 20:16:48

标签: api rest access-control xacml xacml3

我们有多个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都有一个策略,每个资源都有不同的规则吗? 或者它是策略集中每个API模块的策略吗?

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

  

策略表示单个访问控制策略,表示为   一套规则。

不太清楚解决我的需求......

1 个答案:

答案 0 :(得分:3)

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

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

  • 需求收集
  • 政策设计
  • 政策制定
  • 政策评估
  • 政策审核
  • 政策对帐

在每个阶段,谁负责?同一组人?不同的团队?您希望如何在公司中扩展XACML的使用范围?你想要一个中央创作团队吗?当您需要支持10,100,1000 API时,它会起作用吗?答案很可能没有。

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

然后,您希望拥有“策略打包程序”角色。该人员收集并汇编所有已编写的政策。有不同类型的政策:

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

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

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

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