我想实现一个基于属性的访问控制系统。 当我想要执行“读取”或“更新”操作时,我已经知道此操作可能影响的资源,并且无论是否允许操作都可以返回该资源。 但是,我不知道如何处理“搜索”动作,是搜索结果的资源。如果是这种情况,我如何检查用户是否可以执行操作而不事先进行实际搜索?
答案 0 :(得分:0)
您可以选择如何建模。操作是操作类别的单独属性。 XACML标准甚至为您提供了一个名为urn:oasis:names:tc:xacml:1.0:action:action-id
的标准属性,您可以使用该属性。
当我对策略进行建模时,我会创建一个名为objectType
的仿真属性,其值可能是我想控制访问权限的不同类型的项目。
然后我将操作应用于这些对象类型。例如,我会有一个政策声明
医生可以查看与他们有关系的病人的病历。
至于搜索,您必须考虑搜索的含义:您可以控制对搜索的访问权限。例如,基本用户无法搜索。高级用户可以搜索。这是功能访问控制的一个例子,即控制对功能(搜索)的访问。
您可以将其限制为特定的对象类型,例如
医生可以搜索医疗记录
搜索结果可能只包含允许医生查看的内容。这意味着您事实上已经触发了2次授权检查:查看能力和搜索能力。
我希望这会有所帮助。