Sonatype Nexus Repository 3权限查询:查看拥有指定权限的用户与角色
在Sonatype Nexus Repository 3中查询权限相关的两种操作方法
刚好我对Nexus 3的权限管理熟得很,给你一步步拆解这两个查询操作,不管是用后台UI还是API都能搞定:
一、查找拥有特定权限的用户与角色
这一步主要找的是直接分配了目标权限的用户和角色,操作很直观:
- 登录Nexus管理员后台,点击顶部导航的「Security」菜单,选择「Permissions」选项
- 在权限列表的搜索框里输入你要找的权限名称(比如
nx-repository-view-npm-*-write),定位到目标权限后点击它的名称进入详情页 - 切换到「Assigned To」标签页,这里会清晰列出所有直接被分配了该权限的角色和用户——注意哦,这里只显示直接分配的,通过角色继承来的不会出现在这里
二、确认用户/角色是否隐含该特定权限
所谓「隐含权限」,大多是通过角色继承(比如子角色继承父角色权限)或者角色嵌套来的,得分角色和用户两种情况来查:
针对角色的隐含权限检查
- 同样在「Security」菜单下选择「Roles」,找到你要检查的角色并进入详情页
- 切换到「Privileges」标签页,这里会展示该角色的所有权限:直接分配的权限会直接显示,通过父角色继承来的权限会标注继承来源(比如「Inherited from xxx role」)
- 用页面的搜索框直接搜目标权限,就能快速判断这个角色是否通过继承隐含了该权限
针对用户的隐含权限检查
- 进入「Security」菜单的「Users」选项,找到目标用户进入详情页
- 先看「Roles」标签页,记下用户所有直接拥有的角色;然后对每个角色,按照上面角色的检查方法,逐层查看角色的继承关系和权限,就能梳理出用户是否通过角色获得了隐含权限
- 更快捷的方式是切换到用户详情页的「Privileges」标签页,这里会汇总用户所有直接和间接(通过角色)获得的权限,直接搜索目标权限就能一键确认
批量/自动化查询(REST API方式)
如果需要批量查询或者做自动化操作,用Nexus的REST API会更高效:
- 先获取目标权限的ID:
curl -u admin:your-admin-password http://your-nexus-domain/service/rest/v1/security/privileges | jq '.[] | select(.name=="你的目标权限名称") | .id' - 查询拥有该权限的角色和用户:
curl -u admin:your-admin-password http://your-nexus-domain/service/rest/v1/security/privileges/[权限ID]/assigned-to - 查询角色的所有权限(含继承的):
curl -u admin:your-admin-password http://your-nexus-domain/service/rest/v1/security/roles/[角色ID]/privileges?includeInherited=true
内容的提问来源于stack exchange,提问作者Florian




