安全性

Google Distributed Cloud 軟體 (僅限 VMware) 包含安全防護功能,可協助您保護基礎架構的各個層級,包括叢集存取權、控制層、節點和工作負載。您可以結合驗證和授權、控制層和節點安全性、工作負載限制、稽核記錄和加密,為叢集建立分層防禦。

總覽

Google Distributed Cloud 軟體 (僅限 VMware) 提供多項功能,可協助保護工作負載,包括容器映像檔內容、容器執行階段、叢集網路,以及叢集 API 伺服器的存取權。

建議您採取多層式做法,保護叢集和工作負載。您可以對使用者和工作負載的存取層級套用最小權限原則。您可能需要做出取捨,才能在彈性和安全性之間取得適當平衡。

驗證與授權

您可以使用 OpenID Connect (OIDC) 或 Kubernetes 服務帳戶權杖,透過 Cloud 控制台驗證叢集。

如要在叢集層級或 Kubernetes 命名空間內,設定更精細的 Kubernetes 資源存取權,請使用 Kubernetes 角色式存取控管 (RBAC)。RBAC 可讓您建立詳細政策,定義要允許使用者和服務帳戶存取哪些作業和資源。您可以使用 RBAC,控管任何已驗證身分的存取權。

為進一步簡化 Kubernetes Engine 的驗證和授權策略,Google Distributed Cloud 會停用舊版屬性式存取控管 (ABAC)。

控制層安全性

控制層元件包括 Kubernetes API 伺服器、排程器、控制器和 etcd 資料庫,其中保存了 Kubernetes 設定。在 GKE 中,Kubernetes 控制層元件由 Google 管理及維護,而在 Google Distributed Cloud 中,則由本機管理員管理。

在 Google Distributed Cloud 中,控制層元件會在公司網路內執行。您可以使用現有的企業網路政策和防火牆,保護 Kubernetes API 伺服器。您也可以為 API 伺服器指派內部 IP 位址,並限制該位址的存取權。

Google Distributed Cloud 中的所有通訊都透過 TLS 管道進行,並由 etcd、叢集和組織這三個憑證授權單位 (CA) 管理:

  • etcd CA 可保護 API 伺服器與 etcd 副本之間的通訊,以及 etcd 副本之間的流量。這個 CA 是自行簽署。
  • 叢集 CA 可保護 API 伺服器與所有內部 Kubernetes API 用戶端 (kubelet、控制器、排程器) 之間的通訊。這個 CA 是自行簽署。
  • 機構 CA 是外部 CA,用於向外部使用者提供 Kubernetes API。您管理這個 CA。

如果是管理員控制項,金鑰會儲存在控制層節點上。如果是使用者叢集,金鑰會以 Kubernetes Secret 的形式儲存在管理員控制層中。API 伺服器會使用由組織 CA 簽署的使用者提供憑證進行設定。API 伺服器會使用伺服器名稱指示 (SNI),判斷要使用叢集 CA 簽署的金鑰,還是組織 CA 簽署的金鑰。

叢集驗證是由憑證和服務帳戶不記名權杖處理。管理員可以使用 OIDC 或管理憑證 (用於初始角色繫結建立或緊急用途),向控制層進行驗證。

憑證輪換的處理方式如下:

  • 每次升級時,系統都會為 API 伺服器、控制層和節點建立或輪替憑證。
  • CA 可以不常輪替,也可以視需求輪替。

節點安全性

Google Distributed Cloud 會將工作負載部署至 VMware 執行個體,這些執行個體會以節點形式附加至叢集。以下各節將說明如何使用可用的節點層級安全防護功能。

Ubuntu

Google Distributed Cloud 採用最佳化版本的 Ubuntu 做為作業系統,用於執行 Kubernetes 控制層和節點。Ubuntu 包含一組豐富的新式安全防護功能,Google Distributed Cloud 則為叢集實作多項安全強化功能,包括:

  • 映像檔已預先設定,符合 PCI DSS、NIST Baseline High 和 DoD 雲端運算 SRG 影響等級 2 標準。
  • 最佳化套件組合。
  • Google Cloud專屬的 Linux 核心。
  • 選用自動 OS 安全性更新。
  • 限制使用者帳戶,並停用根登入。

Ubuntu 另提供其他安全性指南,例如:

節點升級作業

建議您定期升級節點。不時,容器執行階段、Kubernetes 本身或節點作業系統中的安全性問題,可能會要求您更緊急地升級節點。升級叢集時,每個節點的軟體都會升級至最新版本。

保護工作負載安全

Kubernetes 可讓使用者快速佈建、調度資源及更新以容器為基礎的工作負載。本節說明管理員和使用者可採取的策略,限制執行中的容器影響叢集中的其他容器、執行容器的主機,以及專案中啟用的 Google Cloud 服務。

限制 pod 容器程序的權限

限制容器化程序權限對叢集的整體安全至關重要。Kubernetes Engine 可讓您在 Pod 和容器上使用安全性內容設定安全性相關選項。這些設定可讓您變更程序的安全性設定,例如:

  • 要以哪個使用者和群組的身分執行。
  • 可用的 Linux 功能。
  • 提權。

預設節點作業系統 Ubuntu 會將預設的 Docker AppArmor 安全性政策套用至 Kubernetes 啟動的所有容器。您可以在 GitHub 上查看設定檔的範本。此外,設定檔會拒絕容器執行下列操作:

  • 直接在程序 ID 目錄 (/proc/) 中寫入檔案。
  • 寫入 /proc/ 以外的檔案。
  • 寫入 /proc/sys 中 /proc/sys/kernel/shm* 以外的檔案。
  • 掛接檔案系統。

稽核記錄

Kubernetes 稽核記錄可讓管理員保留、查詢、處理 Google Distributed Cloud 環境中發生的事件,並設定相關快訊。管理員可以使用記錄的資訊進行鑑識分析、即時快訊,或編目 Kubernetes Engine 叢集的使用方式和使用者。

根據預設,Google Distributed Cloud 會記錄管理員活動。您也可以視需要記錄資料存取事件,具體取決於您想檢查的作業類型。

Connect 代理程式只會與地端部署環境中執行的本機 API 伺服器通訊,且每個叢集都應有自己的稽核記錄。使用者透過 Connect 從 UI 執行的所有動作,都會由該叢集記錄。

加密

如果叢集和工作負載透過 Cloud VPN 安全連線至Google Cloud 服務,您可以使用 Cloud Key Management Service (Cloud KMS) 管理金鑰。Cloud KMS 是雲端託管的金鑰管理服務,可讓您管理服務的加密編譯金鑰。您可以產生、使用、輪替及銷毀 AES256、RSA 2048、RSA 3072、RSA 4096、EC P256 和 EC P384 加密編譯金鑰。Cloud Key Management Service 與 Identity and Access Management (IAM) 和 Cloud 稽核記錄整合,因此您可以管理個別金鑰的權限,並監控金鑰的使用方式。使用 Cloud Key Management Service 保護需要儲存的 Secret 和其他機密資料。否則,您可以選擇使用下列其中一種替代方案:

  • Kubernetes Secret
  • Hashicorp Vault
  • Thales Luna 網路 HSM
  • Google Cloud 硬體安全性模組 (HSM)

Kubernetes Secret

Kubernetes Secret 資源會將密碼、OAuth 權杖和安全殼層金鑰等機密資料儲存在叢集中。相較於將機密資料儲存在純文字 ConfigMaps 或 Pod 規格中,將機密資料儲存在 Secret 中更安全。使用 Secret 可控管機密資料的使用方式,並降低資料外洩給未授權使用者的風險。