【maven实战】34-Nexus的权限管理

时间:2021-11-08 16:20:11

在组织中使用Nexus的时候往往会有一些安全性需求,例如希望只有管理员才能配置Nexus只有某些团队成员才能部署构件,或者更细一些的要求,例如每个项目都有自己的Nexus宿主仓库,且只能部署项目构件至该仓库中。Nexus提供了全面的权限控制特性,能让用户*地根据需要配置Nexus用户,角色,权限等。

Nexus的访问控制模型:Nexus是基于权限做访问控制的,服务器的每一个资源都有相应的权限来控制,因此用户执行特定的操作时就必须拥有必要的权限。管理员必须以角色的方式将权限赋予Nexus用户。例如要访问Nexus界面,就必须拥有Status-(read)这个权限,而Nexus默认配置的角色UI:Basic UI Privileges就包含了这个权限,再将这个角色分配给某个用户,这个用户就能访问Nexus界面了。用户可以被赋予一个或多个角色,角色可以包含一个或多个权限,角色还可以包含一个或多个角色。

Nexus预定义了三个用户,以admin登陆后,单击页面左边导航栏中的User链接,就能看到所有已定义用户的列表,如下图:

【maven实战】34-Nexus的权限管理

这三个用户对应了三个权限级别:

admin:该用户拥有对Nexus服务的完全控制,默认密码为admin123

deployment:该用户能够访问Nexus,浏览仓库内容,搜索,并且上传部署构件,但是无法对Nexus进行任何配置,默认密码为deployment123

anonymous:该用户对应了所有未登录的匿名用户,他们可以浏览仓库并进行搜索

在User页面中,管理员还可以添加用户。单击*的Add按钮,选择Nexus User,然后在用户配置面板中配置要添加用户的ID,名称,Email,状态,密码以及包含的角色,最后单击Save按钮即可。

可以单击任何一个用户,然后选择页面下方的Role Tree选项卡,以树形结构详细地查看该用户所包含的角色以及进一步的权限。如下图是anonymous用户的角色树。

【maven实战】34-Nexus的权限管理

理解各个角色的意义对于权限管理至关重要。nexus预定义的一些常用且重要的角色包括:

UI:Basic UI Privileges:包含了访问Nexus界面必须的最基本的权限。

UI:Repository Browser:包含了浏览仓库页面所需要的权限。

UI:Search:包含了访问快速搜索栏及搜索页面所需要的权限。

Repo:All Repositories(Read):给予用户读取所有仓库内容的权限,没有仓库的读权限,用户将无法在仓库页面上看到实际的仓库内容,也无法使用Maven从仓库下载构件。

Repo:All Repositories(Full Control):给予用户完全控制所有仓库内容的权限。用户不仅可以浏览,下载构件,还可以部署构件及删除仓库内容。

Nexus包含了一个特殊的匿名角色(Nexus Anonymous Role),默认配置下没有登陆的用户都会拥有该匿名角色的权限。这个匿名用户角色实际包含了上述所列角色中,除Repo:All Repositories(Full Control)之外的所有角色包含的权限。也就是说,匿名用户可以访问基本的Nexus界面,浏览仓库内容及搜索构件。

除上述角色外,Nexus还预定义了很多其他角色,它们往往都对应了一个Nexus的功能。例如,UI:Logs and Config Files包含了访问系统日志及配置文件所需要的权限。