Nexus的權限管理
在部署構件到Nexus上的時候我們注意到配置一個驗證信息,那么,Nexus的權限管理是怎么樣的呢?我們又怎么合理地分配權限呢?
Nexus的訪問權限模型
Nexus是基于權限做訪問控制的,服務器的每一個資源都有對應的權限來控制,因此用戶執行特定的操作時就必須擁有必要的權限。管理員必須以角色的方式將權限賦予Nexus用戶。用戶可以被賦予一個或者多個角色,角色可以包含一個或多個權限,角色還可以包含一個或者多個其他角色。
Nexus上預定義了三個用戶,用admin登錄后,單擊頁面左邊的User鏈接,看到如下圖列表:
圖1
admin:該用戶擁有Nexus的全部權限,默認密碼為admin123。
deployment:該用戶能夠訪問Nexus,瀏覽倉庫內容、搜索、上傳部署構件,但是不能對Nexus進行任何配置,默認密碼為deployment123。
anonymous:該用戶對應了所有未登錄的匿名用戶,它們可以瀏覽倉庫并進行搜索。
Nexus預定義了一些常用且重要的角色,如:
UI:Basic UI Privileges:包含了訪問Nexus界面必須的最基本的權限。
UI:Repository Browser:包含了瀏覽倉庫頁面所需要的權限。
UI:Search:包含了訪問快速搜索欄及搜索界面所需要的權限。
Repo:All Repositories (Read):給予用戶讀取所有倉庫內容的權限。沒有倉庫的讀權限用戶將無法再倉庫頁面看到實際的倉庫內容,也無法使用Maven從倉庫下載構件。
Repo:All Repositories (Full Control):給予用戶完全控制所有倉庫內容的權限。用戶不僅可以瀏覽、下載構件,還可以部署構件及刪除倉庫內容。
為項目分配獨立的倉庫
如果我們將所有項目的快照版本和發布版本構件都部署到同樣的倉庫,就有潛在的沖突以及安全問題。我們不想讓項目A的部署影響到項目B,也不想讓項目B的部署影響到項目A,那么解決方法就是為每個項目分配獨立的倉庫,并且只將倉庫的部署、修改和刪除權限賦予該項目的成員,其他用戶只能擁有讀取、下載和搜索該倉庫內容的權限。步驟如下:
1、創建項目庫
單擊Nexus界面左邊導航欄中的Repositories鏈接,在右邊的面板中選擇Add,在下拉菜單中選擇Hosted Repository。接著在下面的面板中填寫倉庫的ID和名稱,選擇Repository Policy為Release,選擇Deployment Policy為Allow Redeploy,其他的選項默認。點擊Save按鈕。
圖2
圖3
2、創建權限
有了倉庫以后,就需要創建基于倉庫的增、刪、查、改權限了。Nexus中增刪查改的權限是基于Repository Target建立的。單擊Nexus界面導航欄中的Repository Targets鏈接,可以看到Repository Target的相關信息。
點擊頁面導航欄中“Security”->“Privileges”->單擊Add按鈕,選擇“Repository Target Privilege”。如圖4填寫相關內容:
圖4
點擊“Save”后就能在列表中看到相應的增、刪、改、查權限。如圖5:
圖5
3、創建角色
如果我們創建一個包含上述權限的角色的話就能更方便管理了。創建角色步驟如下:
從導航的“Roles”鏈接進入角色界面,單擊上方的“Add按鈕”選擇“Nexus Role”。填寫相關內容,并將fooReleases項目分配給角色。如圖6填寫相關信息:

圖6
4、創建用戶
點擊導航的“Users”鏈接,進入用戶界面,然后單擊“Add”按鈕并選擇“Nexus User”。填寫相關內容。并授予用戶角色信息。如圖7。

圖7
按照上面步驟創建該項目的Snapshots庫。
Nexus的調度任務
在第一次配置Nexus的時候,Maven索引怎么也下載不下來,然后在網上找了一些資料才知道有調度任務這個東西的存在。后來有在《Maven實戰》中看到。摘錄如下:
Nexus提供了一系列可配置的調度任務來方便用戶管理系統。用戶可以設定這些任務運行的方式,例如每天、每周等。調度任務會在適當的時候在后臺運行。
要建立一個調度任務,單擊左邊導航菜單中的“Scheduled Tasks”,然后再右邊的界面上單擊Add按鈕,按照頁面上的提示填寫相關內容。
Nexus包含了以下幾種類型的調度任務:
o Download Indexs:為代理倉庫下載遠程索引。
o Empty Trash:清空Nexus的回收站,一些操作實際是將文件移到了回收站中。
o Evict Unused Proxied Items From Repository Caches:刪除代理倉庫中長期未被使用的構件緩存。
o Expire Repository Cache:Nexus為代理倉庫維護了遠程倉庫的信息以避免不必要的網絡流量,該任務清空這些信息以強制Nexus去重新獲取遠程倉庫的信息。
o Publish Indexs:將倉庫索引發布成可供m2eclipse和其他Nexus使用的格式。
o Purge Nexus Timeline:刪除Nexus的時間線文件,該文件用于建立系統的RSS源。
o Rebuild Maven Metadata Files:基于倉庫內容重新創建倉庫元數據文件maven-metadata.xml,同時重新創建每個文件的校驗和md5與sha1。
o ReIndex Repositories:為倉庫編纂索引。
o Remove Snapshots From Repositories:以可配置的方式刪除倉庫的快照構件。
o Synchronize Shadow Repository:同步虛擬倉庫的內容(服務基于Maven1)。