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 考試有興趣的建議看看本篇文章,其中文章內有滿多跟安全相關的影片與文章也都值得閱讀
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「docker image介紹」的推薦目錄:
- 關於docker image介紹 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於docker image介紹 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於docker image介紹 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於docker image介紹 在 コバにゃんチャンネル Youtube 的最佳貼文
- 關於docker image介紹 在 大象中醫 Youtube 的最佳貼文
- 關於docker image介紹 在 大象中醫 Youtube 的最佳解答
- 關於docker image介紹 在 Docker教學建立與使用image 程式入門教學介紹 - YouTube 的評價
- 關於docker image介紹 在 twtrubiks/docker-tutorial: Docker 基本教學 - GitHub 的評價
- 關於docker image介紹 在 Docker 基礎教學與介紹101 | Dockers, Library app, Beginners 的評價
- 關於docker image介紹 在 Docker 基礎介紹 的評價
docker image介紹 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
ref: https://blog.sigstore.dev/verify-oci-container-image-signatures-in-kubernetes-33663a9ec7d8
本篇文章要探討的也是跟 security 有關的一個概念,一樣也是基於 Software Supple Chain 這個概念去探討到底環境中用到的相關軟體是否都是安全且被信任的。
本文章分享的是一個基於 Kubernetes Admission Controller 實作的解決方案 Connaisseur,該解決方案的概念很簡單
1. 透過 Admission Controller 去監聽系統上所有 Container 的部署請求
2. 如果部署的 Container Image 是符合事先設定規則的,則允予通過
3. 如果不符合,該次部署就直接失敗
所謂的規則比較簡易的說法就是簽章,只有包含了可信賴簽章的 Container Image 才會被 Connaisseur 給允許通過
有了這個基本概念之後,下一個問題則是到底什麼是可信賴簽章?以及要如何讓想要使用的 Container Image 獲得一個可信賴的簽章?
文章內介紹了關於 Container Signatures 的一些演變,包含了 Docker Content Trust, Notary(V1) 以及 The Update Framework 早期的使用方式
到後來因為 OCI(Open Container Initiative) 的發展與調整,目前可以直接於 OCI Image Spec 一同夾帶該 Image 相關的簽章。
這意味者任何支援該 OCI 標準的 Container Registry 不但可以存放該 Container Image 同時也可以存放該 Image 的簽章。
這個使用方式的變更也促使了 Notary 這個開源專案(v2)的演進。
與此同時, Linux 基金會底下的 Sigstore 專案也再努力地針對開源專案的簽章方面努力著,期望能夠透過簽署與驗證功能來提升開源專案簽署方面的應用。
Sigstore 專案底下的 Cosign 小專案則是專門處理 OCI Image 相關的簽章事項,包含簽署,儲存以及驗證。
而本文所開頭所提及的 Connaisseur 專案則是可以基於 Cosign 所簽署的內容去進行驗證,透過兩者的配合可以用來確保部署到 Kubernetes 的所有 Image 都需要被 Cosign 給簽署過
作者特別強調,目前 Sigsotre 以及 Cosign 這些專案都還是屬於開發階段,所以 Connaisseur 本身對於這項功能的整合也是屬於一個開發實驗階段,很多東西都會不穩定
隨者資安意識以及相關事件 Solarwinds hack 等的出現,當各團隊基本的 DevOps, CI/CD 文化與流程都逐漸成型後, DevSecOps 的東西就會是下一個各團隊要開始煩惱的地方了
特別是所謂的 Software Supply Chain 上的各種潛在危險。
docker image介紹 在 矽谷牛的耕田筆記 Facebook 的精選貼文
本篇文章是個經驗分享系列文,作者探討 Kubernetes 內 15 種不被建議的部署策略與模式。
作者之前曾經撰寫過 Contianer 架構底下的部署模式探討,而本系列文(三篇)則是著重於如何將這些 containers 透過 Kubernetes 給部署到生產環境,總共會探討十五種不推薦的模式,接下來的三篇文章將會介紹各五種不好的模式。
Using containers with the latest tag in Kubernetes deployments
任何 container 的 image 都不應該使用 latest,因為 latest 本身沒有任何意義,這會使得維運人員沒有辦法掌握到底當前部署的版本是什麼,更嚴重的情況適當 latest 搭配 PullPolicy:Always 時會產生更為嚴重的問題。因為 Always 的策略導致每次 Pod 部署時都會重新抓取 image,所以一個 deployment 中,多個使用 latest tag 的 Pod 但是其實使用的 image hash 是不同的。
作者認為比較好的做法有
1. 所有 container image 都是不可修改的,一旦建立就禁止覆蓋,有任何改動就進版
2. 部署用的 image tag 使用有意義的版本名稱
補充: 實際上 pull image 也可以使用 sha256,譬如 "docker pull hwchiu/kubectl-tools@sha256:acfb56059e6d60bf4a57946663d16dda89e12bfb1f8d7556f277e2818680e4c8"
Baking the configuration inside container images
任何 contaienr image 建置的時候應該都要往通用的方向去設計,而不是參雜各種設定在裡面。著名的 12-factor app 裡面也有提到類似個概念,建置好的 image 應該要可以 build once, run everywhere,動態的方式傳入不同的設定檔案,而不是把任何跟環境有關的資訊都寫死
舉例來說,如果 image 內包含了下列設定(舉例,包含不限於)
1. 任何 IP 地址
2. 任何帳號密碼
3. 任何寫死的 URL
作者認為比較好的做法有
1. 透過動態載入的方式來設定運行時的設定,譬如Kubernetes configmaps, Hashicorp Consul, Apache Zookeeper 等
2. 根據不同程式語言與框架甚至可以做到不需要重啟容器就可以載入新的設定
Coupling applications with Kubernetes features/services for no reason
作者認為除了很明確專門針對 Kubernetes 使用,或是用來控制 Kubernetes 的應用程式外,大部分的 應用程式包裝成 Container 時就不應該假設只能運行在 Kubernetes 內。作者列舉了幾個常見的使用範例,譬如
1. 從 K8s label/annotation 取得資訊
2. 查詢當前 Pod 運行的資訊
3. 呼叫其他 Kubernetes 服務(舉例,假設環境已經存在 Vault,因此直接呼叫 vault API 來取得資訊)
作者認為這類型的綁定都會使得該應用程式無法於沒有 Kubernetes 的環境運行,譬如就沒有辦法使用 Docker-compose 來進行本地開發與測試,這樣就沒有辦法滿足 12-factor 中的精神。
對於大部分的應用程式測試,除非其中有任何依賴性的服務是跟外部 Kubernetes 綁定,否則這些測試應該都要可以用 docker-compose 來叫起整個服務進行測試與處理。
服務需要使用的資訊應該是運行期間透過設定檔案,環境變數等塞入到 Container 內,這樣也呼應上述的不要將與環境有關的任何資訊都放入 image 內。
Mixing application deployment with infrastructure deployment (e.g. having
Terraform deploying apps with the Helm provider)
作者認為近年來伴隨者 IaC 概念的熱門,愈來愈多的團隊透過 Terraform/Pulumi 這類型的工具來部署架構,作者認為將部署架構與部署應用程式放到相同一個 Pipeline 則是一個非常不好的做法。
將基礎架構與應用程式同時放在相同 pipeline 可以降低彼此傳遞資訊的困難性,能夠一次部署就搞定全部,然而這種架構帶來的壞處有
1. 通常應用程式改動的頻率是遠大於基礎架構的改變,因此兩者綁在一起會浪費許多時間在架構上
假如部署基礎架構需要 25 分鐘而應用
https://codefresh.io/kubernete.../kubernetes-antipatterns-1/
docker image介紹 在 コバにゃんチャンネル Youtube 的最佳貼文
docker image介紹 在 大象中醫 Youtube 的最佳貼文
docker image介紹 在 大象中醫 Youtube 的最佳解答
docker image介紹 在 twtrubiks/docker-tutorial: Docker 基本教學 - GitHub 的推薦與評價
指令介紹. 接著介紹一些Docker 的指令,. Docker 的指令真的很多,這裡就介紹我比較常用的或是實用的指令. 查看目前images. docker images. 建立image. ... <看更多>
docker image介紹 在 Docker 基礎教學與介紹101 | Dockers, Library app, Beginners 的推薦與評價
Nov 18, 2019 - 在這篇文章中,我們會介紹何謂容器虛擬化、介紹Docker Image、Container、Repository、並手把手建立一個Docker Image。 ... <看更多>
docker image介紹 在 Docker教學建立與使用image 程式入門教學介紹 - YouTube 的推薦與評價
... <看更多>