Google 怎麼管理 25 萬台使用者電腦

2018-02-20 未分類

這篇是在 Google 看到的 paper 「Fleet management at scale」提到 How Google manages a quarter million computers securely and efficiently 蠻有意思的

 

由 Google SRE 所寫 paper,主要談論的是怎麼管理 Google 全球所有員工 25 萬台電腦 (包括技術 / 非技術人員),這 25 萬台系統分佈於四種 OS 類型 (macOS, Windows, Linux, and Chrome OS)

Google’s employees are spread across the globe, and with job functions ranging from software engineers to financial analysts, they require a broad spectrum of technology to get their jobs done. As a result, we manage a fleet of nearly a quarter-million computers (workstations and laptops) across four operating systems (macOS, Windows, Linux, and Chrome OS).

 

Google 怎麼應付龐大的 PC 維護網

每一台 PC 都使用 Puppet 來建立 image 做初始化的安裝,在維護方面會在 PC 使用 Puppet Standalone 的方法 (不需要 Puppet Master) 來定時確認設定沒有被更改,所以即使被修改了,也會在 Puppet 更新時恢復設定。

 

而不使用 Puppet Master 架構的原因是不用建立龐大的 Puppet infra 並且單機就可以執行,不需要網路,第二個原因是 BeyondCorp 的 Policy。

Standalone doesn’t require a large infrastructure of Puppet configuration servers. Our hosts pull the cryptographically verified configuration files from a web host which serves the files, verifies the data locally, and then applies the configurations.

Not having servers allows us to commit to our BeyondCorp access model, which does away with using internal networks for corp access.

 

Google 針對 OS 在 image 有使用不同的工具來安裝套件:

  • MacOS 使用 AutoDMG 打包成 image 上傳到 DFS,然後使用 PXE 引導安裝到 TFTP Server 上去抓取 image 回來安裝 OS。
  • Windows 使用 Glazier 將放在 HTTP(S) Server 上抓 image 回來安裝。
  • Linux 一樣使用 PXE 到 HTTP(S) Server 上抓 image 回來安裝

第一次 update 會和 Puppet Server 進行更新,之後就由 Local 的 manifests 來 check 設定。

 

這樣設計的好處是,即使 User 想要洗掉 OS ,一樣可以透過 PXE 抓 image 回來並且再去跟 Puppet Server 抓設定回來 …

 

Google 針對特殊軟體的處理方式

當標準的 image 無法滿足使用者需求的時候,Google 開始建立中央軟體提供的系統:

  • MacOS 利用 luggage 來打包 dmg 安裝檔,並且使用 simian (由 Google App Engine 管理)來管理所有使用者的軟體清單,Munki 則是讓使用者用來更新的 Software Center (像是 Apple Store)
  • Windows 則是利用 SCCM (System Center Configuration Manager)
  • Linux 則是用 Rapture 但還在開發中尚未發表 …

 

Google 在自由和安全性做取捨

對於使用者,Google 還是盡可能的讓使用者可以選擇自己想要裝的軟體,但是過度自由也會有安全上的疑慮,所以 Google 選擇在 PC 上安裝 Puppet,確保 Device 有被加密並且更新到最新版本。

 

Google 強制加密 Device

Google 在加密 device 上使用的是 Cauliflower Vest 強制加密,Cauliflower Vest 同時支援 MacOS Filevault、Windows BitLocker Active Directory

Linux LUKS

 

Google 怎麼讓使用者把系統升級

Google 一樣在一開始會使用彈窗的方式一直跳出來告訴使用者要升級 XDD … 但是總是有賴皮鬼,所以當時間過了非常久後還是會被強制更新並 reboot。

If that isn’t enough to get someone to upgrade, we built a tool that forces
updates if too much time has passed since the last system update. The user
receives pop-up notifications that their machine is about to reboot and
upgrade so they’re not force-updated without warning

 

Google 怎麼管理使用者的軟體白名單

在內部還是會有一些禁用的軟體清單 (santa),或是惡意病毒的軟體偵測 (Carbon Black),比較有趣的是當被 Carbon Black 誤判的時候還可以 “投票” 的方式來加入軟體白名單。

 

除了 Google 以外,使用同樣一套系統的還有 indeed,但是這篇提到的許多工具,有一些還在 pre-production,甚至有些還未開發出來,但多數已經 Open Source 在 Google 的 Github 上,當規模大到一定程度,完全的自動化更是一大挑戰。

 

 

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱

%d 位部落客按了讚: