我试图在MarkLogic中创建具有对给定数据库的权限的用户。我从安全指南文档页面中读取MarkLogic,发现您可以对给定的URI、集合或函数设置权限。
对集合的权限可以帮助我将数据库中给定的集合标记为只对给定的一组用户具有可读性,但还有一些用户可以在不同的集合中创建和修改文档(或者创建没有集合的文档)。
例如:
我有两个数据库:
和两个用户:
如何设置UserTest在数据库Test上具有读取/更新/插入/执行权限而不能修改或读取任何数据库Test2的权限
发布于 2015-12-12 01:39:37
每个数据库可以与一个专用的安全数据库相关联。按照描述用例的方式("UserTest将具有在数据库测试上读取/更新/插入/执行权限,并且不能修改或读取任何数据库Test2"),您可能需要考虑用于测试和Test2数据库的专用安全数据库。
另一种方法是对这两个数据库的角色使用不同的文档权限。在插入时,您可以在文档级别为给定角色设置读/更新/插入/执行权限,也可以在插入后用xdmp: document ()(保留以前的权限)或xdmp:document()(重写以前的权限)更改它们。例如,您可以有一个用于数据库测试的角色测试阅读器和一个用于数据库Test2的角色测试2-读取器,并确保(1)您的UserTest用户具有Test角色(但不是Test2-Reader角色),以及(2)插入到测试数据库中的所有文档都将读取功能与Test角色(但不是Test2-Reader角色)匹配,等等(其他功能相同)。
如果对此进行显式控制听起来需要做大量工作,请注意,可以声明默认文档权限,以便在用户和角色级别隐式应用。
最后,如果在文档插入期间完全不设置权限(如果在用户或角色级别没有定义隐式/默认权限),则只有具有管理角色的用户才能读取/update/ insert /execute。
以下是“理解和使用安全指南”中有关文档权限的相关部分:85471
发布于 2015-12-10 10:22:14
数据库没有用户级规范.但是请记住,数据库本身是不可访问的--它可以通过链接到特定数据库的应用程序来访问。除非您允许人们运行eval并允许他们针对另一个数据库来运行,否则您的应用程序将将人员保存在指定的数据库中。(注意: ML8高级HTTP服务器稍微改变了这一点,因为您可以在每个请求中动态切换数据库-但是关于被固定在单个数据库上的规则仍然有效)。
我认为唯一对您有用的其他项是定义用户可以写入哪个URI前缀的能力,但这并不否定应用程序级别决定要访问哪个DB的事实。
https://stackoverflow.com/questions/34196665
复制相似问题