Security 基于MarkLogic权限的角色创建

Security 基于MarkLogic权限的角色创建,security,permissions,marklogic,roles,Security,Permissions,Marklogic,Roles,MarkLogic 9.0.8.2 我们开发了API来获取和设置MarkLogic中的数据,所有数据都以xml格式存储在MarkLogic中 现在,我们希望通过以下操作将此API端点公开给外部用户 阅读 插入 更新 节点更新 执行 管理员 因此,我们希望根据权限创建不同的用户凭据,如只读、可执行 我们需要选择哪些角色和权限,以确保它们能够执行允许的操作?注意:权限是关于文档访问的,权限是关于功能访问的。特定中的执行权限仅适用于模块访问,不适用于文档访问 有许多方法可以组织您的安全性,但基本原

MarkLogic 9.0.8.2

我们开发了API来获取和设置MarkLogic中的数据,所有数据都以xml格式存储在MarkLogic中

现在,我们希望通过以下操作将此API端点公开给外部用户

  • 阅读
  • 插入
  • 更新
  • 节点更新
  • 执行
  • 管理员
因此,我们希望根据权限创建不同的用户凭据,如只读、可执行


我们需要选择哪些角色和权限,以确保它们能够执行允许的操作?

注意:权限是关于文档访问的,权限是关于功能访问的。特定中的执行权限仅适用于模块访问,不适用于文档访问

有许多方法可以组织您的安全性,但基本原理通常相当相似。我将为你提供一个模式,我个人认为这是一个很好的实践,并且可能被证明是进一步扩展的一个很好的总体起点。 从4个本身没有属性的角色开始。在名称中添加“读取”、“插入”、“更新”和“节点更新”

创建名称中带有“defaults”的第五个角色,并为其授予上述四个角色的默认权限,其中功能与角色名称匹配(因此读取角色为“read”,等等)

然后为抽象概念(如读者、作者和维护者)创建更高级别的角色。Reader只继承read角色,writer继承Reader、insert、update和defaults。维护者继承了编写者。删除是一种特殊的更新,不可区分。节点更新是更新的子集。我还没有遇到过这样一个用例:我希望允许节点更新,但不允许完全更新

执行权限在这里毫无意义,因为这只适用于模块,而不适用于文档。执行权限用于允许使用特定的功能(如sem:sparql、xdmp:httpget等)。将它们适当地应用于读者和作者角色

避免对上述任何角色应用更危险的执行权限,如xdmp:spawn和xdmp:eval。如果您遇到这样的需求,那么创建一个用于AMP的角色(您可以在名称中的某个位置添加“Amps”),并确保您仅将该角色用于AMP,而不要将其分配给角色或用户

最后但并非最不重要的一点是,在同一数据库中通常有多个不同的数据集,您可能希望独立地控制对它们的文档访问。在这种情况下,考虑查看分区安全性,而不是为每个数据集创建一组不同的角色。


您需要为每个角色设置一个角色,并在每个文档上为每个角色设置匹配的文档权限。也许你也想用执行权限来控制事情。到目前为止你自己都试过什么?如果您先展示自己的努力,则更容易提供帮助。感谢grtjn的回复,实际上我开始创建角色,但后来我对需要从上述角色的可用角色/权限中选择什么感到困惑,我需要将其用于系统和API,所以这就是我的努力,然后我不知道选择什么感谢grtjn的详细解释,这就是我想知道的,很棒的堆。