Kubernetes 的發展速度很快,因此經常有新的安全防護功能可供使用。本文說明如何強化 Google Distributed Cloud 叢集。
本文會優先介紹您在建立叢集時,需要採取的重要安全緩解措施。而重要性較低的功能、預設已將安全性納入考量的設定、可於建立叢集後再啟用的項目,則於文章後段再細談。如需安全防護主題的一般總覽,請參閱「安全性」。
檢查清單
下列部署檢查清單重點說明強化 GKE 叢集平台部署作業的最佳做法。如要進一步瞭解各項做法,請參閱本文中的各節。
部署檢查清單 | 說明 |
---|---|
身分與存取權控管 | 使用 vSphere 帳戶權限: 保護服務帳戶: 設定 OpenID Connect (OIDC): 使用 Kubernetes 命名空間和 RBAC 限制存取權: |
資料保護 | 加密 vSphere 虛擬機器: 管理密鑰: |
網路防護 | 限制控制層和節點的網路存取權: 使用網路政策限制流量: |
宣告式安全性 | 使用 Policy Controller: |
維護 | 升級: 監控安全性公告: |
監控與記錄 | 設定記錄選項: |
身分與存取權控管
本節提供叢集存取權控管的相關資訊。
使用 vSphere 帳戶權限
您用來安裝 Google Distributed Cloud 的 vCenter 使用者帳戶必須具備充分權限。舉例來說,如果使用者帳戶獲派 vCenter 的管理員角色,就能完全存取所有 vCenter 物件,並為 Google Distributed Cloud 叢集管理員提供完整存取權。
建議採用最低權限原則,只授予成功安裝 {product_name} 的必要權限。我們已預先定義安裝作業所需的最低權限組合,以及授予這些權限所需的指令。
保護 Google Cloud 服務帳戶
Google Distributed Cloud 需要多個Google Cloud 服務帳戶。安裝期間,您會將 Identity and Access Management 角色繫結至這些服務帳戶。這些角色會授予服務帳戶在專案中的特定權限。安裝期間,系統會為您產生部分服務帳戶。
設定叢集使用者的驗證機制
如要為叢集設定使用者驗證,可以使用 OpenID Connect (OIDC) 或輕量型目錄存取通訊協定 (LDAP)。
詳情請參閱 GKE Identity Service。
使用 Kubernetes 命名空間和 RBAC 限制存取權
如要授予團隊最低的 Kubernetes 存取權限,請建立 Kubernetes 命名空間或環境專屬叢集。為每個命名空間分配成本中心與適當的標籤,以便於問責和退款。僅向開發人員提供部署和管理應用程式所需的命名空間存取層級 (尤其是在實際工作環境)。
規劃使用者需要對叢集執行的工作,並定義完成各項工作所需的權限。如要授予叢集和命名空間層級的權限,請使用 Kubernetes RBAC。
除了用於安裝 Google Distributed Cloud 的Google Cloud 服務帳戶權限外,IAM 不適用於 Google Distributed Cloud 叢集。
詳情請參閱下列說明文件:
資料保護
本節提供保護資料的相關資訊。
加密 vSphere 虛擬機器
Google Distributed Cloud 叢集節點會在 vSphere 叢集的虛擬機器 (VM) 上執行。Google 強烈建議您加密所有靜態資料。如要在 vSphere 上執行這項操作,請按照 VMware vSphere 7 安全性設定與強化指南,以及加密虛擬機器的最佳做法指南操作。
您必須先完成這項作業,才能安裝 Google Distributed Cloud。
管理密鑰
如要為儲存在 etcd 中的 Kubernetes Secret 等私密資料提供額外一層保護,請設定與 Google Distributed Cloud 叢集整合的密鑰管理工具。
如果您在多個環境中執行工作負載,可能偏好同時適用於 Google Kubernetes Engine 和 Google Distributed Cloud 的解決方案。如果選擇使用外部密鑰管理員,例如 HashiCorp Vault,請先設定該管理員,再整合 Google Distributed Cloud 叢集。
您可以透過下列幾種方式管理密鑰:
- 您可以在 Google Distributed Cloud 中以原生方式使用 Kubernetes Secret。我們預期叢集會使用先前所述的 VM vSphere 加密功能,為密鑰提供基本的靜態加密保護。根據預設,系統不會進一步加密密鑰。
- 您可以使用外部密鑰管理系統,例如 HashiCorp Vault。您可以使用 Kubernetes 服務帳戶或 Google Cloud 服務帳戶來驗證 HashiCorp。
網路保護
本節提供網路防護相關資訊。
限制控制層和節點的網路存取權
限制叢集控制層和節點在網際網路上的暴露程度。叢集建立後即無法變更這些選項。根據預設,Google Distributed Cloud 叢集節點是使用 RFC 1918 位址建立,建議不要變更這項設定。在內部部署網路中導入防火牆規則,限制控制層的存取權。
使用網路政策限制流量
根據預設,Google Distributed Cloud 叢集中的所有服務都能互相通訊。如要瞭解如何根據工作負載,視需要控管服務間的通訊,請參閱下列章節。
限制對服務的網路存取權後,攻擊者會更難以在叢集內橫向移動,同時也能為服務提供部分保護,防範意外或刻意阻斷服務的情形。以下推薦兩種流量控制方法:
- 如要控管應用程式端點的第 7 層流量,請使用 Istio。如果您對負載平衡、服務授權、節流、配額及指標感興趣,請選擇此選項。
- 如要控管 Pod 之間的 L4 流量,請使用 Kubernetes 網路政策。如果需要 Kubernetes 管理的基本存取控制功能,請選擇此選項。
建立 Google Distributed Cloud 叢集後,即可同時啟用 Istio 和 Kubernetes 網路政策。如有需要,可以同時使用。
詳情請參閱下列說明文件:
宣告式安全性
本節提供叢集安全防護建議。
使用 Policy Controller
Kubernetes 許可控制器是一種外掛程式,可管理並強制控制 Kubernetes 叢集的使用方式。准入控制器是強化叢集深度防禦措施的重要環節之一。
最佳做法是使用 Policy Controller。Policy Controller 會使用 OPA 限制架構,以 CRD 形式說明及強制執行政策。您套用至叢集的限制條件定義於限制範本中,並部署在叢集中。
如要瞭解如何使用 Policy Controller 限制,實現與 PodSecurityPolicies 相同的多項保護措施,並在強制執行政策前先進行測試,請參閱「使用限制來強制執行 Pod 安全性」。
詳情請參閱下列說明文件:
限制工作負載自行修改的能力
特定 Kubernetes 工作負載 (尤其是系統工作負載) 具有自我修改的權限。舉例來說,部分工作負載會自動垂直擴縮。雖然方便,但如果攻擊者已入侵節點,就能在叢集中進一步擴大影響範圍。舉例來說,攻擊者可能會讓節點上的工作負載變更,以同一個命名空間中權限較高的服務帳戶執行。
理想情況下,工作負載不應獲得修改自身的權限。如果需要自行修改,您可以套用 Gatekeeper 或 Policy Controller 限制 (例如開放原始碼 Gatekeeper 程式庫中的 NoUpdateServiceAccount),藉此限制權限。這個程式庫提供多項實用的安全性政策。
部署政策時,通常需要允許管理叢集生命週期的控制器略過政策,以及記錄和監控管道。這是必要步驟,因為控制器需要變更叢集,例如套用叢集升級。舉例來說,如果您在 Google Distributed Cloud 上部署 NoUpdateServiceAccount
政策,則必須在 Constraint
中設定下列參數:
parameters:
allowedGroups:
- system:masters
allowedUsers:
- system:serviceaccount:kube-system:monitoring-operator
- system:serviceaccount:kube-system:stackdriver-operator
- system:serviceaccount:kube-system:metrics-server-operator
- system:serviceaccount:kube-system:logmon-operator
維護
本節提供叢集維護相關資訊。
升級 Google Distributed Cloud
Kubernetes 經常推出新的安全防護功能,並提供安全修補程式。
您有責任確保 Google Distributed Cloud 叢集維持在最新狀態。請參閱每個版本的版本資訊。此外,請規劃每月更新至新的修補程式版本,以及每三個月更新至次要版本。瞭解如何升級叢集。
您也必須負責升級及保護 vSphere 基礎架構:
- 建立作業程序,及時修補及升級 VM
- 隨時掌握最新的 VMware 安全性建議
- 請按照這篇文章的指引,
監控安全性公告
GKE 安全團隊會針對高嚴重性和重大嚴重性安全漏洞發布安全性公告。
這些公告採用常見的 Google Cloud 安全漏洞編號配置 ,並連結至主要 Google Cloud 公告頁面和 Google Distributed Cloud 版本資訊。每個安全公告頁面都有 RSS 動態消息,使用者可以訂閱更新。
如果需要顧客採取行動來解決這些高嚴重性和重大安全漏洞,Google 會透過電子郵件與顧客聯絡。此外,Google 也可能會透過支援管道,與簽訂支援合約的客戶聯絡。
詳情請參閱下列說明文件:
監控與記錄
Google Distributed Cloud 提供多種叢集記錄和監控選項,包括雲端代管服務、開放原始碼工具,以及通過驗證的第三方商業解決方案相容性:
- Cloud Logging 和 Cloud Monitoring,由透過 Google Distributed Cloud 部署的叢集內代理程式啟用
- 通過驗證的第三方解決方案設定
無論您根據業務需求選擇哪種記錄解決方案,我們都強烈建議將與轉送相關的事件和快訊記錄到集中式安全資訊與事件管理 (SIEM) 服務,以便管理安全事件。
詳情請參閱下列說明文件:
- 記錄與監控
- 使用記錄與監控功能
- 應用程式記錄與監控
- 使用 Elastic Stack 監控 Google Distributed Cloud
- 將 Google Cloud 的記錄檔串流至 Splunk