You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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会更高效:

  1. 先获取目标权限的ID:
    curl -u admin:your-admin-password http://your-nexus-domain/service/rest/v1/security/privileges | jq '.[] | select(.name=="你的目标权限名称") | .id'
    
  2. 查询拥有该权限的角色和用户:
    curl -u admin:your-admin-password http://your-nexus-domain/service/rest/v1/security/privileges/[权限ID]/assigned-to
    
  3. 查询角色的所有权限(含继承的):
    curl -u admin:your-admin-password http://your-nexus-domain/service/rest/v1/security/roles/[角色ID]/privileges?includeInherited=true
    

内容的提问来源于stack exchange,提问作者Florian

火山引擎 最新活动