我正在寻求有关在 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 粒度权限。
有人可以提供有关如何实现这种粒度级别的说明或代码示例吗?
可以创建适当的
细粒度权限,而不是授予
manage-admin
角色,将其分配给某个角色,然后将该角色分配给用户。
找到您要授予权限的 MY_DATABASE_NAME 数据库的 ID,并使用它来授予具有该 ID 的权限。
例如,如果 MY_DATABASE_NAME ID 为 123456,则授予:
http://marklogic.com/xdmp/privileges/admin/database/123456
此类别的权限授予用户管理特定资源(例如,具有指定标识符的数据库)的能力。此权限是通过在该种资源(例如“数据库”)的管理员权限后加上特定标识符(例如,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() 用于该森林标识符)。