自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于多租戶容器間安全隔離的思考

安全 應(yīng)用安全
顧名思義,多租戶就是很多人來租用容器平臺的資源來實現(xiàn)自己的應(yīng)用托管運維需求。有了資源,那么誰來管理運維分配使用這些資源?多租戶很重要的一點是資源的安全隔離。即便是專用容器,也需要考慮相應(yīng)的安全和業(yè)務(wù)隔離需求。

 顧名思義,多租戶就是很多人來租用容器平臺的資源來實現(xiàn)自己的應(yīng)用托管運維需求。有了資源,那么誰來管理運維分配使用這些資源?多租戶很重要的一點是資源的安全隔離。即便是專用容器,也需要考慮相應(yīng)的安全和業(yè)務(wù)隔離需求。

從多租戶的角度考慮,租戶租用容器云平臺的資源來托管、開發(fā)、部署運維自己的應(yīng)用、服務(wù)。容器云平臺需要提供、維護保障租戶能正常使用這些資源,同時給租戶托管的應(yīng)用提供服務(wù)注冊、服務(wù)發(fā)現(xiàn)、服務(wù)配置、日志、監(jiān)控、預(yù)警告警、彈性伸縮、負(fù)載均衡、安全等能力。我們要明白的是租戶只是租用這些能力,他們并不負(fù)責(zé)維護。

[[260227]]

那么誰來管理運維分配使用這些資源?那么容器云中什么是資源?資源該由誰來管理?如何分配?誰來運維這些資源?誰來使用這些資源?這也是我寫本篇文章的目的,本文包含了我對一般多租戶安全容器協(xié)調(diào)器的詳細安全考慮。我會通過具體示例來講解如何在隔離狀態(tài)下,安全的運行第三方代碼,詳細介紹請點此。

測試環(huán)境的配置

1.用于運行Docker鏡像的API,使每個進程完全與其他進程隔離;

2.濫用行為可以立即終止;

3.代理應(yīng)該是可自動更新的,以便在出現(xiàn)安全問題時處理它們;

4.能夠?qū)⒄麄€syscall接口用于正在運行的進程;

配置性能要求

1.禁止并刪除任何挖礦工具所使用的基礎(chǔ)設(shè)施及追蹤器;

2.防火墻可以關(guān)閉任何現(xiàn)有網(wǎng)絡(luò)端點;

3.防火墻可以將運行該進程的容器與它相關(guān)聯(lián)的所有本地鏈接和任何可訪問的內(nèi)部IP隔離開來;

4.如果一層多租戶容器間安全隔離受到破壞,則另一層隔離需要馬上跟上。如果兩層安全隔離同時受到破壞,那么還會有隔離機制用于保護;

5.主機操作系統(tǒng)要是安全的;

測試過程

我們要求每個容器按照如下條件運行:

1.Block/io cgroups,以便磁盤沒有噪聲干擾。Cgroups是control groups的縮寫,是Linux內(nèi)核提供的一種可以限制、記錄、隔離進程組(process groups)所使用的物理資源(如:cpu,memory,IO等等)的機制。最初由google的工程師提出,后來被整合進Linux內(nèi)核。

2.CPU限制;

3.內(nèi)存限制;

4.網(wǎng)絡(luò)或帶寬限制;

5.有一個與測試主機的其他網(wǎng)絡(luò)相隔離的網(wǎng)絡(luò)(bpf或iptables);

主機操作系統(tǒng)

主機操作系統(tǒng)應(yīng)該是一個簡化的操作系統(tǒng),具備最簡單的功能即可,即盡可能與容器內(nèi)使用的操作系統(tǒng)共享許多功能。這是為了將主機環(huán)境中的運行漏洞降到很低。

這些操作系統(tǒng)的示例包括:

1.配備 CoreOS的 Container Linux ;

2. Container Optimized OS;

3.Intel Clear Linux, 英特爾推出Clear Linux項目的目標(biāo)是讓用戶可以充分利用虛擬機的隔離技術(shù)以及容器的部署優(yōu)勢;

4.LinuxKit, linuxkit這個工具可以理解為是用多個docker鏡像來組成一個最小化、定制化的操作系統(tǒng),定制化后的系統(tǒng)只有幾十兆;

主機操作系統(tǒng)的特征

CoreOS Container Linux和Container Optimized OS都具有以下功能:

1.驗證啟動;

2.只讀或 usr:

2.1Container Optimized OS會將根文件系統(tǒng)(/)掛載為只讀,并將其某些部分重新掛載為可寫;

2.2/tmp, /run, /media, /mnt/disks 和 /var/lib/cloud都是使用tmpfs掛載的,雖然它們是可寫的,但它們的內(nèi)容在重新啟動之后是不會保留的;

2.3目錄/mnt/stateful/partition, /var和/ home是從有狀態(tài)的磁盤分區(qū)掛載的,這意味著這些位置可用于存儲在重新引導(dǎo)后持續(xù)存在的數(shù)據(jù)。例如,Docker的工作目錄/ var / lib / docker在重新啟動時是有狀態(tài)的;

2.4在可寫位置中,只有/var/lib/docker和/var/lib/cloud被掛載為“可執(zhí)行”,即沒有noexec掛載標(biāo)志;

2.5CoreOS Container Linux的根文件系統(tǒng)(/)掛載為read_write,而/ usr是只讀的;

3.所有操作系統(tǒng)都允許無縫升級以解決安全問題;

容器運行

容器運行時應(yīng)該是一個管理程序,以確保Linux容器的用戶配置不會降低集群的安全性。

如果要允許使用整個系統(tǒng)調(diào)用接口,F(xiàn)irecracker似乎是最合適的。Firecracker是一種專門用于創(chuàng)建和管理多租戶容器和基于函數(shù)的服務(wù)的虛擬化技術(shù),使用Rust開發(fā),旨在加快AWS Lambda和AWS Fargate等服務(wù)的速度和效率。

網(wǎng)絡(luò)要求

默認(rèn)情況下,網(wǎng)絡(luò)應(yīng)該被鎖定,拒絕所有入口和出口策略。這將創(chuàng)建一種安全形式,確保網(wǎng)絡(luò)環(huán)境的絕對安全。

這可以通過iptables或直接使用BPF來實現(xiàn)。

DNS

不允許任何inter-cluster DNS,在主節(jié)點和系統(tǒng)節(jié)點上沒有調(diào)度:確保集群中的主節(jié)點和系統(tǒng)節(jié)點不能被調(diào)度,這允許將系統(tǒng)進程的重點轉(zhuǎn)移到其他地方。

調(diào)度程序

調(diào)度程序不應(yīng)該對bin文件進行打包,在許多使用臨時工作載荷的場景中,當(dāng)前幾個節(jié)點耗盡而所有其他節(jié)點都沒有被使用時,會出現(xiàn)這種情況。因為工作載荷不斷地完成釋放前幾個節(jié)點上的資源(在批處理作業(yè)的情況下)。

Kube-batch目前是Kubernetes SIGs旗下的一個孵化項目,是一個運行在 Kubernetes 上面向機器學(xué)習(xí) / 大數(shù)據(jù) /HPC 的批調(diào)度器(batch scheduler),它支持以 Pod Group 為單位進行資源調(diào)度,并支持preempt和priority。對于暫時無法滿足資源條件的Pod,在Kubernetes中會處于pending狀態(tài),直到資源釋放從而繼續(xù)執(zhí)行。Kube-batch是基于IBM多年的HPC集群經(jīng)驗構(gòu)建的,它更適合批處理作業(yè),因此如果我們打算長期應(yīng)用此程序,就需要對其進行修改。

如果我們在裸機上運行,我們需要考慮電源管理、BIOS更新、硬件故障等等。

資源約束

使用cgroup管理資源并設(shè)置限制:

1.磁盤IO;

2.網(wǎng)絡(luò)帶寬;

3.內(nèi)存;

4.CPU;

避免被挖礦

1.帶有eBPF的CPU跟蹤器會監(jiān)控CPU使用率,因此如果它沒有波動,則它可能是一個挖礦工具;

2.二進制跟蹤器負(fù)責(zé)查找具有特定名稱的二進制文件或進程;

3.網(wǎng)絡(luò)跟蹤器負(fù)責(zé)尋找與已知挖礦工具端點相關(guān)的進程;

為什么不用kubernetes?

kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用,Kubernetes的目標(biāo)是讓部署容器化的應(yīng)用簡單并且高效(powerful),Kubernetes提供了應(yīng)用部署,規(guī)劃,更新,維護的一種機制。

由于我不希望任何允許任意代碼執(zhí)行的容器只有一層安全保護,所以我認(rèn)為kubernetes很難滿足這個要求。

Kubernetes的etcd集群之間沒有隔離,而且kubelet與apiserver的通信也不能被隔離。Etcd是Kubernetes集群中的一個十分重要的組件,用于保存集群所有的網(wǎng)絡(luò)配置和對象的狀態(tài)信息。

總而言之,Kubernetes太復(fù)雜了,有太多的第三方驅(qū)動程序。攻擊面太大,我們不需要其中的大部分(90%)功能設(shè)置。

默認(rèn)情況下,Kubernetes將為每個節(jié)點安排最多110個pod。這是你可以修改的方面,但同樣重要的是要注意kubernetes中的默認(rèn)調(diào)度程序是無法識別資源的,我們必須對其進行修復(fù)。具體的請參閱上面的“調(diào)度程序”那一節(jié),由于默認(rèn)調(diào)度程序的邏輯,集群中的前幾個節(jié)點會破壞。

甚至谷歌內(nèi)部也不使用Kubernetes來調(diào)度虛擬機,Kubernetes在容器中插入了一些額外的env變量,我們也需要處理這些變量。

如果存在影響隔離的內(nèi)核零日漏洞,我們該怎么辦?

首先,更新內(nèi)核,但如果內(nèi)核更新不了,我們可以使用ebpf捕獲易受攻擊的內(nèi)核函數(shù),并刪除任何試圖利用漏洞的容器。

假設(shè)我們已經(jīng)有了可以持續(xù)構(gòu)建內(nèi)核和應(yīng)用補丁的系統(tǒng),則可以考慮威脅模型。大多數(shù)情況下,有人會攻擊我們的基礎(chǔ)架構(gòu),因此我們應(yīng)該確保所有這些服務(wù)器在網(wǎng)絡(luò)上與其余堆棧隔離。

另外一個威脅是我們正在運行的用戶名和密碼在打開容器之后,黑客會通過VM截取它們。一般來說,容器運行錯誤時就會發(fā)生這種情況。

責(zé)任編輯:武曉燕 來源: 嘶吼
相關(guān)推薦

2020-05-08 07:41:46

網(wǎng)絡(luò)安全域隔離網(wǎng)絡(luò)安全域

2023-06-07 13:50:00

SaaS多租戶系統(tǒng)

2021-05-17 11:47:41

多租戶系統(tǒng)私有化

2018-10-24 10:38:44

云計算云租戶企業(yè)云

2012-01-16 13:55:23

2022-05-12 10:32:46

云原生云計算混合云

2021-06-25 14:41:42

網(wǎng)絡(luò)安全

2021-03-05 11:36:13

安全數(shù)據(jù)

2019-11-20 09:15:53

KubernetesPod

2013-06-24 10:31:38

2017-12-21 07:54:07

2020-10-16 08:57:51

云平臺之多租戶的實踐

2020-09-15 07:00:00

SaaS架構(gòu)架構(gòu)

2020-06-05 10:36:30

云計算容器安全

2011-12-16 14:44:55

云計算云安全

2025-02-18 16:27:01

2013-10-15 09:11:26

多租戶云計算Overlay

2023-10-10 17:09:19

2023-10-06 12:11:52

點贊
收藏

51CTO技術(shù)棧公眾號