~xdavidwu/cskloudv3-thesis

e5c9e684b4fa417c2a3313e5896ad93c1e565ecf — Pinghao Wu 6 months ago b3df971
Conclusion: future: refs :p
2 files changed, 31 insertions(+), 3 deletions(-)

M Sections/6.Conclusion.tex
M ref.bib
M Sections/6.Conclusion.tex => Sections/6.Conclusion.tex +3 -3
@@ 9,7 9,7 @@

在 Kubernetes 下,所有的 Pods 皆處於一個至少自第三層(L3,網路層)互通的網路環境,亦即在不加以限制下,任何 Pod 皆能與其他 Pod 溝通。在我們的單一叢集多租戶架構下,我們應確保不同租戶間的 Pods 不能互相溝通,作為資安防禦手段。

Kubernetes 定義了 NetworkPolicy 種類,以設定 Pod 的防火牆規則,需搭配具備相關支援的 Container Network Interface (CNI)\footnote{CNI: Kubernetes 對於其叢集內部網路實做提供的界面定義,市面上有多個不同實做可供選擇。} 實做。為了往後實做租戶間的網路隔離,在架構叢集期間我們即採用支援 NetworkPolicy 的 Calico\footnote{Calico: CNI 實做,其主要特色為大量採用 L3 網路,異於傳統牽涉 L2 的方案,有助於簡化架構。} 做為 CNI 實做。
Kubernetes 定義了 NetworkPolicy 種類,以設定 Pod 的防火牆規則,需搭配具備相關支援的 Container Network Interface (CNI)\footnote{CNI: Kubernetes 對於其叢集內部網路實做提供的界面定義,市面上有多個不同實做可供選擇。}\cite{qi2020assessing} 實做。為了往後實做租戶間的網路隔離,在架構叢集期間我們即採用支援 NetworkPolicy 的 Calico\footnote{Calico: CNI 實做,其主要特色為大量採用 L3 網路,異於傳統牽涉 L2 的方案,有助於簡化架構。} 做為 CNI 實做。

然而 NetworkPolicy 同時也常用於使用者自行針對工作負載所需而擬定的網路加固,在一般常見的存取控制機制下,較難實施平台端硬性的全域政策。目前預見可能的實做路徑有針對此情景進一步特別設計修改存取控制,或者使用特定 CNI 實做的專屬方案,如 Calico 的 GlobalNetworkPolicy resource 種類。



@@ 19,7 19,7 @@ Kubernetes 定義了 NetworkPolicy 種類,以設定 Pod 的防火牆規則,

這類型的方法大多牽涉調整 Container Runtime Interface (CRI)\footnote{CRI: Kubernetes 對於 Pod 與容器的實際執行實做提供的界面定義。},修改其實做或者對其額外加固。修改 CRI 實做的方案有:將容器運行在獨立的虛擬機內(如:Kata Containers、Edera krata)、攔截部份系統呼叫於 user space\footnote{User space: 作業系統供程式運行的環境,相對於核心的 kernel space,user space 具有較低的權限。} 重新實做(如:gVisor)。而對 CRI 進行加固的方法主要是透過 mandatory access control(MAC,如:SELinux、AppArmor),Kubernetes 在 API 設計上允許 CRI 層自行提供 MAC 的政策定義,我們可以針對平台需求修改為更加嚴格的政策。

修改 CRI 實做的方案對於實際容器運行皆會增加運算負擔,甚至牽涉虛擬化技術,一定程度的降低容器在資源運用上的優勢。而對於 CRI 額外加固則是需要對系統運作與典型工作負載有相當深入的理解,在開發上的負擔不容小覷。面對如此多元的解決方案,我們需要進一步實驗進行權衡,在成本與安全性中找尋平衡點。將系統正式上線、對平台需求規模有更明確深入的認知也將有助於這方面的分析。
修改 CRI 實做的方案對於實際容器運行皆會增加運算負擔,甚至牽涉虛擬化技術,一定程度的降低容器在資源運用上的優勢\cite{espe2020performance}。而對於 CRI 額外加固則是需要對系統運作與典型工作負載有相當深入的理解,在開發上的負擔不容小覷。面對如此多元的解決方案,我們需要進一步實驗進行權衡,在成本與安全性中找尋平衡點。將系統正式上線、對平台需求規模有更明確深入的認知也將有助於這方面的分析。

\subsection{Control plane 虛擬化}



@@ 27,7 27,7 @@ Kubernetes 定義了 NetworkPolicy 種類,以設定 Pod 的防火牆規則,

一個可能的解法是管理員先行安裝常見的 operators,搭配設定 RBAC 使得使用者仍然可以由其部屬軟體,但 operators 採取能夠控制整個叢集相關 resources 的權限運行,需要嚴格審視其設計實做的安全性,避免使用者經由 operators 達成提權,在管理上潛藏著不小的負擔。若管理員不熟悉單叢集多租戶設計,更容易忽略此類攻擊路徑。

另一個可能的想法是貫徹 control plane 與 worker nodes 的切分概念,將 control plane 進一步進行虛擬化,使得每個租戶皆有專屬的完整虛擬 control plane,能夠存取更完整的 Kubernetes 功能,而實際 worker nodes 節點仍為共用,比多個完整叢集具備較少的資源負擔。然而系計中此前未有類似需求,對於 control plane 虛擬化相當陌生,需要更多實驗來了解其維運成本。
另一個可能的想法是貫徹 control plane 與 worker nodes 的切分概念,將 control plane 進一步進行虛擬化,使得每個租戶皆有專屬的完整虛擬 control plane,能夠存取更完整的 Kubernetes 功能,而實際 worker nodes 節點仍為共用,比多個完整叢集具備較少的資源負擔\cite{zheng2021multi}。然而系計中此前未有類似需求,對於 control plane 虛擬化相當陌生,需要更多實驗來了解其維運成本。

\subsection{基礎設施代管}


M ref.bib => ref.bib +28 -0
@@ 200,3 200,31 @@
    month =     dec,
    abstract =  {JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data. This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.},
}

@article{qi2020assessing,
    title	= {Assessing container network interface plugins: Functionality, performance, and scalability},
    author	= {Qi, Shixiong and Kulkarni, Sameer G and Ramakrishnan, KK},
    journal	= {IEEE Transactions on Network and Service Management},
    volume	= {18},
    number	= {1},
    pages	= {656--671},
    year	= {2020},
    publisher	= {IEEE},
}

@inproceedings{espe2020performance,
    title	= {Performance Evaluation of Container Runtimes.},
    author	= {Espe, Lennart and Jindal, Anshul and Podolskiy, Vladimir and Gerndt, Michael},
    booktitle	= {CLOSER},
    pages	= {273--281},
    year	= {2020},
}

@inproceedings{zheng2021multi,
    title	= {A multi-tenant framework for cloud container services},
    author	= {Zheng, Chao and Zhuang, Qinghui and Guo, Fei},
    booktitle	= {2021 IEEE 41st International Conference on Distributed Computing Systems (ICDCS)},
    pages	= {359--369},
    year	= {2021},
    organization	= {IEEE},
}