流水線的安全與合規 - 構建可信的交付鏈

流水線的安全與合規 - 構建可信的交付鏈


“安全左移 (Shift-Left Security)”的理念

“安全左移”是 DevSecOps 的核心理念,指的是將安全測試和考量,從軟件開發生命周期 (SDLC) 的末端(發布前),盡可能地向左移動到更早的階段(如編碼、構建、測試階段)。

為何對 SRE 至關重要?

  • 成本與效率: 在開發早期發現并修復一個安全漏洞的成本,遠低于當它已經部署到生產環境后再去修復的成本。
  • 主動防御: “左移”能幫助我們在漏洞進入生產環境之前就將其攔截,極大地減少了 SRE 需要處理的生產安全事件數量。
  • 文化契合: 這完全符合 SRE “通過工程手段解決運維問題”和“主動預防而非被動救火”的核心思想。

CI/CD 流水線正是實踐“安全左移”的最佳平臺。

保護流水線自身

在集成安全掃描之前,我們首先要確保流水線本身是安全的。

1. 分支保護規則 (Branch Protection Rules)

在 GitHub 中,我們可以為關鍵分支(如 main)設置保護規則,這是防止不合格或未授權代碼合入的第一道防線。

  • SRE 應倡導的關鍵規則:
    1. 要求合并前進行代碼審查 (Require pull request reviews before merging):強制要求至少有一位(或多位)其他團隊成員審查代碼。
    2. 要求狀態檢查通過后方可合并 (Require status checks to pass before merging):這是核心!我們可以將 CI 任務(如 build-and-test 和后續的安全掃描任務)設置為必須通過的狀態檢查。這意味著任何導致測試或掃描失敗的代碼變更都無法被合并
    3. 使用 CODEOWNERS 文件: 可以定義代碼庫中特定文件或目錄的所有者,當這些文件被修改時,必須得到相應所有者的批準。
    4. 禁止強制推送 (Do not allow force pushes):防止重寫 main 分支的歷史記錄。

2. 密鑰管理與訪問控制 (Secrets Management & Access Control)

我們在第四篇中使用了 GitHub Secrets 來存儲 KUBE_CONFIG。這是基礎,但對于訪問云平臺等更復雜的場景,有更現代、更安全的方式。

  • OpenID Connect (OIDC):這是一種無需存儲長期靜態憑證(如云平臺的 Access Key/Secret Key)即可讓 GitHub Actions 與云服務商(如 AWS, GCP, Azure)進行安全認證的先進機制。
    • 工作原理 (高層次):流水線啟動時,GitHub Actions 會向云服務商出示一個臨時的、包含了倉庫和工作流信息的 OIDC 令牌。云服務商驗證該令牌的真實性后,會頒發一個有時效性的、短期的云訪問憑證給流水線。
    • SRE 優勢: 徹底消除了在 GitHub Secrets 中管理和輪換云平臺長期密鑰的需要,極大提升了安全性。

在流水線中集成自動化安全掃描

現在,讓我們開始將各種自動化安全掃描作為“門禁”集成到我們的 .github/workflows/ci.yml 文件中。

A. 依賴項漏洞掃描 (SCA - Software Composition Analysis)

我們的應用依賴了大量的第三方開源庫 (npm 包),這些庫可能存在已知的安全漏洞。

  • 目標: 掃描 package.json 中的依賴項,發現已知的 CVE 漏洞。
  • 工具: 使用 GitHub 原生的 dependency-review-action
  • 實施: 在 build-and-test 任務中增加一個步驟。
# 在 jobs.build-and-test.steps 中增加
# ...
- name:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85386.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85386.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

???????神經網絡基礎講解 一

??一.神經網絡 ? ??1. 全連接神經網絡(Fully Connected Network, FCN)?? ??核心概念:?? ??輸入層??:接收原始數據(如數字、圖片像素等) 數字矩陣 。??隱藏層??:對數據…

MySQL 8.0 OCP 英文題庫解析(二十二)

Oracle 為慶祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免費考取原價245美元的MySQL OCP 認證。 從今天開始,將英文題庫免費公布出來,并進行解析,幫助大家在一個月之內輕松通過OCP認證。 本期公布試題201~210 試題2…

【大模型推理】PD分離場景下decoder負載均衡,如何選取decoder

https://mp.weixin.qq.com/s?__bizMzg4NTczNzg2OA&mid2247507420&idx1&sn4b32726abd205c7f94144bcb9105330f&chksmce64b9fc7f1d8de04a40b0153302dee52262c6f104c67195e2586e75c8093b8be493f252c8a3#rd 在非 Local 場景下,Prefill 定時獲取 Decode …

【IP地址】IP應用場景的使用方向

網絡安全領域 通過IP地址查詢,安全系統能夠實時監控網絡流量,識別異常訪問行為。例如,當某個IP地址在短時間內頻繁發起大量請求,且訪問模式與正常用戶存在明顯差異時,系統可將其標記為可疑IP,觸發風險預警…

3-18 WPS JS宏 顏色設置實例應用(按條件設置單元格顏色)學習筆記

前面講解了關于單元格的一些格式的設置,本節課再講解一下各種清除方法。 1.函數解析與用法 Range().clear()//清除全部 Range().Value2null //清除內容 Range().ClearContents()//清除內容 Range().ClearFormats()//清除格式 Range().EntireRow.Range()//以Ra…

從零開始的云計算生活——第二十天,腳踏實地,SSH與Rsync服務

目錄 一.故事背景 二.SSH帶外管理 1.概述 2. 配置文件 3.命令解析 4.登錄方式配置 a.用戶名密碼登錄 b.公鑰驗證登錄 5.實操生成密鑰對 三.Rsyncsersync實現數據實時同步 1.rsync概述 2.rsync運行原理 3.rsync部署 4.備份測試 配置備份目錄 5.rsyncsersync 實現…

SpringAI + DeepSeek大模型應用開發 - 初識篇

一、認識AI 1. AI的發展 AI,人工智能(Artificial Intelligence),使機器能像人類一樣思考、學習和解決問題的技術。 2. 大模型及其原理 在自然語言處理(Natural Language Processing, NLP)中,…

c++第八天-多態

虛函數虛析構函數純虛函數與抽象類 多態實現的條件:(1)公有繼承 (2)派生類重寫基類虛函數 (3)基類指針/引用指向派生類對象 虛函數不能是構造函數,不能是靜態函數,不能…

全景圖渲染Vue3+TS使用Photo Sphere Viewer插件實現

1.Photo Sphere Viewer插件安裝: title=插件安裝 體驗AI代碼助手 代碼解讀復制代碼npm install photo-sphere-viewer -S 或 yarn add photo-sphere-viewer -S 2.原始全景圖展示 初始化標簽容器 體驗AI代碼助手 代碼解讀復制代碼 // 全景圖的根節點必須要具備寬高 TS引用,創建…

Redis之分布式鎖(3)

這篇文章我們來詳細介紹一下如何正確地基于Redis實現分布式鎖。 基于Redis的分布式鎖實現 組件依賴 首先通過Maven引入Jedis開源組件&#xff0c;在pom.xml文件加入下面的代碼&#xff1a; <dependency><groupId>redis.clients</groupId><artifactId&g…

Java課堂筆記11

三個修飾符 一、abstract&#xff08;抽象&#xff09; 1.抽象方法只能在抽象的類里&#xff0c;只有方法的聲明&#xff0c;沒有方法的實現。&#xff08;沒有{}直接&#xff1b;結尾&#xff09;。 2.abstract修飾的類稱為抽象類。 注意&#xff1a;&#xff08;1&#x…

Linux 核心知識點整理(高頻考點版)

一、編譯與工具鏈 GCC 編譯流程 四階段&#xff1a;預處理&#xff08;-E&#xff0c;處理頭文件 / 宏&#xff09;→ 編譯&#xff08;-S&#xff0c;生成匯編&#xff09;→ 匯編&#xff08;-c&#xff0c;生成目標文件&#xff09;→ 鏈接&#xff08;生成可執行程序&…

輕量化社交管理方案:Skout與云手機的巧妙搭配

在移動社交時代&#xff0c;許多用戶開始嘗試通過多賬號管理來拓展社交圈層。近期測試了Skout社交平臺與亞矩陣云手機的搭配使用&#xff0c;發現這個組合為輕量級社交賬號管理提供了一個值得關注的解決方案。 基礎功能介紹 這套組合的核心優勢在于&#xff1a; 通過云手機實…

ETL連接器好用嗎?如何實現ETL連接?

目錄 一、ETL連接器的功能和優勢 1. 數據抽取能力 2. 數據轉換功能 3. 數據加載功能 4. 優勢總結 二、實現ETL連接的步驟 1. 需求分析 2. 選擇合適的ETL連接器 3. 配置數據源和目標系統 4. 設計ETL流程 5. 開發和測試ETL任務 6. 部署和監控ETL任務 三、ETL連接器在…

uniapp實現聊天中的接發消息自動滾動、消息定位和回到底部

前言 前言無需多言&#xff0c;想必大家對聊天軟件的功能已經很熟悉&#xff0c; 這里不做過多贅述&#xff0c;筆者通過uniapp實現聊天中的接發消息自動滾動、消息定位和回到底部。 代碼實現 <template><view class"chat-container"><!-- 消息列表…

MyBatisMyBatis plus

整合 MyBatis 到 Spring 或 Spring Boot 項目中&#xff0c;可以極大地簡化開發流程&#xff0c;尤其是當使用 Spring Boot 時&#xff0c;它提供了自動配置功能&#xff0c;使得集成更加簡便。 在 Spring Boot 中整合 MyBatis 1. 添加依賴 首先&#xff0c;在 pom.xml 文件中…

Stable Diffusion 實戰-手機壁紙制作 第二篇:優化那些“崩臉”和“馬賽克”問題,讓圖像更加完美!

歡迎回來!在《StableDiffusion實戰-手機壁紙制作》系列的第一篇中,我們成功完成了基礎操作,制作出了令人炫目的手機壁紙。 今天,我們將進入一個更高階的領域——優化處理。因為誰不想讓生成的藝術品更完美呢?尤其是避免“崩臉”和“馬賽克”這種讓人抓狂的問題! 創作的路…

408第一季 - 數據結構 - B樹與B+樹

B樹 性質 可以看見一個節點可以有多個數字了 然后也滿足左小右大的特征 然后所有的葉子節點都在同一層&#xff0c;然后2個數字的節點就可以有3個分支 然后呢&#xff0c;每個節點里面到底有幾個數字是有規定的公式的 就這個公式&#xff0c;m是5階的&#xff0c;算出來是2和…

SSRF5 Gopher 協議對內網 Web 服務進行 sql 注入 GET 類型和POST類型

實驗環境&#xff1b; Centos7.6上同時安裝sqli-lib和pikachu 一.Gopher 協議對內網 Web 服務進行 sql 注入 GET 類型 我們先訪問sqli-lib第1關 然后我們構造URL&#xff1a; http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?urlhttp://192.168.112.12/sql…

Python打卡DAY31

DAY31&#xff1a;文件的規范拆分和寫法 恩師浙大疏錦行 知識點&#xff1a; 規范的文件命名規范的文件夾管理機器學習項目的拆分編碼格式和類型注解 一、機器學習項目流程&#xff1a; 1、數據加載&#xff1a;從文件、數據庫、API 等獲取原始數據。 - 命名參考&#xff1a;…