1. <mark id="6l60s"></mark>

        <output id="6l60s"><track id="6l60s"></track></output>
      1. <tr id="6l60s"><nobr id="6l60s"><delect id="6l60s"></delect></nobr></tr>
      2. <tr id="6l60s"><nobr id="6l60s"><ol id="6l60s"></ol></nobr></tr>
            首頁 > 基礎設施 > 正文

            Kubernetes基礎設施的安全

            2020-02-07 18:22:10  來源:分布式實驗室

            摘要:在我們開始保護Kubernetes平臺安全的任務之前,《Securing Kubernetes for Cloud Native Applications》系列的第一篇文章中,討論了為什么很難保護Kubernetes,以及需要我們注意的各個層的概述。
            關鍵詞: Kubernetes
            在我們開始保護Kubernetes平臺安全的任務之前,《Securing Kubernetes for Cloud Native Applications》系列的第一篇文章中,討論了為什么很難保護Kubernetes,以及需要我們注意的各個層的概述。
             
            堆棧中的第一層是基礎架構層。我們可以通過許多不同的方式對此進行定義,但出于討論的目的,它是基于Kubernetes部署的基礎架構組件的總和。 它是用于計算,存儲和網絡目的的物理或抽象硬件層,以及這些資源所處的環境。它還包括操作系統(很可能是Linux)和容器運行時環境(如Docker)。
             
            我們將要討論的大部分內容同樣適用于支持Kubernetes以外的系統的基礎設施組件,但我們將特別關注那些可以增強Kubernetes安全性的因素。

             

            機器、數據中心和公共云

             

            采用云平臺作為工作負載部署的工具,無論是公共,私有還是混合組合,都在繼續快速發展。雖然對專業裸機服務器配置的需求尚未完全消失,但支撐當今大部分計算資源的基礎設施是虛擬機。但是,如果我們部署的機器是虛擬的(基于云的或其他)或物理的,實體將駐留在由我們自己的組織或選定的第三方托管的數據中心,例如公共云提供商,這并不重要。
             
            數據中心很復雜,在考慮安全性方面需要考慮很多。它是托管整個組織的數據處理要求的一般資源,甚至是來自不同行業和地區的眾多獨立組織的共同租用工作負載。出于這個原因,在這個級別上對基礎設施的許多不同方面應用安全性,往往是一個成熟的公司或供應商的責任。它將根據諸如國家或國際法規(HIPAA,GDPR),行業合規要求(PCI DSS)等因素進行管理,并且通常會獲得認證標準認證(ISO 27001,FIPS)。
             
            在公共云環境的情況下,供應商可以并且將在基礎設施層提供必要的遵守法規和合規標準,但在某些時候,它會下沉到服務消費者(您和我),以進一步構建這個安全的基礎。 這是一項共同的責任。這引出了一個問題,作為一個公共云服務消費者,“我應該保護什么,我該怎么做呢?”有很多人對這個話題有很多不同的看法,但是真正可靠的實體是互聯網安全(CIS),一個致力于保護公共和私人實體免受惡意網絡活動威脅的非營利組織。

             

            CIS基準測試

             

            CIS提供了一系列工具,技術和信息,用于對抗我們所依賴的系統和數據的潛在威脅。例如,CIS基準是安全專業人員和主題專家共同編制的針對每個平臺安全的最佳實踐配置指南。為了鼓勵越來越多的組織開始實施轉型計劃,其中包括遷移到公共和/或混合云基礎架構,CIS開展了對應的業務,為主要的公共云提供商提供基準。 CIS Amazon Web Services Foundations Benchmark[1]就是一個例子,其他主要公共云提供商也有類似的基準。
             
            這些基準測試提供基礎安全配置建議,包括身份和訪問管理(IAM),入口和出口,以及日志和監視最佳實踐等。實施這些基準建議是一個很好的開始,但它不應該是旅程的終點。每個公共云提供商都有自己的一套詳細的推薦最佳實踐,并且可以從相關領域中的其他專家聲音中獲得很多好處,例如云安全聯盟。
             
            讓我們花一點時間來看一下典型的基于云的場景,需要從安全角度進行一些仔細的規劃。

             

            云場景:專用網 vs 公有網

             

            我們如何通過限制訪問來平衡保持Kubernetes集群安全的需求,同時通過Internet以及我們自己的組織內部外部客戶端實現所需的訪問?
             
            • 對托管Kubernetes的計算機使用專用網絡:確保代表集群節點的主機沒有公共IP地址。 移除與任何主機直接連接的能力,顯著減少了可被用來攻擊的選項。 例如,這種簡單的預防措施提供了顯而易見的好處,可以防止可能導致利用加密貨幣挖礦的種種妥協。

            • 使用堡壘主機訪問專用網絡:應通過適當配置的堡壘主機提供管理集群所需的對主機專用網絡的外部訪問。 Kubernetes API通常也會暴露在堡壘主機后面的專用網絡中。 當然,它也可能公開發布,但建議至少通過組織內部網絡和/或其VPN服務器的白名單IP地址來限制訪問。

            • 將VPC peering與內部負載均衡/DNS一起使用 - 其中在具有專用網絡的Kubernetes集群中運行的工作負載需要由其他私有的集群外客戶端訪問,工作負載可以通過調用內部負載均衡的服務公開。 例如,要在AWS環境中創建內部負載均衡,該服務需要以下注釋:service.beta.kubernetes.io/aws-load-balancer-internal:0.0.0.0/0。 如果客戶端駐留在另一個VPC中,則需要VPC peering。

            • 使用具有Ingress的外部負載均衡 - 工作負載通常設計為由來自Internet的匿名外部客戶端使用;當部署到專用網絡時,如何允許流量在集群中查找工作負載?我們可以通過幾種不同的方式實現這一目標,具體取決于手頭的要求。第一種選擇是使用Kubernetes服務對象公開工作負載,這將導致在公有子網上創建外部云負載平衡器服務(例如,AWS ELB)。這種方法可能非常昂貴,因為每個公開的服務都會調用專用的負載均衡,但可能是非HTTP服務的首選解決方案。對于基于HTTP的服務,更具成本效益的方法是將ingress controller部署到集群,前面是Kubernetes服務對象,后者又創建了負載均衡器。在進一步路由到匹配規則中的服務端點之前,尋址到負載均衡的DNS名稱的流量被路由到ingress controller端點,該端點評估與任何定義的Ingress對象相關聯的規則。

             
            此方案表明需要仔細考慮如何保證基礎架構配置的安全,同時提供向其目標受眾提供服務所需的功能。 這不是一個特殊的場景,還有其他情況需要類似的處理。

             

            鎖定目標:操作系統和容器運行時

             

            假設我們已經調查并應用了必要的安全配置以使機器級基礎架構及其環境安全,那么下一個任務是鎖定每臺機器的主機操作系統(OS),以及負責管理容器生命周期的容器運行時。 
             
            Linux OS
             
            雖然可以將Microsoft Windows Server作為Kubernetes工作節點的操作系統運行,但控制平面和工作節點通常會運行Linux操作系統的變體。可能有許多因素決定使用Linux發行版(商業、內部技能、操作系統成熟度),但如果可能的話,請使用專為運行容器而設計的最小發行版。比如CoreOS Container Linux,Ubuntu Core和Atomic Host變體。這些操作系統已經被剝離到最低限度以便于大規模地運行容器,因此具有顯著減小的攻擊面。
             
            同樣,CIS為不同風格的Linux提供了許多不同的基準,為保護操作系統提供了最佳實踐建議。這些基準涵蓋了可能被認為是Linux的主流發行版,例如RHEL,Ubuntu,SLES,Oracle Linux和Debian。如果未涵蓋您的首選發行版,則存在獨立發行版的CIS基準測試,并且通常存在特定發行版的準則,例如CoreOS容器Linux強化指南[2]。
             
            Docker Engine
             
            基礎結構中的最后一個組件是容器運行時。在Kubernetes的早期,沒有選擇;容器運行時必然是Docker引擎。然而,隨著Kubernetes容器運行時接口的出現,可以刪除Docker引擎依賴性,轉而使用CRI-O,containerd或Frakti等運行時。事實上,從Kubernetes 1.12開始,這是一個alpha功能(運行時),允許在集群中并行運行多個容器運行時。無論部署哪個容器運行時,它們都需要被保護。
             
            盡管選擇多種多樣,但Docker引擎仍然是Kubernetes的默認容器運行時(盡管在不久的將來可能會改變為containerd),我們將在此考慮其安全性含義。它是使用大量可配置的安全設置構建的,其中一些默認情況下是打開的,但可以在每個容器的基礎上繞過它們。其中一個例子是在創建時應用于每個容器的Linux內核功能的白名單,這有助于減少正在運行的容器內的可用權限。
             
            CIS再一次為Docker平臺CIS Docker Benchmark保留了基準。它提供了有關配置Docker守護程序以獲得最佳安全性的最佳實踐建議。 甚至還有一個方便的開源工具(腳本),名為Docker Bench for Security,可以針對Docker引擎運行,該引擎評估系統是否符合CIS Docker Benchmark。 可以定期運行該工具以暴露所需配置的任何漂移。
             
            Docker被用作Kubernetes的容器運行時,在考慮和測量Docker引擎的安全配置時,需要注意一些事項。 Kubernetes忽略了Docker守護程序的許多可用功能,而是更喜歡自己的安全控件。例如,Docker守護程序配置為使用seccomp配置文件將可用Linux內核系統調用的默認白名單應用于每個創建的容器。除非另有說明,否則Kubernetes將指示Docker從seccomp角度創建Pod容器“unconfined”,使容器可以訪問每個可用的系統調用。換句話說,可以在較低的“Docker層”配置的內容可能會在平臺堆棧中的更高級別被撤消。我們將在以后的文章中介紹如何通過安全上下文緩解這些差異。

             

            總結

             

            將所有注意力集中在平臺的Kubernetes組件安全配置上可能很誘人。 但正如我們在本文中看到的那樣,較低層的基礎架構組件同樣重要,并且非常危險的是它們往往被被忽略。實際上,提供安全的基礎架構層甚至可以緩解我們可能在集群層本身中引入的問題。例如,保持我們的節點私密性將防止不充分安全的kubelet被用于惡意目的。基礎設施組件應該與Kubernetes組件本身一樣受到關注。

            第三十屆CIO班招生
            法國布雷斯特商學院碩士班招生
            北達軟EXIN網絡空間與IT安全基礎認證培訓
            北達軟EXIN DevOps Professional認證培訓
            責編:chenjian
            国语自产视频在线不卡,青青小草国产在线播放,午夜片神马福利在线观看