Image 供應鏈流程的核心責任是讓 container image 從 build 到 runtime 都可追溯。Image 同時包含 application、runtime、OS package 與 dependency;CI/CD 需要把 Dockerfile、base image、tag、scan、registry 與 deployment manifest 串成同一條供應鏈。

流程定位

Image deployment 的風險集中在「看似同名、實際不同」的產物漂移。latest、mutable tag、重新 build 與跨 registry promotion 都可能讓 staging 測過的 image 不等於 production 跑的 image。嚴謹流程應以 Image Digest 或 immutable tag 作為 artifact 身分。

階段責任判讀訊號
Build從 Dockerfile 產生 imagebase image、lockfile、build arg 是否固定
Tag建立查詢與推進入口commit SHA、semver、digest 是否可追
Scan顯性化漏洞、secret、SBOM 風險阻擋門檻與例外流程是否存在
Container registry保存 image 並控制 promotionimmutable、retention、權限
Runtime handoff讓 deployment 使用已驗證 imagemanifest 是否指向已掃描 digest

Build 階段負責封裝 runtime。Multi-stage build、dependency cache、base image pinning 與 build secret 處理會直接影響安全性;CI 應能在乾淨 runner 上重建 image,避免開發機狀態被帶入。

Tag 階段負責支援不同查詢情境。Commit SHA 適合事故追溯,semver 適合 release 溝通,Image Digest 適合 runtime 精準鎖定;production 判讀應以 digest 為準,tag 只作為人類入口。

Scan 階段負責把風險分流。Vulnerability scan、secret scan、license scan 與 SBOM 不應只是報表;流程要定義哪些風險阻擋發布、哪些風險允許例外、例外誰審核、何時重新評估。

Container registry 階段負責保存與推進 image。Registry 要處理權限、retention、immutability、promotion 與垃圾回收;若 production 直接從 feature branch push 的 tag 拉 image,供應鏈邊界就失去治理。

Runtime handoff 階段負責把已驗證 image 交給部署平台。Kubernetes、ECS、Compose 或其他 runtime 都應指向已驗證 digest 或 immutable tag,並把 health、readiness、resource limit 與 rollback 連到同一次 release。

Tag 與 digest 策略

Tag 策略的責任是讓人查得到、機器鎖得住。單一 tag 很難同時滿足可讀性、可追溯與不可變三個需求,因此實務上常搭配多個 tag 與 digest。

標識適合用途風險
Commit SHA從 runtime 回查 source對使用者不友善
Semver對外 release 溝通tag 可能被覆寫,需搭配 immutability
Branch tagpreview / staging 快速迭代不適合作為 production 依據
Digestruntime 精準鎖定人類閱讀成本高

Production deployment 應能從 running pod 或 task 反查 image digest,再反查 registry metadata、scan report、workflow run 與 source commit。這條查詢路徑是 incident response 的基本能力。

Scan gate 分流

Scan gate 的責任是讓安全訊號變成可操作路由。掃描工具會產生大量結果,沒有分流規則時,團隊會在兩種壞狀態間搖擺:全部阻擋導致發不出去,全部忽略導致掃描失去信任。

結果類型策略下一步
Critical exploitable阻擋 production promotion升級 dependency / base image
High with mitigation需要審核例外與到期日記錄風險、設定重新掃描
Base image aging排入 base image refresh建立定期更新節奏
Secret in layer阻擋並輪替 secret重建 image、撤銷已暴露 credential
SBOM missing阻擋高治理環境,低風險環境警告補 provenance / SBOM 產出

這個分流讓 scan 成為 gate。例外流程要有 owner 與到期日,讓例外維持可追蹤、可重新評估。

常見反模式

反模式的共同問題是讓 image 身分失去穩定錨點。當 image 身分漂移,測試結果、掃描結果與 runtime 狀態會彼此分叉。

反模式風險替代做法
production 使用 latestrunning image 缺少精準身分使用 Image Digest 或 immutable tag
staging 與 production 各自 build測試產物與上線產物分叉build once,promote same image
build secret 留在 layersecret 進入 registry 與節點使用 BuildKit secret mount
scan 只報告不阻擋高風險漏洞仍進 production定義阻擋門檻與例外流程

下一步路由