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概念 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
ref: https://itnext.io/helm-3-secrets-management-4f23041f05c3
Secret Management 的議題一直以來都是 CI/CD 流程中不可忽似的一部分,本篇文章作者不同於以往採用常見的解決方案(Hashicorp Vault, Helm Secret, SealedSecret),反而是使用 Helm 內建的 AES 加解密功能來實作 Heml Chart 資料的加解密需求。
作者認為一個良好的機密管理解決方案需要能夠為其團隊提供三個基本需求
1) 所有的機密資訊都要能夠存放到版本控制系統中(Git...etc)
2) 所有被上傳到 Chartmuseum 的 Helm Chart Package 都不能有任何 k8s secret 物件,要放的只能有加密後結果。反之使用者要使用時也必須要有能力去解密
3) 單一工具管理,以作者來說會希望能夠都使用 Helm 這個工具來處理,愈少的工具意味者依賴性愈少,同時在維護與管理上要花的心力也更少。
作者首先列舉了兩個現存的專案,分別是 Helm Secrets 以及 Hashicorp Vault 並且針對這兩者進行了簡單的介紹,並且舉出為什麼這兩個專案並不適合作者團隊的需求與使用情境。
作者最後開始認真研究 Helm 本身有什麼內建的加解密功能可以使用,最後發現 encryptAES 以及 descryptAWS 這兩個內建函式可以使用,譬如
value: encryptAES "secretkey" {{ .Values.valueToEncrypt }}
value: {{ .Values.valueToDecrypt }} | decryptAES "secretkey"
有了基本的概念與用法後,作者透過 shell script 實作一層 wrapper 來簡化整個處理流程。
最後將這些資訊也導入到 CI/CD 流程中來幫忙進行解密的相關動作,讓 CD 可以順利的將目標 Secret 給送到 Kubernetes 中。
個人心得: 採用加解密的系統個人還是喜歡採用 SealedSecret 的設計理念,將解密的時間點延後到 Kubernetes 內而並非 CI/CD 系統上,主要是 CI/CD 的 pipeline 要是沒有仔細設計其實很多人會不小心把過程命令給輸出的,這樣的話加解密的過程,使用的 Key 等都有可能會洩漏出去。
k8s概念 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
本篇是一個新手教學文,作者分享如何撰寫一個基於 Library 概念的 Helm Chart。
Helm Chart 的使用基本上不會太困難,透過 Helm Create 也可以很輕鬆地創造出一個範例 Helm Chart,針對該 Helm Chart 簡單修改也可以變成符合使用者需求的 Helm Chart。
作者工作中遇到一個要求,該要求要將一個 mono-repo 內的所有應用程式都變成 Helm Chart 的形式,該 repo 內大概有 10 個左右的應用程式,而這些應用程式部署所需要的資源都差不多,因此最簡單的方式就是創建十個幾乎完全一樣的 Helm Chart,透過 values.yaml 來客製化每個服務即可。
不過作者認為這種做法有點痛苦,要是未來需要針對這些k8s資源加上一些定義或是一些欄位,有可能就要 Copy&Paste 十次來處理所有的 Helm Chart。
為了解決這個問題作者就嘗試創建第一個 Helm Chart Library,只要到 Charts.yaml 裏面將 type 修改為 library 即可。(一般來說是 application)
作者特別提到,Helm 在處理部署的時候,只要檔案開頭為_,則該資源就不會被嘗試部署到 Kubernetes 內,這也是為什麼預設的 helper 會叫做 _helpers.tpl。
對於開發一個供其他 Helm Chart 使用的 Library Helm Chart 有興趣的可以參考這個文來看看一個簡單的範例
https://medium.com/nontechcompany/how-i-create-my-first-library-helm-chart-4f23caf5287d
k8s概念 在 [Kubernetes] Resource Object 概觀 - 小信豬的原始部落 的推薦與評價
從上面的分類可以看出,作為一個multiple node 的container orchestration platform,k8s 為了將container 進行有效的管理,將很多管理概念抽象化,儘量 ... ... <看更多>
k8s概念 在 【雲端小教室Ep.9】 容器新時代Google Kubernetes Engine 介紹 的推薦與評價
打響容器管理之戰的Kubernetes,儼然成為部署容器的標準方式,到底Google Kubernetes Engine 概念是什 ... ... <看更多>
k8s概念 在 Kubernetes - 基礎概念101 的推薦與評價
A hands-on tutorial for learning kubernetes (k8s), including examples of Deployment, Service, Ingress, Helm - GitHub - HcwXd/kubernetes-tutorial: A hands-on ... ... <看更多>