Assimilation Project(AP,同化項目),是指在無需明顯增長集中化資源的情況下,發現和監視未知規模網絡上的基礎設施、服務及相關設備的解決方案。
有關IBM AS/400中小型多用戶商業計算機系統超高可靠性的段子還挺多的。其中流傳最廣的一個版本是:某天,一位IBM維護工程師到客戶那里維護一臺AS/400服務器,倒霉的接待員工根本不知道那名維護工程師在說啥。最終,該系統在一個隔離空間中被找到了,它已經在那里默默扛起業務數年,完全被人遺忘,無人打理。
從可靠性視角看,這簡直太棒不過。從安全角度看,根本就是噩夢。它代表的是美國前防長拉姆斯菲爾德臭名昭著的“未知的未知”論調——有些事,我們不知道我們不知道,比如在缺乏證據表明,伊拉克政府向恐怖組織提供大規模殺傷性武器的情況下,英美還是攻打了伊拉克。
阿蘭·羅伯森,開源開發者,高可用性專家,常問人需要多長時間才能發現他們的服務中有哪些是未受監管的。典型的答案落在3天到3個月的范圍內。諷刺的是,逆命題(當前提供了哪些服務)卻很好回答,因此分清所提供的服務清單與未受監管的服務列表之間的差異應該是很容易的。但,正如前文所述例子顯示的,要找出都有哪些服務在運行,并不總是那么容易的,想知道這些未受監管的服務是否配置良好,就更不容易了。
幸運的是,羅伯森正在研究該問題的解決方案,以開源項目AP的形式。AP可對你的系統執行詳盡的服務發現和入庫動作,并存儲結果數據以便查詢。一旦數據被收集,AP會將系統當前狀態與一組IT安全最佳實踐進行對比。默認使用數據交換標準協會(DISA)/美國國家標準與技術研究所(NIST)的安全技術實施指南(STIG),但也可定義自己的或選擇適合自身情況的最佳實踐。
羅伯森還寫了一系列博客文章指導用戶怎樣快速啟動和運行AP:
1. 15分鐘獲得更好的安全
2. 1小時獲得更好的安全
3. 半天得到更好的安全
15分鐘那篇引導你通過簡單幾步下載自動化安全腳本來安裝AP及其依賴項。推薦在以root用戶運行之前花點時間看一下腳本,也多花不了幾分鐘。
AP依賴于高性能圖形數據庫Neo4j,因此,下一步就是啟動數據庫、核心服務和庫存代理。幾分鐘之內,發現和收集就完成了,可產生單個系統的快照。示例如下:
大紅框醒目地顯示出該系統沒遵從 DISA/NIST STIG 安全配置建議。
此時,可開始對數據庫進行一系列查詢,查看還有其他什么發現。輸入 assimcli query list 命令,可得到可用查詢的完整列表。要查看與系統互動的IP完整列表,發出 assimcli query allips 命令。示例結果如下:
從結果中顯示的 CADMUS COMPUTER SYSTEMS 可以推斷出測試用例運行在一臺VirtualBox虛擬機上。剩下的條目能看出測試用例的系統十分簡單,定義的主機名極少,納米探針代理運行了極短一段時間。一個產品網絡會有大得多的IP列表,相關信息也豐富得多。只要有新的IP在網絡中出現,列表就會新增一條,因此該列表會隨時間長大。這是發現你現有服務的第一步。AP能從這一個系統擴展到監視你所訪問的所有系統。
羅伯森系列文章的第三部分里,他描述了如何遠程安裝納米探針代理到你網絡中的其他系統中。納米探針會向CMA服務器發送收集到的配置數據,這樣你就能像上文描述的一樣,可視化你網絡中提供的服務了。短期內,不止你網絡中的系統和服務,甚至它們的配置及距離你理想配置的差距,都能被顯示出來。
此處可再引用一句拉姆斯菲爾德的名言:“你與現有系統對戰,而不是與可能想要或希望擁有的系統對戰……” AP提供了一種方法,可確保知曉自身確實擁有的東西。