<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    如何保證Kubernetes中部署的安全?

    VSole2022-05-12 16:41:07

    對于在共享基礎設施上運行的容器化應用程序來說,安全是至關重要的。隨著越來越多的組織將其容器工作負載轉移到Kubernetes,K8s已經成為容器協調的首選平臺。而隨著這一趨勢,威脅和新的攻擊方式也越來越多,有必要加強所有的安全層。

    在Kubernetes中,安全問題有兩個方面:集群安全和應用安全。我們已經在另一篇文章中介紹了集群安全。在這篇文章中,我們將探討如何確保Kubernetes部署和一般應用程序的安全。

    0x01 基礎回顧

    在這里,我只想快速回顧一下基礎知識。Pod是邏輯原子單元,在集群中運行一個或多個容器;它被其他資源包裹著,如ReplicaSet、Deployment、StatefulSets等。有各種方法來提高在Kubernetes中運行的應用程序的安全態勢。

    在Kubernetes部署中,模板部分包含pod規格,它定義了這個部署要運行的工作負載。在下面的模板中,有幾個與安全有關的部分用黑體字突出顯示。

    現在,讓我們仔細看一下pod規格中的這些部分。

    0x02 服務賬戶

    當容器內的進程與API服務器進行通信時,你應該使用服務賬戶進行驗證。如果你沒有為pod定義一個服務賬戶,那么將使用默認的賬戶。建議創建一個特定于應用程序的服務賬戶,該賬戶具有執行該功能所需的最小權限。

    如果你選擇給默認的服務賬戶賦予角色,這些特權將對每個沒有在規格中定義服務賬戶的pod可用。這可能會無意中允許對其他應用程序的過度許可,因此不建議這樣做。在Kubernetes 1.6及以上版本中,你可以通過設置退出為容器中的服務賬戶自動裝載API令牌。

    0x03 安全環境

    安全環境定義了pod和容器中的權限和訪問控制設置。下面是幾個安全環境的重要內容。

    • seLinuxOptions(安全增強型Linux):此應用提供更細化的訪問和控制策略的機制。
    • runAsUser和runAsGroup:特定的UserID或GroupID(UID和GID)來運行容器進程的入口點;如果沒有指定,則各自默認為鏡像元數據中指定的用戶(在Windows容器中都不適用)。
    • privileged:以特權模式運行容器,默認為假;與主機上的root(具有所有能力)相同。
    • runAsNonRoot:容器必須以非root用戶的身份運行(如果Kubelet在運行時驗證的UID為0,容器將無法啟動)。
    • 能力:在運行容器時添加或刪除能力;容器運行時授予能力,這是默認的。
    • procMount:指定容器的proc mount類型,默認為DefaultProcMount;這使用容器運行時默認的只讀和屏蔽的路徑。
    • AppArmor:與SELinux類似,可以通過配置文件限制單個程序的能力。
    • seccompProfile:容器要使用的secomp選項;過濾進程的系統調用。
    • readOnlyRootFilesystem:將容器中的根文件系統掛載為只讀,默認為假。
    • AllowPrivilegeEscalation:決定一個進程是否可以獲得比它的父進程更多的權限;如果容器以特權運行或具有CAP_SYS_ADMIN能力,它總是為真。這個字段必須明確設置為false,因為它的默認行為可以在PSP中被改變。

    0x04 圖像

    源圖像通常取自各種公共資源庫;開發人員將他們的應用程序代碼放在這些基礎圖像之上。你也可以直接從流行的公共注冊中心部署OOTB應用程序。

    關于圖像有三件事要記住,我們將在下面討論。

    01 圖像的來源

    確保你從一個受信任的注冊中心獲得圖像。攻擊者可以在公共注冊表中放置一個惡意的圖像,這反過來會導致數據泄漏或攻擊者獲得對你的集群的訪問權等問題。一些公共圖像也被發現被加密貨幣礦工所感染。

    作為一個組織,你可以創建基礎鏡像的黃金鏡像,并與開發人員分享,然后他們可以從內部存儲庫中安全地使用這些鏡像。

    02 無分布式和容器優化的圖像

    這些鏡像是安全的,并且經過優化,可以在容器中運行,為潛在的攻擊提供了一個較小的表面積。它們只包含你的應用程序和依賴的庫,而軟件包管理器、外殼和通常在Linux操作系統上可用的程序被刪除。

    03 持續的漏洞掃描

    強烈建議實施持續的圖像掃描,以檢測容器圖像中的漏洞、惡意軟件和其他安全威脅(例如,未經授權連接到不信任的網絡)。有許多可用的安全解決方案,包括Kubescape。

    0x05 Pod安全準入

    你可能聽說過PodSecurityPolicies,它現在已經被棄用,并將在Kubernetes 1.25中被刪除。Pod Security Admission(PSA)將取代它,處理安全和其他安全相關的要求。它為pod定義了不同的隔離級別,如特權、基線和限制。PSA目前在1.23的測試階段。

    這些級別在Kubernetes的Pod安全標準中有詳細描述,但下面是Kubernetes自己文檔中的摘要。

    Pod Security admission與內置的Pod Security admission控制器一起工作;你需要在集群中使用-feature-gate="...,PodSecurity=true "或通過使用pod admission webhook來啟用它。它是在命名空間級別應用的,標簽如下

    0x06 秘密信息使用

    如果你有敏感信息(如憑證、令牌、加密密鑰和證書)在應用程序中可用,請使用Kubernetes Secrets。你可以用字面值或文件創建Secrets,然后將其掛載到pod中。不要在容器鏡像和Git存儲庫中存儲此類信息。

    在使用Secrets時,最好不要使用環境變量將憑證投射到容器中,而是使用文件。

    請記住,Secrets是base64編碼的值。它們沒有被加密,所以對安全對象的訪問必須受到限制,而且你應該在API服務器中寫入時啟用加密功能。

    0x07 總結

    Kubernetes提供了各種方法來改善你的組織的安全態勢。開發人員需要考慮這些結構,使他們的應用程序更安全。

    扼要重述:

    1. 為每個應用程序使用服務賬戶,并將服務賬戶與最小的角色和權限要求綁定,以實現你的目標。

    2. 如果你的應用程序中不需要服務賬戶令牌,就不要自動安裝它。

    3. 使用安全上下文來實現各種技術,例如防止容器在特權模式下作為根用戶運行,使用SELinux或AppArmor配置文件等。

    4. 確保你的容器鏡像的來源是值得信賴的,如果可能的話,將它們存儲在私有注冊表中。

    5. 盡量使用容器優化的鏡像,減少表面積,以減少威脅。

    6. 部署一個持續的漏洞掃描解決方案,不僅在CI/CD中,而且在集群中,可以實時監測和采取行動。

    7. 使用Pod Security接納配置文件和模型,為你的工作負載提供不同的隔離級別。

    8. 使用Secrets來存儲敏感信息,并應用最小權限的RBAC來限制用戶/SA的秘密訪問。

    這對于應用程序開發人員來說,可能會顯得有些力不從心。像Kubescape這樣的工具可以幫助進行風險分析,在CI/CD中執行安全標準,易于理解的RBAC可視化,自動漏洞掃描,以及更多。

    Kubescape協助開發人員實現其應用程序的安全部署。

    kubernetespod
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    NSA和CISA聯合發布Kubernetes安全加固建議。指南稱,Kubernetes環境被黑的主要誘因是供應鏈攻擊、惡意攻擊者和內部威脅。雖然管理員無法應對這3種威脅,但可以通過避免錯誤配置、減小安全風險等方式來加固Kubernetes系統。針對Kubernetes系統安全風險的防護措施包括掃描容器和pod的bug和錯誤配置、使用最小權限來運行pod和容器、進行網絡隔離、強認證、防火墻等。
    近日,互聯網公開了Linux Netfilter權限提升漏洞的POC及EXP,相關CVE編號:CVE-2021-22555。該漏洞在kCTF中被用于攻擊kubernetes pod容器實現虛擬化逃逸,該漏洞已在Linux內核代碼中存在15年。目前官方已發布安全版本修復該漏洞,建議受影響用戶盡快更新至安全版本進行防護,做好資產自查以及預防工作,以免遭受黑客攻擊。
    最近這log4j熱度很高。好久沒寫文章了,而且目前市面有些文章里面的內容信息已經有些過時缺少最新信息迭代,借此機會我劍指系列基于國內外的關于此漏洞的研究我進行了總結和歸納,并且將我自己目前發現的小眾的技巧方法分享給各位,希望能給各位帶來幫助不會讓各位失望。
    容器安全是一個龐大且牽涉極廣的話題,而容器的安全隔離往往是一套縱深防御的體系,牽扯到AppArmor、Namespace、Capabilities、Cgroup、Seccomp等多項內核技術和特性,但安全卻是一處薄弱則全盤皆輸的局面,一個新的內核特性可能就會讓看似無懈可擊的防線存在突破口。隨著云原生技術的快速發展,越來越多的容器運行時組件在新版本中會默認配置AppArmor策略,原本我們在《紅藍對
    Kubernetes通常被稱為“K8s”,是一種非常流行的開源容器編排系統,可以自動部署、擴展和管理容器化工作負載。
    對于在共享基礎設施上運行的容器化應用程序來說,安全是至關重要的。隨著越來越多的組織將其容器工作負載轉移到Kubernetes,K8s已經成為容器協調的首選平臺。而隨著這一趨勢,威脅和新的攻擊方式也越來越多,有必要加強所有的安全層。 在Kubernetes中,安全問題有兩個方面:集群安全和應用安全。我們已經在另一篇文章中介紹了集群安全。在這篇文章中,我們將探討如何確保Kubernetes部署和一般
    雖然網上有大量從零搭建 K8S 的文章,但大都針對老版本,若直接照搬去安裝最新的 1.20 版本會遇到一堆問題。故此將我的安裝步驟記錄下來,希望能為讀者提供 copy and paste 式的集群搭建幫助。
    雖然網上有大量從零搭建?的文章,但大都針對老版本,若直接照搬去安裝最新的?版本會遇到一堆問題。故此將我的安裝步驟記錄下來,希望能為讀者提供?式的集群搭建幫助。服務等,可供用戶免費下載、使用和分享。??啟動的三節點服務已經配置好了以下使用?節點進行演示查看,其他節點操作均一致#?
    域安全 | K8s調度策略
    2023-02-08 16:01:30
    在K8s中,調度是指將Pod放置到合適的節點上。在一個集群中滿足一個 Pod調度請求的所有節點稱之為可調度節點。PodFitsResources 過濾函數會檢查候選節點的可用資源能否滿足 Pod 的資源請求。根據當前啟用的打分規則,調度器會給每一個可調度節點進行打分。最后,kube-scheduler 會將 Pod 調度到得分最高的節點上。可以通過一些手段約束一個Pod以便限制其只能在特定的節點上運行,或優先在特定的節點上運行。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类