本頁面提供 Google Cloud上執行 Container-Optimized OS 的安全性功能總覽。
OS 安全性
以 Chromium OS 為基礎的 Container-Optimized OS from Google 實作多種安全防護設計原則,針對在實際工作環境中執行的服務提供設定完善的平台。
最小化 OS 佔用空間
這是 Container-Optimized OS 安全防護功能的核心所在。由於 Container-Optimized OS 已針對容器執行作業進行最佳化,而容器又封裝其依附元件,因此可清理非必要的套件,盡可能減少 OS 受攻擊的表面。
不可變更的根檔案系統及驗證開機程序
Container-Optimized OS 根檔案系統一律會以唯讀模式掛接。此外,系統會在建構期間計算其總和檢查碼,並在每次啟動時由核心進行驗證。這個機制可防範攻擊者透過永久本機變更來「接管」機器。此外,在預設情況下,其他幾個掛接作業無法執行。詳情請參閱檔案系統。
無狀態設定
雖然唯讀的根檔案系統可確保安全性,但這也會使得系統難以操作,例如需要建立並新增使用者才能登入系統的情形。為解決這個問題,我們自訂了根目錄檔案系統,讓 /etc/
可寫入,但不具狀態。這可讓您在執行時寫入設定,但這些設定在重新啟動後就會消失。因此,每次 Container-Optimized OS 節點重新啟動時,就會從乾淨的插入畫面啟動。特定資料 (例如使用者的主目錄、記錄及 Docker 映像檔) 在重新啟動後仍會保留,這是因為這些資料並不屬於根檔案系統。
安全性強化核心
Container-Optimized OS 可啟用多項安全強化核心功能,包括完整性評估架構 (IMA)、稽核、核心頁面表格隔離 (KPTI),以及 Chromium OS 的部分 Linux 安全模組 (LSM)。此外,Container-Optimized OS 支援 seccomp 和 AppArmor 等安全防護功能,可讓您強制執行更精細的安全性政策。
著重安全性的預設設定
Container-Optimized OS 針對多個功能提供著重安全性的預設值,提供另一個層級的功能強化。這包括停用 ptrace 與無特權 BPF,或是鎖定防火牆等作業的 sysctl 設定。這些預設值自動套用至一系列執行個體後,有助確保整個叢集、專案及機構的安全性。
自動更新
Container-Optimized OS 的自動更新功能可將安全性修補程式即時遞送至執行中的 VM。當 Kubernetes Engine 代管 Container-Optimized OS 時,節點自動升級功能會在安全性與穩定性之間取得平衡。
檔案系統
以下是 Container-Optimized OS 節點映像檔檔案系統中的路徑清單,以及其屬性和建議用法:
路徑 | 屬性 | 用途 |
---|---|---|
/ |
|
根檔案系統會以唯讀模式掛接,以維護完整性。核心會在啟動期間驗證根檔案系統的完整性,並在發現錯誤時拒絕啟動。 |
/home /var |
|
這些路徑是用來儲存會在開機磁碟的生命週期內持續存在的資料。這些路徑均掛接自 /mnt/stateful_partition 。 |
/var/lib/google /var/lib/docker /var/lib/toolbox |
|
這些路徑分別是 Compute Engine 套件 (例如帳戶管理工具服務)、Docker 和工具箱的工作目錄。 |
/var/lib/cloud |
|
這個路徑是 cloud-init 套件的工作目錄。 |
/etc |
|
通常會保存您的設定 (例如透過 cloud-init 定義的 systemd 服務)。建議您將想要的執行個體狀態擷取到 cloud-init 中,因為執行個體在剛建立及剛重新啟動時會套用 cloud-init 。 |
/tmp |
|
通常是做為臨時儲存空間,因此請勿用來存放永久性的資料。 |
/mnt/disks |
|
您可以在 /mnt/disks 底下的目錄中掛接永久磁碟。 |
防火牆
根據預設,Container-Optimized OS 設為捨棄通訊埠 22 上除了 SSH 以外的所有連入 TCP/UDP 連線。如要瞭解如何變更預設值以開啟更多通訊埠,請參閱設定主機防火牆。
執行個體存取權
根據預設,Container-Optimized OS 不包含任何可存取的使用者帳戶。 使用者帳戶和安全殼層金鑰可透過執行個體或專案中繼資料或 OS 登入功能進行管理。 OS 登入可讓您使用 IAM 管理執行個體的存取權。這可讓您進行更精細的存取權控管 (sudo 與非 sudo)、可辨識的 SSH 金鑰,以及組織的登入政策。
SSH 守護程式已設定為禁止密碼驗證,並且禁止 root 登入。 不過,除非使用者帳戶是透過 OS Login 管理,否則這麼做並不會阻止使用者在登入後透過 sudo 取得 root 權限。
基礎架構安全性
除了作業系統本身的各種強化功能,Container-Optimized OS 團隊也重視軟體供應鏈,並根據 Chromium OS 和 Google 多年的經驗,在開發、建構和部署映像檔時,將基礎架構安全性列為優先考量。
使用 Google 的原始碼建構
Container-Optimized OS 中的各個套件,包括 Linux kernel 本身,都是使用 ChromiumOS 程式碼存放區中的原始碼建構而成。這代表我們能夠清楚掌握 OS 的確切內容組成、簽入者、導入的版本等資訊。這也可以讓我們在任何層級發現安全漏洞時,快速修補並更新任何套件。
持續安全漏洞 (CVE) 掃描與回應
只要在核心或 OS 的任何套件中發現安全漏洞,CVE 掃描系統就會向我們發出警報。這個系統也用於偵測 Android 和 Chromium OS 中的安全漏洞。Container-Optimized OS 團隊會優先回應,以便發布修補版本。Container-Optimized OS 小組也會與 Google 的事件回應小組共同合作,在 Container-Optimized OS 中迅速提供涵蓋範圍更廣的安全性修補程式。
測試與資格認證程序
在將新的 Container-Optimized OS 映像檔發佈至 Google Cloud 之前,必須在各個層級進行測試,包括使用 syzkaller 的核心模糊測試、叢集層級的 Kubernetes 測試、Compute Engine 功能的整合測試,以及各種效能基準。這可確保我們發佈內容的穩定性與品質。