安全性

本頁面說明 Google Distributed Cloud (僅限軟體) for VMware 內建的安全功能,包括基礎架構的各個層級,以及如何設定這些安全功能來滿足您的需求。

總覽

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

如要保護叢集和工作負載,最好的方式是採取分層防護。針對提供給使用者和工作負載的存取層級,您可以採取最低權限原則。您可能需要做出取捨,以利提供適當的彈性和安全性。

驗證與授權

您可以使用 OpenID Connect (OIDC) 或 Kubernetes 服務帳戶憑證,透過 Cloud Console叢集進行驗證。

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

為進一步簡化及精簡 Kubernetes Engine 的驗證和授權策略,Google Distributed Cloud 會停用舊版以屬性為基礎的存取控制 (ABAC)

控制層安全性

控制層元件包括 Kubernetes API 伺服器、排程器、控制器,以及會保留您 Kubernetes 設定的 etcd 資料庫。在 GKE 中,Kubernetes 控制層元件是由 Google 管理及維護,但在 Google Distributed Cloud 中,控制層元件是由本機管理員管理。

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

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

  • 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 Cloud Computing SRG Impact Level 2 標準。
  • 最佳化套裝組合
  • Google Cloud-tailored Linux kernel
  • 可選的自動 OS 安全性更新
  • 有限的使用者帳戶及停用 root 使用者登入。

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

節點升級

您應定期升級節點。有時候因為容器執行階段、Kubernetes 本身或節點作業系統中的安全問題,您可能需要更緊急地升級節點。叢集升級後,每個節點的軟體也會升級到最新版本。

保護工作負載安全

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

限制 pod 容器程序的權限

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

  • 執行作業時所採用的使用者和群組身分。
  • 可用的 Linux 功能。
  • 權限提升。

預設節點作業系統 Ubuntu 會針對 Kubernetes 啟動的所有容器,套用預設的 Docker AppArmor 安全政策。您可在 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 KMS 整合了身分與存取權管理 (IAM)Cloud 稽核記錄,因此您可以管理個別金鑰的權限,並監控金鑰使用狀況。您可以使用 Cloud KMS 保護需要儲存的密鑰和其他機密資料。否則,你可以選擇使用下列任一替代方案:

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

Kubernetes Secret

Kubernetes Secret 資源會在叢集裡儲存機密資料,例如密碼、OAuth 憑證和安全殼層金鑰等。將機密資料儲存在 Secret 裡,比儲存在明文 ConfigMaps 或以 Pod 規格儲存更為安全。使用 Secret 可讓您控管機密資料的使用方式,並降低未授權使用者看到資料的風險。