我们有多个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只是说:
策略表示单个访问控制策略,表示为 一套规则。
不太清楚解决我的需求......
答案 0 :(得分:3)
这是一个很好的问题。简短的回答是:它取决于您的用例。这里没有对错。您可以在单个策略甚至单个规则中保护所有API。
也就是说,考虑整个政策生命周期:
在每个阶段,谁负责?同一组人?不同的团队?您希望如何在公司中扩展XACML的使用范围?你想要一个中央创作团队吗?当您需要支持10,100,1000 API时,它会起作用吗?答案很可能没有。
这意味着您希望让API所有者编写自己的策略。他们可以选择他们在政策中定义的内容,允许的内容,不适用的内容。
然后,您希望拥有“策略打包程序”角色。该人员收集并汇编所有已编写的政策。有不同类型的政策:
在全局策略集中,您可以组合策略(或策略集,因为策略集可以包含策略集)。您可以选择符合您需求的组合算法。典型的是first-applicable
。这意味着无论采用哪种政策/规则,总体上都会获胜。更保守的选择是deny-unless-permit
,除非政策明确允许访问,否则拒绝所有请求。
回到您的具体示例,根据过去的经验,我很想写出3个不同的策略,每个API一个。您可以使用策略引用和策略集引用来链接和重用策略。
Axiomatics(免责声明:这是我工作的公司)提供有关XACML和基于属性的访问控制的研讨会。