自從Mac OS X 10.8的美洲獅開始,Apple引進了一個叫Gatekeeper的技術,用來保護系統免收外來Apps對系統安全的破壞,這也是Apple所作出的技術上對付曾經爆發的被閃回感染的事件。蘋果的官方文檔。
這個設定在System Preferences中的Security中給普通使用者一個直觀而簡單的設定選項:
在這裡,給了使用者兩個蘋果認為適合的安全選項,“所有Mac App商店下載的軟體”都是認為安全的,或者“Mac App商店下載以及特定的開發人員的軟體”被認可安全,因為每個在蘋果註冊的開發人員都有一個特定的開發人員ID,並可以通過xcode環境對自己開發/發布的軟體進行數位簽章,Mac系統可以讀取/驗證每個軟體中的這個數位簽章是否有效。當然了最後一個選項是關閉這個安全措施-完全關閉。
據說Mac OS X 10.7.5也引進了這個技術,我還沒有安裝。
Gatekeeper看上去挺美,可是之通過上面的方式進行配置,是不適用企業環境的,或者說那兩個選項在企業環境中不夠靈活。
首先,我們在部署或者重新安裝系統的時候,目前普遍的方式都是核心系統影像+軟體安裝包的形式。而核心影像最安全通用的方法也是直接從OS X的安裝dmg檔案獲得,管理員沒有機會定製Gatekeeper。
其次,每個企業環境不同,應用軟體來源多種多樣,不說舊的版本和獲得渠道,就說即便是新軟體,每個人都可以從開發人員那裡直接購買,一是因為從App商店購買的軟體都是Apps,有好多限制,比如強制適用沙箱技術等;而來第三方開發人員完全可以不用向Apple交開發員年費而開發Apple軟體,對於這些開發商不能排除在外。
另外,管理員還需要把適合自己企業環境的安全措施,隨時部署到內部,所以也需要靈活的工具來管理。
所以需要有一個有效工具,蘋果提供了一個命令列工具叫spctl。
通過這個工具,管理員可以靈活地添加自己的規則(rules),或者開啟或者關閉這個功能。
關閉: sudo spctl --master-disable
開啟: sudo spctl --master-enable
添加一個規則:sudo spctl --add --label "Good Apps" /Applications/Good.app
sudo spctl --add --label "Bad Apps" /Applications/Bad.app
禁止一個規則:sudo spctl --disable --label "Bad Apps" /Applications/Good.app
准許一個規則:sudo spctl --disable --label "Good Apps"
刪除一個規則:sudo spctl --remove --label "Good Apps"
檢查狀態:sudo spctl --status
這些規則存放在一個資料庫中/var/db/SystemPolicy,系統還存放了一個最原始的系統資料庫/var/db/.SystemPolicy-default,以便管理員可以從頭開始配置。