基于 MarkLogic 权限的角色创建
Role creation based on MarkLogic permissions
马克逻辑 9.0.8.2
我们开发了API在MarkLogic中获取和设置数据,所有数据都以xml格式存储在MarkLogic
中
现在我们想通过以下操作向外部用户公开此 API 端点
- 阅读
- 插入
- 更新
- 节点更新
- 执行
- 管理员
所以我们想根据权限创建不同的用户凭据,如 ReadOnly、ExecuteOnly。
我们需要哪些所有角色和权限 select 以确保他们可以执行他们被允许执行的操作?
预先注意:权限与文档访问有关,特权与功能访问有关。具体执行权限仅适用于模块访问,不适用于文档访问。
组织安全的方法有很多种,但基础知识通常非常相似。我将为您提供一个模式,我个人认为这是一个很好的做法,并且可能被证明是进一步扩展的一个很好的一般起点。
从 4 个本身没有属性的角色开始。在名称中输入 'read'、'insert'、'update' 和 'node-update'。
创建第五个名称为 'defaults' 的角色,并为其赋予上述四个角色的默认权限,其中能力与角色名称匹配(因此 'read' 用于读取角色等).
然后为 reader、编写者和维护者等抽象概念创建更高级别的角色。 Reader只继承read角色,writer继承reader、insert、update和defaults。维护者继承作者。删除是一种特殊的更新,并且不可区分。节点更新是更新的子集。我还没有遇到过我想允许节点更新但不允许完整更新的用例。
执行权限在这里没有意义,因为它只适用于模块,不适用于文档。执行权限用于允许使用特定功能(如 sem:sparql、xdmp:http-get 等)。将它们适当地应用于 reader 和作家角色。
避免对上述任何角色应用更危险的执行权限,如 xdmp:spawn 和 xdmp:eval。如果您遇到这种需求,请创建一个用于 Amps 的角色(您可以在名称中的某处放置 'amps'),并确保您仅将该角色用于 Amps,并且永远不要将其分配给角色或用户。
最后但同样重要的是,您通常在同一个数据库中有多个不同的数据集,并且您可能希望独立控制对它们的文档访问。在这种情况下,考虑研究 Compartment Security 而不是为每个数据集创建一组不同的角色。
HTH!
马克逻辑 9.0.8.2
我们开发了API在MarkLogic中获取和设置数据,所有数据都以xml格式存储在MarkLogic
中现在我们想通过以下操作向外部用户公开此 API 端点
- 阅读
- 插入
- 更新
- 节点更新
- 执行
- 管理员
所以我们想根据权限创建不同的用户凭据,如 ReadOnly、ExecuteOnly。
我们需要哪些所有角色和权限 select 以确保他们可以执行他们被允许执行的操作?
预先注意:权限与文档访问有关,特权与功能访问有关。具体执行权限仅适用于模块访问,不适用于文档访问。
组织安全的方法有很多种,但基础知识通常非常相似。我将为您提供一个模式,我个人认为这是一个很好的做法,并且可能被证明是进一步扩展的一个很好的一般起点。
从 4 个本身没有属性的角色开始。在名称中输入 'read'、'insert'、'update' 和 'node-update'。
创建第五个名称为 'defaults' 的角色,并为其赋予上述四个角色的默认权限,其中能力与角色名称匹配(因此 'read' 用于读取角色等).
然后为 reader、编写者和维护者等抽象概念创建更高级别的角色。 Reader只继承read角色,writer继承reader、insert、update和defaults。维护者继承作者。删除是一种特殊的更新,并且不可区分。节点更新是更新的子集。我还没有遇到过我想允许节点更新但不允许完整更新的用例。
执行权限在这里没有意义,因为它只适用于模块,不适用于文档。执行权限用于允许使用特定功能(如 sem:sparql、xdmp:http-get 等)。将它们适当地应用于 reader 和作家角色。
避免对上述任何角色应用更危险的执行权限,如 xdmp:spawn 和 xdmp:eval。如果您遇到这种需求,请创建一个用于 Amps 的角色(您可以在名称中的某处放置 'amps'),并确保您仅将该角色用于 Amps,并且永远不要将其分配给角色或用户。
最后但同样重要的是,您通常在同一个数据库中有多个不同的数据集,并且您可能希望独立控制对它们的文档访问。在这种情况下,考虑研究 Compartment Security 而不是为每个数据集创建一组不同的角色。
HTH!