使用MarkLogic'设置文档的权限;s REST API

使用MarkLogic'设置文档的权限;s REST API,rest,permissions,marklogic,Rest,Permissions,Marklogic,我正在尝试使用RESTAPI指定对MarkLogic 6数据库中文档的权限 这是我正在发送的权限元数据(permissions.xml): 当我事后查看权限时,我看到: arole (update) brole (read) rest-reader (read) rest-writer (update) 我希望它只拥有arole和brole的权限 文档中说,“如果没有明确设置权限,则使用MarkLogic REST API创建的文档对REST阅读器角色具有读取权限,对REST编写器角色具有更新

我正在尝试使用RESTAPI指定对MarkLogic 6数据库中文档的权限

这是我正在发送的权限元数据(
permissions.xml
):

当我事后查看权限时,我看到:

arole (update)
brole (read)
rest-reader (read)
rest-writer (update)
我希望它只拥有arole和brole的权限

文档中说,“如果没有明确设置权限,则使用MarkLogic REST API创建的文档对REST阅读器角色具有读取权限,对REST编写器角色具有更新权限。”(是的,我知道,这个示例并不创建新文档。但是,如果我通过rest api添加一个新文档并同时使用多部分内容+元数据消息设置权限,它会做同样的事情)

使用相同的用户和数据库,通过直接xquery调用(例如
xdmp:document insert
with permissions)设置权限,效果与预期相同

如何防止RESTAPI添加这些额外权限

编辑:

有一张带有MarkLogic的票,没有我知道的目标日期或版本


如果其他人遇到这种情况,他们确实给了我一个解决办法:创建新角色(或更改现有角色),并授予他们rest reader和/或rest writer“执行”权限,而不是让他们继承rest reader/rest writer角色,或让用户直接分配rest reader/rest writer角色。

内部函数
docmodupd:write permissions
始终将输入权限与
xdmp:defaul的输出相结合t-permissions
。它这样做是为了确保
rest reader
可以读取文档,并且
rest writer
可以更新文档。据我所知,没有API可以控制这种行为


如果您有省略这些额外权限的强大用例,请与支持部门联系。

通过REST而不是对文档的通用访问来完成访问的最简单方法是创建自定义角色,您可以将其分配给用户以代替内置角色。如果需要,请为该角色添加默认的读/写权限(这样,您就不必指定每个文档插入的权限),以及您希望角色具有的REST执行权限(,)。不要将REST读取器或REST编写器内置角色分配给自定义角色,只分配执行权限


然后,自定义角色将能够使用所有REST终结点,但不会对通过REST接口创建的所有文档具有通用访问权限。搜索和文档获取请求将只返回自定义角色有权访问的文档,并且它们将无法修改其角色没有更新权限的文档.

只是为了确保我了解rest阅读器角色如何使用文档权限…这意味着所有可以访问rest api的用户都可以看到此文档,对吗?
curl --anyauth --user user:pass -X PUT -T permissions.xml \
    -H "Content-type: application/xml" \
    "http://localhost:8003/v1/documents?uri=/test/test.xml&category=permissions"
arole (update)
brole (read)
rest-reader (read)
rest-writer (update)