MarkLogic 9.0.8.2
我们已经开发了用于在MarkLogic中获取和设置数据的API,所有数据均以xml格式存储在MarkLogic中
现在,我们想通过以下操作向外部用户公开此API端点
因此,我们想基于权限创建不同的用户凭据,例如ReadOnly,ExecuteOnly。
我们需要选择什么所有角色和权限以确保它们可以执行允许的任务?
有很多方法来组织安全性,但是基础知识通常非常相似。我会为您提供一种模式,我个人认为这是一种良好的做法,并且可能被证明是进一步扩展的良好起点。
以4个角色开始,这些角色本身没有属性。在名称中输入“ read”,“ insert”,“ update”和“ node-update”。
使用名称中的'defaults'创建第五个角色,并为其赋予上述四个角色的默认权限,其中功能与角色名称相匹配(因此对读取角色为'read',等等)。
然后为读者,作家和维护者等抽象概念创建更高级别的角色。 Reader仅继承读取角色,writer继承读取器,插入,更新和默认值。维护者继承作家。删除是一种特殊的更新,无法区分。节点更新是更新的子集。我还没有遇到想要允许节点更新而不是完整更新的用例。
此处的执行权限没有意义,因为这仅适用于模块,不适用于文档。执行特权用于允许使用特定功能(例如sem:sparql,xdmp:http-get等)。将它们适当地应用于读者和作家角色。
请避免对上述任何角色应用更危险的执行特权,例如xdmp:spawn和xdmp:eval。如果您有需要,请创建一个用于Amps的角色(可以在名称中添加“ amps”),并确保仅将该角色用于Amps,并且切勿将其分配给角色或用户。
最后但并非最不重要的一点是,您经常在同一数据库中拥有多个不同的数据集,并且您可能希望独立控制文档对它们的访问。在这种情况下,请考虑研究分区安全性,而不是为每个数据集创建一组不同的角色。
HTH!