2017年6月18日 星期日

[經驗分享]開源IT資產管理系統 - Open-AudIT



企業營運必定與電腦系統脫離不了關係,每一部電腦散落在各部門、各辦公室,若是較具規模的公司,甚至會有跨好幾個地區的辦公室存在。

就 IT 管理者來說,如何管理這些電腦的資產情況就是一個挑戰,例如掌握電腦上所安裝軟體、硬體等,以及軟體、硬體的異動情況,如果沒有系統來輔助,IT 管理者就只能疲於奔命。



常見情況


最經常遇到的場合,就是忽然公司詢問「Windows 電腦有幾台?」、「這幾台電腦上面安裝了多少記憶體?」、「某台電腦現在是配發給誰使用?」、「某電腦何時購入的?」這類問題。

更有甚者,遇到軟體授權清查時,會問到「那幾台電腦安裝了 Office 2013?」、「Photoshop CS6 安裝了幾套?」、「某電腦的 Windows Update 安裝了那些項目?」更令人頭痛的問題。


IT資產管理令人頭痛




問題歸納


在我的當時情境來說(七、八年前),希望能利用系統,至少幫我節省人工點閱以及手工維護試算表檔案的繁雜與費時工序,羅列如下:


  • 可控管企業內部電腦
  • 記錄電腦硬體安裝資訊
  • 記錄電腦軟體安裝資訊
  • 記錄電腦更新檔安裝資訊
  • 記錄歷史異動資訊




市面方案


其實市面上已經有許多方案爭相推出,功能也一個比一個豐富。




企業中使用微軟方案佔了絕大多數,當然使用微軟方案的整合度是理想,不過我認為 SAM 缺少了硬體等方面的功能,是比較可惜之處。(SAM 我沒有使用,如有錯誤請不吝指正)










至於 X-ITasset、SmartIT、WinMatrix,這幾套都是國內相當優秀的 IT 資產管理產品,幾乎涵蓋了大部份 IT 資產管理所需要的功能,其中我個人蠻推薦精品科技的 X-ITasset,操作介面容易上手,與 AD 也完美整合。

在我當時詢價的印象中,其實費用都不算太高,軟體也夠成熟,導入帶來的效益比是相當划算。





沒錢方案


沒錯,花錢能解決問題,產品性價比亦不錯,但是承襲過去文章,各位都知道問題在那裡。


這張投影片真好用,一次製作常常用到(誤)



好吧,沒錢有沒錢的作法。

我不會因為沒有經費就坐以待斃,因為我想做的事很多。

既然如此,就捲起袖子自己幹!





當時,我用還在唸大學時寫的一套系統延伸改寫,可以結合 AD 撈取電腦清單作許多管理功能。


AD 網域管理幫手


這一套「AD 網域管理幫手」就是為了簡化自己的工作內容,利用閒暇時間進行開發,採用了 WMI、ADSI、.. 等技術。


AD 網域管理幫手:軟體管理


在當時的需求,網域管理幫手讓我可以一次對 AD 所有電腦的軟體、硬體資訊撈取,還有程序、服務、印表機管理、軟體移除。

但後來才意會到一個嚴重問題:這支程式必需目標電腦有開機且可連線,否則資訊都無法讀取

當然改寫程式架構,加入伺服器與資料庫可以解決這些問題,但實際上時間並不容許我如此做,所以就直接來找有沒有可用的開源方案。





開源方案一


當時在網路上做了許多功課後,首選是它,OCS Inventory-NG。




OCS Inventory 是最多人討論的開源套件,當時它功能陽春,不過最嚴重的問題是介面。(目前 2.0 後的版本介面大改,好看很多)






我沒有留著當時架設的系統畫面,不過可以來看看當時版本的網路抓圖:

本圖取自 OCS Inventory-NG Wiki


當時的版本除了介面問題,另外就是 agent 部署與支援性並不理想,試用了一段時間之後,就果斷放棄。

不過我還是要重申一次:現在的 OCS Inventory-NG 介面已經大幅進化,已非是當日的吳下阿蒙。




開源方案二


既然放棄了 OCS 當然要繼續找 Plan B,又花了好一段時間,終於讓我找著一款"還算"合乎需求的開源套件。




為什麼特別加上「還算」二字呢?

因為他的介面對我來說還是不滿意的,但是再挑下去只剩下商業方案,而功能有符合需求,所以我.......妥。協。了!

列舉 Open-AudIT 我所注視的重點功能:

  • 開源方案
  • 可控管 Windows、Linux、macOS 三大作業系統
  • 可主動、被動搜集電腦資訊
  • 可搜集硬體、軟體資訊
  • 可搜集「部份軟體」序號
  • 記錄軟、硬體異動資訊
  • 記錄作業系統 Update 安裝資訊
  • 記錄設備資產資訊,如編號、管理者、購買日、保固商、使用地...等
  • 記錄系統管理者修改過程記錄
  • 提供自訂欄位功能
  • 可整合 SNMP、NMAP、SSH 等方式檢測主機



清單簡介


進入系統清單,預設有幾種分類模式提供參考。

列表:群組、地區、網路、作業系統、...



點選任一個項目,可以進到該分類的內容清單,例如點選 Windows Computers。

Windows Computers


進入分類後,就會在清單顯示此分類的所有裝置,當我點選的是「Windows Computers」,這裡就會顯示系統中所記錄的 Windows 電腦,以及電腦名稱、IP位址、作業系統版本、狀態等。

再點選電腦名稱,可以進入到該電腦的詳細列表,將是資訊內容最豐富的地方。


裝置內容:Windows


點入裝置內容後,左邊是資訊分類,右方及下方是資訊內容。

裝置內容:摘要


剛進來的第一個畫面是 Summary,最常使用的資訊:電腦名稱、IP、作業系統、型號、製造商等。


左邊的分類提供非常詳細的資訊,只要簡單點選就會讓資訊在頁面最下方呈現。

左邊所有功能分類展開如下:

裝置內容:資訊類別詳細展開圖



以下呈現分類功能點入後的幾張抓圖,可以感受到他提供資訊的詳細程度。

裝置內容:購買資訊


裝置內容:地點資訊


裝置內容:稽核記錄


裝置內容:異動記錄


裝置內容:Windows 細節


裝置內容:服務


裝置內容:已安裝軟體


裝置內容:已安裝軟體序號


裝置內容:已安裝軟體更新


裝置內容:記憶體與磁碟


裝置內容:網路裝置與設定


裝置內容:印表機與佇列內容


裝置內容:路由表資訊


裝置內容:群組與使用者


裝置內容:記錄檔位置


裝置內容:系統變數



裝置內容:Linux


Linux 的資訊畫面提供部份如下:

裝置內容:摘要


裝置內容:磁碟資訊


裝置內容:Nestat 與路由表資訊


裝置內容:服務


裝置內容:已安裝套件


裝置內容:記錄檔位置


裝置內容:使用者


裝置內容:系統變數



部署 Agent


要搜集裝置資訊,Open-AudIT 提供主動掃描(需預先提供 Windows/Linux 管理員帳密)或被動搜集(從 Agent 回報),而 Open-AudIT 最令我激賞的正是 Agent 回報部份。

其它資產管理系統所提供的 Agent 大都是編譯後的封裝執行檔,我們除了用它沒有別的辦法,而 Open-AudIT 的 Agent 卻是完全公開原始碼的 Script 檔,這對於部署或想要自訂內容的我來說根本是大禮啊!

Scripts 檔案下載


點選功能表 [Admin] > [Scripts] > [List Scripts],即可進入系統已經提供的 Script 樣版。

以 Windows 來說,下載 [audit_windows.vbs] 並修改 [url] 參數為你的 Open-AudIT 主機,[submit_online] 設為 y,就可將檔案丟到 AD 群組原則的 Logon Script 去,往後每次開機就會自動收回 Client 電腦的所有資訊。


群組原則管理:Logon Script



如果是 Linux 電腦,下載 [audit_linux.sh] 至 Linux 主機上,給予執行權限與註冊執行時間,就可以定期回收資訊。



測試 Agent


如果資訊回收遇到問題,可以修改 .vbs 或 .sh 檔,將裡面的 create_file 參數設為 y,接著在該電腦上手動執行它,完成後會在同一個目錄產生一個 .xml 檔案。

Agent 生成 Xml 資訊檔


可以觀察是否正確擷取電腦資訊內容,若無誤,下一步可以手動將資料回傳至伺服器,確認過程是否有問題。

開啟 [https://Open-AutIT主機/open-audit/index.php/system/] 進入資訊回傳頁。

Xml 資訊回傳頁


將 .xml 檔案內容全選複製,貼到圖中的輸入框並勾選 [Debug Display],最後按下 [Submit]。

Xml 資訊處理過程


如果內容無誤,處理完成後系統上就會增加這一筆主機資訊。



資料匯出


在任何清單列表頁面,右上方的搜尋欄左邊有幾個按鈕,點選後即可匯出目前所在列表的資料。

資料匯出功能


如圖中紅框所示,由左至右分別為:

  • .xls 檔案格式
  • .json 檔案格式
  • .csv 檔案格式
  • .html 檔案格式
  • .xml 檔案格式





其它應用:群組內查詢


點入某個群組清單後,即可對此群組做查詢,例如點選 [Queries] > [Installed - Software]。

Query:已安裝軟體



其它應用:啟用更多查詢或自訂


若預設的查詢定義不夠用,可以點選 [Queries] > [Activate Queries] 啟用更多的項目。

如果還是不夠,您可以點選 [Queries] > [Import Query] 自訂,建立的範本可以參考內建的項目依樣修改




其它應用:啟用更多群組


預設的檢視較少,如果想要有更多的檢視群組,請點選 [Admin] > [Groups] > [Activate Groups],進入後再綠色的勾上按一下,進行啟用。

啟用更多檢視群組



其它應用:增加自訂群組


如果內建的檢視群組還是不夠用,您可以自行定義,進入 [Groups] > [Add Group]。

預設新增畫面有一些選項可以挑選,不過我是習慣直接用 SQL 語法來操作。


增加自訂群組


如圖所示,我想要增加一個「有安裝 Office 2013 電腦」的群組,即可在 SQL 中予以撰寫,存檔後就有一個屬於自己的快速檢視群組。

檢視自訂群組清單


有了自訂群組,往後就可以很方便的取用最常使用的角度,不需要每次都辛苦的進行搜尋,省下大量的操作時間。




其它應用:增加自訂欄位


不同應用場景會衍生不同需求,欄位不夠亦可自訂,點選 [Admin] > [Fields] > [Create Fields]。

增加自訂欄位



更多應用


上述是針對一般常用功能做經驗分享,若有更多需求,官網文件是很好的參考資料。







其它方案


雖然使用 Open-AudIT 長期以來情況良好,我仍有在關注其它同類型套件。

其中一套是它,Opsi。



Opsi 也是開源的資產管理系統,他比 Open-AudIT 更多出了幾個亮點:

  • 自動化作業系統安裝
  • 自動軟體部署與更新管理
  • 軟體授權池管理 


其中「軟體授權」是我最想要掌握的功能之一,因為 Open-AudIT 雖然有記錄軟體授權的功能,但是卻沒有「軟體授權池管理」的概念,我想要做軟體授權數量管控,避免商業軟體授權有超用或未回收的快速管理。

因此,Opsi 將可能是我未來要轉移使用的套件,值得期待。




結論


我使用 Open-AudIT 已經超過 6 年,是一套非常穩定的系統,而它的功能對於大部份企業 IT 應用場景來說,已經足夠使用。


如果您買不起商業方案,不妨利用開源套件來協助自己的 IT 工作更加便利,省下時間,讓人生有更多的空間。