如何在 MarkLogic 中配置细粒度权限以仅允许更新特定数据库的配置,同时排除所有其他数据库?

问题描述 投票:0回答:1

我正在寻求有关在 MarkLogic 中配置细粒度权限的指导,以允许仅更新特定数据库的数据库配置,不包括其他数据库。

例如,我有一个名为“custom-rest-admin”的用户,并为特定 REST API 分配了角色

rest-writer
rest-admin
manage-admin
。该数据库名为
MY_DATABASE_NAME
。使用以下命令,我成功更新了数据库属性:

curl --anyauth --user custom-rest-admin:pass -X PUT -d@"./database-config.json" -i -H "Content-type: application/json" "http://localhost:8002/manage/v2/databases/MY_DATABASE_NAME/properties"

但是,由于

manage-admin
角色的广泛范围,我发现我还可以更新其他数据库的属性,如下所示:

curl --anyauth --user custom-rest-admin:pass -X PUT -d@"./database-config.json" -i -H "Content-type: application/json" "http://localhost:8002/manage/v2/databases/OTHER_DATABASE_NAME/properties"

我已经查看了 MarkLogic 文档中有关粒度权限的部分,但尚未找到有关此场景的具体指南:MarkLogic 粒度权限

有人可以提供有关如何实现这种粒度级别的说明或代码示例吗?

marklogic
1个回答
0
投票

可以创建适当的

细粒度权限
,而不是授予manage-admin角色,将其分配给某个角色,然后将该角色分配给用户。

找到您要授予权限的 MY_DATABASE_NAME 数据库的 ID,并使用它来授予具有该 ID 的权限。

例如,如果 MY_DATABASE_NAME ID 为 123456,则授予:

http://marklogic.com/xdmp/privileges/admin/database/123456

https://docs.marklogic.com/11.0/guide/security-guide/en/capsular-privileges/categories-of-capsularity/privileges-to-administer-a-specific-resource.html

此类别的权限授予用户管理特定资源(例如,具有指定标识符的数据库)的能力。此权限是通过在该种资源(例如“数据库”)的管理员权限后加上特定标识符(例如,database-ID)来授予的,这会产生特定权限(例如,http:// marklogic.com/xdmp/privileges/admin/database/database-ID)。该权限可能意味着读取和写入配置文件的一部分的权限。它还授予为特定资源调用各种内置函数的能力(例如,http://marklogic.com/xdmp/privileges/xdmp-forest-clear/forest/forest-ID特权允许调用 xdmp: forest-clear() 用于该森林标识符)。

© www.soinside.com 2019 - 2024. All rights reserved.