iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Kubernetes

防範軟體供應鏈攻擊:從零打造具備硬性阻擋能力的雲原生 CI/CD 流水線 系列

本系列在一台 Windows 11 筆電、單節點 CRC(OpenShift Local)叢集上
,從零打造具備硬性阻擋能力的雲原生 CI/CD流水線
,且全程在對外網路受限條件下實測跑通。
內容涵蓋機密掃描、靜態分析、相依套件與映像檔漏洞掃描、測試覆蓋率、型別檢查六道防線
,未過即中斷流水線;建構完成後以 Cosign 簽章、產出 SBOM,更新 GitOps 由 ArgoCD 部署
,最終由 Kyverno 攔截未簽章映像。
30天依五階段推進:基礎設施、CI 引擎、安全防線、無特權建構與簽章、GitOps 准入封鎖
,延伸至 SLSA Level 3驗證。

參賽天數 22 天 | 共 22 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11:裝好 Tekton Pipelines 之後,叢集多了一個能變成任何人的 ServiceAccount

今日目的 在 CRC 上裝好 OpenShift Pipelines Operator,然後回答一個比「裝好了沒」更重要的問題:它順手對這座叢集做了什麼。 安裝...

2026-08-11 ‧ 由 lins04 分享
DAY 12

Day 12:跨 Namespace 引用 Task(Cluster Resolver)

適用範圍 本文所有數值與輸出來自下列環境,量測日期 2026-08-08 至 08-09。換版本需重新驗證。 項目 版本 CRC 2.61.0...

2026-08-12 ‧ 由 lins04 分享
DAY 13

Day 13:Workspace 的四層命名——同一顆 PVC,兩個 Pod 看到不一樣的路徑

今日目的 上一篇讓 Pipeline 跨 Namespace 引用了 openshift-pipelines 裡的 git-clone。接下來的問題是:git-...

2026-08-13 ‧ 由 lins04 分享
DAY 14

Day 14:自動觸發機制 —— Tekton Triggers 的授權規範與 CEL 的邊界

今日目的:把 Gitea 的 Push 事件接上先前建立的 Pipeline,並且讓這條路徑具備「只有 Gitea 送得動」的能力。先備知識:本篇銜接先前〈W...

2026-08-14 ‧ 由 lins04 分享
DAY 15

Day 15:讓 image 真的經過 Nexus —— path routing、Bearer Token

今日目的 Day 7 把 Nexus 裝起來了,但到目前為止沒有任何 image 真的經過它。今天把這條路走通: 節點端 podman 透過 docker-p...

2026-08-15 ‧ 由 lins04 分享
DAY 16

Day 16:單節點的 GC 門檻與 Nexus cleanup policy

今日目的 明天開始組 Pipeline,PipelineRun 會成批產生 Pod、拉 image、在 Nexus 裡堆 blob。這篇先弄清楚三件事: 這些...

2026-08-16 ‧ 由 lins04 分享
DAY 17

Day 17:DAG 的順序就是防線 —— runAfter 的兩條硬邊界

今日目的 Day 18 開始要一個一個把掃描 Task 接進 Pipeline。動手之前先把順序定下來。 Tekton 用 DAG 描述 Task 之間的依賴,...

2026-08-17 ‧ 由 lins04 分享
DAY 18

Day 18:第一道掃描 —— gitleaks 掃的是 git 歷史

今日目的 Day 17 把順序定下來了,今天把第一個掃描 Task 接上去,並且走完整條鏈路:改一個 commit、push、webhook 觸發、Pipel...

2026-08-18 ‧ 由 lins04 分享
DAY 19

Day 19:靜態分析的規則從哪來 —— semgrep 與一份會過期的規則快照

圖:semgrep-scan task的log(D17的並行設計,設備記憶體不足時會讓CRC把自己餓死,後續會改成限制同時並行的task數量) 今日目的 Day...

2026-08-19 ‧ 由 lins04 分享
DAY 20

Day 20:npm-build 與 ESLint

情境:阻擋團隊成員的可通過編譯,但不符合團隊規則的程式圖片為失敗的示意(修改了task順序,build太吃資源被放到其他檢查完成後做) 今日目的 今天做兩件事:...

2026-08-20 ‧ 由 lins04 分享