Kubernetes 整合 JFrog 打造雲原生供應鏈資安防線
- Devops Tec.

- 6 days ago
- 3 min read

背景:K8s × DevSecOps 時代的供應鏈挑戰
隨著企業導入 Kubernetes 作為容器編排核心,CI/CD 流水線與image儲存庫間的整合已成標準流程。然而,當開發者使用大量 Open Source 套件、容器基底映像(base image)、Helm Chart 與 IaC 模板時,供應鏈的風險也同樣倍增。
根據 JFrog Security Research 報告,超過 90% 的容器映像含有已知 CVE 漏洞,其中 45% 以上的漏洞可被公開利用(Exploitable)。因此,導入 JFrog 平台與 Kubernetes 整合的 DevSecOps 流程,已成為確保軟體生命週期安全的重要關鍵。
架構設計:K8S 與 JFrog 的安全整合

元件 | 功能說明 |
JFrog Artifactory | 私有image儲存庫,存放 Base Image、Helm Charts、Artifacts |
JFrog Xray | 自動化漏洞與 License 掃描、生成 SBOM |
JFrog CLI / REST API | 供 CI/CD Pipeline 呼叫 API 進行掃描與策略驗證 |
Kubernetes Cluster | 佈署應用的運行環境,透過 Admission Controller 驗證映像 |
OPA / Kyverno / Kubesec | 強制政策層(Policy Enforcement),阻擋含高風險映像部署 |
實作步驟:從掃描到部署防護
Step 1:建立 JFrog 與 K8s 之間的信任關係
1 | kubectl create secret docker-registry artifactory-cred \ --docker-server=artifactory.company.local \ --docker-username=devops_bot \ --docker-password=<API_TOKEN> \ --docker-email=devops@example.com |
ℹ️ TIP: 建議以 Kubernetes Secret 搭配 ServiceAccount 使用,避免直接在 Deployment YAML 中暴露憑證
Step 2:在 CI/CD 中導入 Xray 掃描
1 | stage('Security Scan') { steps { script { def scanResult=sh(script: """ curl -u ${JFROG_USER}:${JFROG_TOKEN} -X POST \\ -H "Content-Type: application/json" \\ -d '{"repo_path":"docker-local/myapp:latest"}' \\ https://${JFROG_URL}/xray/api/v1/scanArtifact """, returnStdout: true) echo "Scan Result: ${scanResult}" } } } |
⚠️ 掃描結果可回傳 JSON,包括漏洞等級(Critical/High/Medium/Low)與 License Type。
Step 3:邏輯串接:從 CI 掃描到 K8S 部署
在 Step 2 中,CI/CD Pipeline 呼叫了 Xray API 並取得了 JSON 格式的掃描結果 。下一步的關鍵,是將此掃描結果傳遞給 Kubernetes。
CI/CD Pipeline 需負責解析該 JSON 回傳值,並將映像檔的安全狀態(例如:是否存在 "Critical" 漏洞)動態注入到 Kubernetes Deployment 或 Pod 的 YAML 檔案中,作為 metadata.annotations(中繼資料標註)。
例如,如果 Step 2 發現 "Critical" 漏洞,CI 應在 YAML 中加入:
1 | YAML |
1 | metadata: |
2 | annotations: |
3 | jfrog.com/xray-score: "Critical" |
4 |
如此一來,當 CI/CD 流程執行 kubectl apply 提交此 YAML 時,Step 3 的 Admission Controller 才能依據這個標註,成功攔截該部署請求。
Step 4:導入 Admission Controller 阻擋高風險映像
1 | apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: deny-critical-cves spec: validationFailureAction: enforce rules: - name: check-cve-score match: resources: kinds: - Pod validate: message: "映像含高風險漏洞,禁止部署" pattern: metadata: annotations: jfrog.com/xray-score: "!~ Critical" |
🔴 當映像標註含有 Critical 等級漏洞時,K8S 將拒絕部署。
進階應用:SBOM 與持續監控
自動生成 SBOM
1 | curl -u ${JFROG_USER}:${JFROG_TOKEN} \ -X GET "https://${JFROG_URL}/xray/api/v1/sbom/artifact?path=docker-local/myapp:latest" |
實時風險監控
JFrog Security 可監測新 CVE 公告並自動更新影響範圍,當漏洞對應至現有映像或 Package 時,自動發出警報至 Slack 或 Jira。
整合效益:從被動補救 → 主動預防
效益項目 | 說明 |
可視化 | SBOM 全景揭露供應鏈構成 |
合規性 | License Policy 自動驗證 |
即時防護 | Admission Controller 即時封鎖 |
風險治理 | 漏洞關聯至 CVE 資料庫與修補建議 |
自動化 | Pipeline 全流程無人工介入的安全門檻 |
未來展望:AI 驅動的 DevSecOps 自動修補
隨著 JFrog Security AI 與 Atlassian Rovo Dev Agent 的出現,未來的 DevSecOps 不僅能偵測漏洞,更能自動生成修補建議與 Pull Request。結合 Kubernetes 的 GitOps 模式與 Policy-as-Code,企業將能實現 Self-Healing 的安全基礎架構。
結語
Kubernetes 帶來了極高的可擴展性,但也暴露了供應鏈的複雜性與風險。透過整合 JFrog Artifactory + Xray + K8s Security Policy,不僅能強化企業映像治理與漏洞防禦,更能以 DevSecOps 為核心,實現從開發到部署的持續安全 (Continuous Security)。
想了解更多更多關於JFrog的資訊和功能,DevOps Tec 專業顧問團隊歡迎您來信或來電洽詢!



Comments