如何在特定环境下禁止指定用户使用MarkLogic 10的declareUpdate()?
MarkLogic 10 拦截指定用户调用
declareUpdate()的权限配置方案 declareUpdate()是MarkLogic中用于显式声明当前脚本为更新事务的内置语句,要拦截指定用户调用该语句、触发执行报错,只需移除对应账号关联角色的对应权限即可,具体操作如下:
需移除的核心权限
- 首先收回用户/所属角色的
xdmp:update权限,这是执行所有更新事务的基础前置权限,用户缺失该权限时,只要脚本调用declareUpdate()启动更新事务,会直接抛出SEC-PERMISSIONDENIED权限不足错误。 - 额外需要排查并移除用户关联的其他更新类权限,避免用户通过隐含更新的操作绕过限制:
any uri权限的更新、执行权限- 指定集合、目录、文档的插入、更新、删除权限
admin、rest-admin、manage-admin等高权限角色内置的更新权限
效果验证
使用目标用户身份执行测试脚本:
declareUpdate(); xdmp.documentInsert("/test/permission-check.json", {"status": "test"});
权限配置正确的场景下,执行脚本会立即返回权限拒绝的报错,符合拦截要求。
配置建议
建议不要直接修改系统默认角色的权限规则,可以单独创建一个仅含查询权限的自定义角色,给需要限制的用户绑定该角色,同时收回原有带更新权限的角色,避免配置改动影响其他业务场景。
内容的提问来源于stack exchange,提问作者user3095863
相关产品推荐
相关产品推荐

