溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Kubernetes實(shí)現(xiàn)安全的方法是什么

發(fā)布時(shí)間:2021-12-14 14:19:38 來(lái)源:億速云 閱讀:134 作者:iii 欄目:云計(jì)算

本篇內(nèi)容介紹了“Kubernetes實(shí)現(xiàn)安全的方法是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Kubernetes看起來(lái)很誘人,可以幫助組織解決許多問(wèn)題!但是使用它的人都知道事情會(huì)變得多么復(fù)雜。Kubernetes的安全性也不例外。

Kubernetes不是默認(rèn)安全。它有多種攻擊途徑,并且經(jīng)常發(fā)現(xiàn)CVE。盡管開(kāi)始使用Kubernetes時(shí)會(huì)感覺(jué)有些不知所措,但是組織可以采取一些具體策略來(lái)保護(hù)你的服務(wù)和基礎(chǔ)架構(gòu),使組織的系統(tǒng)和應(yīng)用不受侵害。

首先,讓我們大致了解你要保護(hù)的生態(tài)系統(tǒng)。

  • 容器:Kubernetes是一個(gè)容器編排系統(tǒng)。因此,任何保護(hù)Kubernetes的嘗試都必須保護(hù)其部署的容器的安全,包括構(gòu)建和部署容器的流水線。
  • Linux和Windows :容器包含一個(gè)操作系統(tǒng)(OS),因此我們必須考慮如何保護(hù)OS(無(wú)論是Linux,Windows還是兩者)。
  • Kubernetes:Kubernetes本身既是API服務(wù)器,又是同一網(wǎng)絡(luò)內(nèi)關(guān)于代理和etcd數(shù)據(jù)庫(kù)的分布式系統(tǒng),所有這些都需要得到保護(hù)。

使用托管的Kubernetes解決方案(例如云提供商所提供的解決方案)通??梢詾槟闾峁└玫哪J(rèn)配置,或者更易于管理的功能。但是如果沒(méi)有選擇正確的配置,它們也是不安全的。

例如,對(duì)Kubernetes集群進(jìn)行身份驗(yàn)證的最安全方法是使用OAuth。但使用托管的Kubernetes解決方案,通常是使用私有客戶端證書(shū)文件,或用戶名和密碼的身份驗(yàn)證。

相反,托管的Kubernetes支持配置網(wǎng)絡(luò)策略的容器網(wǎng)絡(luò)接口(內(nèi)部服務(wù)有助于通過(guò)Kubernetes網(wǎng)絡(luò)進(jìn)行容器和Pod通信)。

接下來(lái),讓我們看看如何依次保護(hù)每個(gè)組件。


 

容器


組織如果需要安全地構(gòu)建容器,并且必須使用信任的容器鏡像在系統(tǒng)中部署運(yùn)行。

構(gòu)建

構(gòu)建安全容器需要掃描它們的漏洞-包括Linux系統(tǒng)軟件包以及編程語(yǔ)言(例如Python或Ruby)的應(yīng)用程序軟件包。應(yīng)用程序開(kāi)發(fā)人員可能習(xí)慣于掃描應(yīng)用程序依賴關(guān)系,但是由于他們隨應(yīng)用程序一起交付了整個(gè)操作系統(tǒng),因此在保護(hù)操作系統(tǒng)安全方面也必須獲得支持。

為了大規(guī)模支持這項(xiàng)工作,請(qǐng)考慮使用諸如Cloud Native Buildpacks之類的工具,該工具允許組織或運(yùn)維團(tuán)隊(duì)進(jìn)行標(biāo)準(zhǔn)化的容器構(gòu)建,開(kāi)發(fā)人員可以使用它們將其應(yīng)用程序拖放到其中-完全替換項(xiàng)目的Dockerfile。這些集中化的構(gòu)建可以保持最新?tīng)顟B(tài),以便開(kāi)發(fā)人員可以專注于自己擅長(zhǎng)的方面,而不必手動(dòng)重復(fù)DevOps操作。

容器鏡像掃描工具會(huì)掃描已構(gòu)建鏡像的各個(gè)層以查找已知漏洞,并且檢查和保證你的構(gòu)建和依賴關(guān)系是最新的。它們可以在開(kāi)發(fā)過(guò)程中以及在CI流水線中運(yùn)行,從而使開(kāi)發(fā)人員可以最早發(fā)現(xiàn)漏洞。最佳做法是將容器降到運(yùn)行應(yīng)用程序所需的最低限度。

預(yù)防攻擊的一個(gè)好方法是擁有一個(gè)沒(méi)有shell的容器!

簽名

因此,現(xiàn)在你已經(jīng)構(gòu)建了安全的容器。但是,如何確定所構(gòu)建的哪一個(gè)容器,是需要部署到集群的容器呢?

Docker支持使用密鑰,對(duì)鏡像簽名,然后可以在拉取和部署鏡像時(shí)對(duì)其進(jìn)行身份驗(yàn)證。簽名容器,類似于將TLS證書(shū)添加到端點(diǎn)。

通過(guò)驗(yàn)證要拉取的容器鏡像是否與你的鏡推送像完全相同,它可以防止中間人(man-in-the-middle attacks )攻擊。為此,你需要在拉取和推送容器鏡像雙方的系統(tǒng)上,擁有同一個(gè)密鑰。

下面將介紹,我們檢查準(zhǔn)入控制器時(shí),如何防止未簽名的鏡像部署到你的集群中。


 

Linux


你的容器可能正在運(yùn)行Linux或Windows,Kubernetes還支持Linux和Windows工作節(jié)點(diǎn)的混合。

為了確保你的系統(tǒng)安全,你仍然必須執(zhí)行傳統(tǒng)的工作–以確保僅在必要時(shí)才公開(kāi)服務(wù)器,確保SSH憑據(jù)安全,確保OS庫(kù)是最新的以及用戶和組權(quán)限被鎖定。

如果攻擊者可以訪問(wèn)你的主節(jié)點(diǎn)或工作節(jié)點(diǎn),則他們更容易入侵Kubernetes系統(tǒng)的任何部分-無(wú)論是API還是kubelet代理。即使在云原生環(huán)境中,仍然需要良好的舊sysadmin工作,無(wú)論是將其委派給云提供商還是自己獨(dú)立完成。


 

Kubernetes


完整的Kubernetes安全實(shí)踐,可以出一本書(shū)了。但是對(duì)于此討論,最關(guān)鍵的方面是基于角色的訪問(wèn)控制(RBAC),準(zhǔn)入控制器和網(wǎng)絡(luò)策略。

此外,云原生安全平臺(tái)可以幫助彌補(bǔ)微小漏洞。

RBAC

誰(shuí)可以在你的集群中做什么?基于角色的訪問(wèn)控制(RBAC)回答了這個(gè)問(wèn)題。

Kubernetes提供了在整個(gè)集群中、以及給定名稱空間(namespace)中為用戶和服務(wù)帳戶(service accounts)授予特定權(quán)限的功能。

一些示例用例,允許所有團(tuán)隊(duì)成員查看彼此的應(yīng)用程序詳情,但只能在自己專用的命名空間中進(jìn)行修改,而只有少數(shù)經(jīng)過(guò)審查的人可以刪除那里的內(nèi)容。

這些因組織而異,但是積極管理RBAC對(duì)于集群的安全至關(guān)重要。

準(zhǔn)入控制器(Admission Controllers)

準(zhǔn)入控制器(AC)是實(shí)現(xiàn)完全Kubernetes安全的唯一方法。除非容器規(guī)范滿足某些條件,否則AC會(huì)阻止容器在集群中調(diào)度和運(yùn)行。AC的種類很多,但其中有兩種非常值得使用:PodSecurityPolicy AC和可驗(yàn)證簽名鏡像的AC。

(PSP)介于攻擊者和Kubernetes系統(tǒng)最脆弱的方面之間。例如,Kubernetes中的容器可以要求使用“ hostPath”類型的存儲(chǔ)卷(例如Docker套接字)在基礎(chǔ)主機(jī)上安裝任何路徑。

掛載Docker套接字的容器,可以在沒(méi)有特權(quán)狀態(tài)的情況下以root用戶身份在主機(jī)上運(yùn)行任何docker命令。太恐怖了!防止這種情況的唯一方法是PSP禁止hostPath卷。PSP設(shè)置還可以阻止其他幾種重要的攻擊路徑。如果你僅做一件事來(lái)保護(hù)集群,則應(yīng)該創(chuàng)建PSP并啟用PSP準(zhǔn)入控制器。

之前,我們討論了如何對(duì)你的容器鏡像進(jìn)行簽名以建立信任鏈。如何完成?使用 Open Policy Agent (OPA) AC,可以在允許每個(gè)容器鏡像進(jìn)入集群之前檢查每個(gè)容器鏡像是否具備有效簽名。還可以參考,結(jié)合使用Notary和OPA建立從構(gòu)建到部署的完整信任鏈的絕佳指南。

網(wǎng)絡(luò)策略(Network Policies)

Kubernetes網(wǎng)絡(luò)策略就像集群的內(nèi)部防火墻規(guī)則一樣,應(yīng)該說(shuō)明其重要性。他們?cè)试S管理員為以下場(chǎng)景配置集群:

  • 一個(gè)名稱空間(namespace)只能與依賴關(guān)系所在的另一個(gè)名稱空間(namespace)通信。
  • 外部流量只能到達(dá)API網(wǎng)關(guān)容器,而不能到達(dá)其他容器。
  • 除了DNS注冊(cè)表(DNS registry.)之外的所有容器,禁止其他容器作為網(wǎng)絡(luò)出口。

如果你是在管理自己的集群,而不是使用云提供商管理的解決方案,則需要研究可用的CNI,以了解NetworkPolicy支持的網(wǎng)絡(luò)的有效方法。

云原生安全平臺(tái)

安全形勢(shì)一直在變化,并且它以驚人的速度發(fā)展,在云原生空間中變化甚至更快。即使采取了上述所有步驟,重要的是要對(duì)實(shí)時(shí)運(yùn)行的內(nèi)容進(jìn)行檢查以查看異常和違規(guī)跡象。諸如像Prisma Cloud這樣的平臺(tái)可以提醒你注意此類異常情況,并可以主動(dòng)防止意外進(jìn)程運(yùn)行和建立網(wǎng)絡(luò)連接。

“Kubernetes實(shí)現(xiàn)安全的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI