https://itnext.io/great-cks-kubernetes-security-exam-preparation-guide-to-help-you-pass-14fe5ab30ce1
本文是作者的心路歷程分享分享文,想要探討什麼是 Certified Kubernetes Security(CKS) Specialist 以及如果要準備這個考試可以如何準備
CKS
1. 根據 CNCF 官網的介紹, CKS 測驗是用來確認 CKS 能夠擁有與掌握如何安全的管理 Kubernetes Clusters,安全的概念包含安全的去處理這些 Container 以及整個 Kubernetes 平台的安全性(建置,部署,運行等所有階段)
2. 考取 CKS 之前要先通過 CKA (Certified Kubernetes Administrator) 的測試
3. Kubernetes 官網上其實有非常多的文件與操作說明, CKS 更像是一個幫助你去挑戰自我,確認自己有能力與知識去處理 k8s 安全相關的設定與操作。
如何準備 CKS
作者列舉了幾個重點概念
1. Docker Image 實作上的最佳實踐
2. 理解下列內容
a. CIS Kube-bench
b. Trivy
c. Sysdig/Falco
d. AppArmor
e. Seccomp
f. OPA/Gatekeeper
3. Linux 基礎理解,特別是 cGroup
4. Kubernetes 架構以及相關元件,譬如 RBAC, NetworkPolicy, PSP 等
5. API Server 相關操作,包含 Admission control, Audit 以及如何除錯
作者於文章後半部分列出了很多文章與影片連結,資源非常豐富,其中還提到 CKS/CKA/CKAD 的模擬器 (https://killer.sh/),對於該考試有興趣的一定要使用這些資源來練習
最後列出一些純 k8s 的一些考試內容
1. Admission controllers.
請確保你熟悉各種不同類型,如 PodSecurityPolicy,ImagePolicyWebhook 的實作與差異,並一定要知道這些是如何跟 API Server 互動的。
2. Immutable containers
如何使用 securitycontext 創造一個 Immutable 的容器並且避免一些可能會造成 mutable 的操作
3. Network Policy
4. PodSecurityPolicy(隨者 OPA 的發展,這個考試內容將會慢慢的被捨去)
5. gVisor
對於 CKS 考試有興趣的建議看看本篇文章,其中文章內有滿多跟安全相關的影片與文章也都值得閱讀
k8s rbac 在 矽谷牛的耕田筆記 Facebook 的精選貼文
如果你跟我一樣,是 kubectl 愛好者,對於其他操作介面譬如 k9s 等都不習慣的人,那我認為一定要來瞭解一下 kubectl plugin 的用法
1. kubectl plugin 本身的設計使得大家非常容易的擴充,並不需要修改 kubectl 的任何原始碼或是重新編譯。相反的只需要準備相關的執行檔案,並且依據特定規則命名即可
2. krew 是一套管理 kubectl plugin 的套件,能夠幫你整理目前官方收集的 plugin 並且提供指令讓你去安裝與刪除
3. 本文列出了幾個作者認為好用的指令,譬如 whoami,可以讓你知道你當前透過 KUBECONFIG 連接到遠方 cluster 時是以什麼樣的身份被認證
4. access-matrix 幫你列出目前系統中 RBAC 的相關權限,用一個比較易閱讀的方式呈現
5. neat 是一個清除工具,可以幫忙將 kubectl get pods xxx -o yaml 中那些由 controller 所添加的資源給移除,讓你得到一個乾淨的輸出
6. node-shell 是個非常好用的工具,可以幫你掛載一個 shell 到任意的 k8s node 之中,讓你透過該 shell 來操作該節點
除了這些之外,我認為 ksniff 也是個滿有趣的工具,可以幫忙運行 tcpdump 來錄製封包
如果有興趣的可以直接到 krew 的官方文件去看看目前收錄的 plugin 有哪些,然後可以都玩看看來找到一些對自己工作有幫助的指令
https://www.padok.fr/en/blog/kubectl-plugins
資訊推播頻道 Telegram: https://t.me/technologynote
演講投影片 SlideShare: https://www.slideshare.net/hongweiqiu/presentations
粉絲頁內容索引網站:
https://technologynoteniu.github.io/awesome-notes/
k8s rbac 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
這邊跟大家分享一篇關於 Kubernetes 多租戶的相關文章,該文章中探討到底多租戶的定義,以及實現上的難易程度
1. 多租戶可分成軟性與硬性兩種隔離, Kubernetes namespace 可以視為軟性隔離,而硬性隔離則是希望能夠更強力的隔離所有資源,文章中提到了 vClusters 的概念,連結放在最後
2. 作者認為多租戶的 Kubernetes Cluster 實際上也會帶來一些限制,讓某些功能變得不方便使用。
a. 基於 namespace 的租戶隔離方式就只能大家都同樣一個 k8s 版本,同時有一些支援 RBAC 設定的 Helm Chart 可能就不方便使用。
3. 作者這邊反思提出一個問題,為什麼真的需要多租戶的 Kubernetes 叢集,不能夠用多個單一租戶的 Kubernetes 叢集來取代?
a. 真的有這樣的實例,但是其實成本過高且沒效率。
b. 如果公司內每個開發人員都需要一個自已的 k8s來操作測試,規模一大的話你每個月的成本非常可觀,因此如果可以有一個多租戶的 k8s,就可以解決這些問題
4. 多租戶實作上的挑戰,作者這邊列出幾個問題,包含使用者管理,資源分配以及如何隔離
a.基本上每個組織本身都已經有管理使用者的解決方案,譬如 AD/LDAP 等,如果要將這些使用者的認證授權與 kubernetes 整合,推薦使用 dex 這個支持 OpneID/OAtuth2 的解決方案,幫你將 Kubernetes 與外部資料系統整合
b. 底層資源的共享,避免單一租戶過度使用導致其他租戶不能使用。資源包含了運算資源,網路頻寬等。作者列出透過 Resource Quotas 等可以幫忙限制運算資源,但是並沒有說出網路頻寬這部份該怎麼處理。這部份我認為需要導入更多的network qos解決方案來限制,應該會需要cni以及外部交換機路由器等來幫忙
c. 最後則是互動上的隔離,要如何確保這些多租戶不會互相影響彼此,甚至攻擊彼此。這部份可能要從 NetworkPolicy 來處理網路流量,同時透過 vCluster的方式來提供相對於 namespace層級更強烈的隔離,確保彼此不會互相影響。
5. 最後,作者列出了一些關於多租戶的可能解決方案,包含了 kiosk, loft等
結論來說就是,今天你如果有多租戶的需求,請先問自己,你需要什麼等級的多租戶管理,再來則是三個重點問題要先想清楚,你要怎麼處理
1) 如何管理使用者/租戶
2) 系統資源要如何分配與限制
3) 如何真正有效的隔離這些租戶
如果有這方面的需求,可以先看看別的開源軟體怎麼實作,再來思考是否滿足需求,如果要自己實現,有哪些好的設計值得參考!
歡迎留言討論讓大家知道更多關於多租戶的玩法與經驗
https://medium.com/faun/kubernetes-multi-tenancy-a-best-practices-guide-88e37ef2b709
https://loft.sh/blog/introduction-into-virtual-clusters-in-kubernetes/