Kubernetes Pod 安全策略 (PSP)
Kubernetes 的 Pod 安全性方法驗證控制器支援針對許多規則的 Pod 建立和更新請求。通常,Amazon EKS 叢集帶有完全寬鬆的安全策略,幾乎沒有任何限制。
PodSecurityPolicy (PSP) 將在 Kubernetes 1.21 中棄用,即將推出。這標誌著其棄用過程的開始,但目前沒有任何其他變化。
PodSecurityPolicy 將繼續完全可用幾個版本,然後才會被完全移除。
什麼是 Kubernetes?
Kubernetes 是一種自動管理、擴充套件和維護多容器作業以達到所需狀態的軟體。
現代軟體越來越多地作為容器編排執行,有時稱為微服務。
一個完整的應用程式可能包含許多需要協同工作的容器。
Kubernetes 是一種軟體,它將一系列物理或虛擬主機(伺服器)轉換為一個平臺,該平臺可以:
執行容器化作業,為其提供計算、儲存和網路資源;以及
自動管理大量的容器化應用程式——透過適應變化和挑戰來保持其健壯性和可用性。
Kubernetes 在哪裡使用?
同樣,Kubernetes 可以在各種 Linux 作業系統上執行(伺服器節點也可以在 Windows Server 上執行)。
單個 Kubernetes 叢集可以跨越資料中心、私有云或任何公共雲中的裸機或虛擬機器。
Kubernetes 還可以執行在開發人員工作站、邊緣伺服器、樹莓派等小型伺服器或小型行動式物聯網裝置和機器上。
透過一些規劃(以及正確的工具和架構選擇),Kubernetes 可以跨所有這些環境提供一個一致的平臺。
Pod 安全策略 (PSP)
Pod 安全策略 (PSP) 是一種admission controller(准入控制器),允許叢集管理員明確控制 Pod 的安全敏感方面。
首先,在叢集中建立一個或多個 PSP 資源來描述 Pod 必須滿足的要求。
然後,建立 RBAC 規則來控制哪個 PSP 應用於給定的 Pod。
如果 Pod 滿足其 PSP 的要求,它將被叢集接受。
在某些情況下,PSP 還可以修改 Pod 欄位,甚至為這些欄位建立新的預設值。如果 Pod 不滿足 PSP 要求,則會被拒絕並且無法執行。
關於 PSP 的另一個重要事項:它與 Pod 安全上下文不同。
Pod 特定的 Pod 安全上下文(及其每個容器的對應安全上下文)是一組欄位,這些欄位選擇 Pod 的持久安全關鍵設定。
安全上下文指令告訴 kubelet 和容器執行時如何執行 Pod。相反,PSP 只會設定(或預設為)安全上下文中可以設定的屬性。
PSP 的存在不會以任何方式影響 Pod 安全上下文。
Pod 安全策略 (PSP) 的需求
在 Kubernetes 中,我們定義了諸如 Pod、StatefulSet 和 Service 之類的資源,這些資源構成了軟體應用程式的構建塊。
Kubernetes 叢集中的各種控制器會響應這些資源,建立其他 Kubernetes 資源或配置軟體或硬體以實現我們的目標。
在許多 Kubernetes 叢集中,RBAC(基於角色的訪問控制)規則控制對這些資源的訪問。
列出、獲取、建立、修改和刪除是 RBAC 通常會考慮的 API 操作,但 RBAC 不會考慮正在放入其控制的資源中的設定。
例如,Pod 可以是任何東西,從簡單的 Web 伺服器到特權 shell,提供對主伺服器節點和所有資料的完全訪問許可權。
對 RBAC 來說,這沒有什麼區別:Pod 就是 Pod。
要控制在叢集中定義的資源中允許的設定型別,除了 RBAC 之外,還需要 Admission Control(准入控制)。
從 Kubernetes 1.3 開始,PodSecurityPolicy 一直是與安全相關的 Pod 欄位的內建方法。
使用 PodSecurityPolicy,您可以阻止“建立 Pod”表示“在每個叢集節點上使用 root”而無需部署額外的外部准入控制器。
Kubernetes Pod 安全策略 (PSP) 如何工作?
部署 Kubernetes 叢集時,在包含叢集的節點上執行的 PSP 會註冊到駐留在 Kubernetes 叢集中的專有 LDAP 庫中。
在本教程中,我們將瞭解 Kubernetes 如何自動處理 PSP 的註冊。
註冊 PSP 後,您可以將其用作叢集中其他系統的兩因素身份驗證選項,將其配置為透過授予對儲存在其中的秘密的訪問許可權來阻止對叢集的不受歡迎的訪問(考慮 PSC 主密碼或 GRC),甚至允許特定組訪問叢集上的自定義服務。
當 Kubernetes 啟動新節點時,它會自動在每個節點上註冊 PSP。
此過程由節點上的 kubelet(系統守護程式)控制。
只需要設定一個簡單的 `registerDnsDaemon` DSL 命令。
例如,您可以執行以下命令:
twist - XPUT
'localhost:9200/_kube/v1/regulators/registerDnsDaemon/register' - H
'Content-Type: application/json' - d '{ "namespace": {"pod":
"src/pod.yml"}, "administration": "pod.master", "administration":
"service.master", "sig": "hub information", "treat": "", "autoscale": {
"reload" : valid, "size" : 40, "sizes" : [ "enormous", "medium" ],
"status" : "achievement", "classifiers": ["XML", "JSON"] } }'
然後,節點將自動檢查註冊並按需發出節點及其服務的有效證書。您還可以使用更復雜的 DNS 記錄,該記錄要求您的節點在使用之前先在 PSP 中註冊。
結論
如果您的 PSP 使用相對簡單,只有少量策略和明確的限制來支援每個名稱空間中的帳戶,那麼您可能會發現 PSP 替換策略非常適合您的需求。將您的 PSP 與 Kubernetes Pod 安全標準進行比較,以確定您可以在哪些地方使用受限、審計和優先順序配置檔案。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP