MarkLogic 9.0.8.2
我们开发了API来获取和设置MarkLogic中的数据,所有数据都以xml格式存储在MarkLogic中。
现在,我们希望通过以下操作向外部用户公开这个API端点
因此,我们希望根据ReadOnly、ExecuteOnly等权限创建不同的用户凭据。
我们需要选择哪些角色和权限来确保它们能够执行允许的操作?
发布于 2019-11-15 11:20:52
注意:权限是关于文档访问的,权限是关于函数访问的。特定的执行权限仅适用于模块访问,而不适用于文档访问。
有许多方法来组织您的安全,但基本的基础通常是相当相似的。我将为您提供一个模式,我个人认为这是一个很好的实践,并且可能被证明是进一步扩展的一个良好的总体起点。
从没有属性本身的4个角色开始。将“读”、“插入”、“更新”和“节点更新”放在名称中。
在名称中创建具有“默认值”的第五个角色,并为上述四个角色赋予默认权限,其中功能与角色名称匹配(读角色的“读”,等等)。
然后为读者、作家和维护者等抽象概念创建更高级别的角色。读取器只继承读取角色,写入器继承读取器、插入、更新和默认设置。维护者继承了作家。删除是一种特殊的更新,不可区分。节点更新是更新的子集。我没有遇到允许节点更新的用例,但不是完全更新。
在这里,执行权限没有任何意义,因为这只适用于模块,而不适用于文档。执行特权用于允许使用特定功能(如sem:sparql、xdmp:http-get等)。将它们适当地应用于读者和作者角色。
避免对上述任何角色应用更危险的执行特权,如xdmp:spawn和xdmp:eval。如果您遇到了这样的需求,那么创建一个用于Amps的角色(您可以将' Amps‘放在某个名称中),并确保您只对Amps使用该角色,并且从不将其分配给角色或用户。
最后但并非最不重要的一点是,您通常在同一个数据库中有多个不同的数据集,您可能希望独立地控制对它们的文档访问。考虑查看“间隔安全性”,而不是在这种情况下为每个数据集创建一组不同的角色。
哈哈!
https://stackoverflow.com/questions/58766979
复制相似问题