開發安全利器:detect-secrets 敏感信息掃描工具實戰指南

在現代軟件開發流程中,代碼安全已成為不可忽視的重要環節。尤其是在 DevSecOps 的理念逐漸普及的今天,如何在開發早期就發現并消除潛在的安全隱患,成為每一個開發者和安全工程師必須面對的問題。其中,敏感信息泄露(Secrets Leakage)是最常見也最危險的安全問題之一。

本文將介紹一款由 Yelp 開源的敏感信息掃描工具 ——?detect-secrets,它如何幫助我們在代碼提交前發現潛在的密鑰、密碼、令牌等敏感信息,并結合實際使用場景,分享其在自動化流水線和本地開發中的應用方式。


一、為什么需要敏感信息掃描?

在日常開發中,開發者可能會不小心將 API 密鑰、數據庫密碼、OAuth token 等敏感信息硬編碼進代碼中,并提交到 Git 倉庫。這些信息一旦泄露,可能導致嚴重的安全事故。

根據 OWASP 的 DSOMM(DevSecOps Maturity Model)要求,部分產品需達到 Level 1 或 Level 2 的安全成熟度,其中就包括對敏感信息的自動化檢測與防護。detect-secrets 正是為此而生。


二、detect-secrets 工具簡介

detect-secrets 是一個基于 Python 的命令行工具,支持插件化擴展,能夠掃描 Git 倉庫或任意目錄中的文件,識別潛在的敏感信息。它的核心優勢包括:

  • 持續維護:每年發布多個新版本,最新版本為 v1.5.0(2024年5月發布)
  • 開源協議:采用 Apache-2.0 許可
  • 廣泛適配:支持 Git 倉庫和非 Git 目錄
  • 性能優化:通過 diff 和正則匹配識別新增 secrets,避免全量掃描

此外,它還支持與 pre-commit 框架集成,實現開發者本地提交前的自動掃描。


三、與其他工具對比

detect-secrets 與 Coverity、MS CredScan、GitLeaks、VDOO 等工具并列。相比之下,detect-secrets 具有以下優勢:

工具名稱特點
CoverityC/C++ 需啟用 HARDCODED_CREDENTIALS 檢查器
MS CredScan已于 2023 年 9 月棄用,推薦使用 GitHub Advanced Security
GitLeaks使用 Go 編寫,以 Docker 鏡像形式發布
VDOO僅提供第三方二進制,無源碼
detect-secrets免費、開源、支持插件、性能優異

四、detect-secrets 使用指南

1. 準備工作

detect-secrets source code:??https://github.com/Yelp/detect-secrets

  1. 安裝工具:

    pip install detect-secrets
    
  2. 創建 baseline 文件(掃描結果):

    detect-secrets scan > .secrets.baseline
    
  3. 掃描非 Git 文件夾:

    detect-secrets -C /path/to/directory scan > /path/to/directory/.secrets.baseline
    

注意:.secrets.baseline?文件需為 ANSI 格式,否則后續命令可能報錯。


2. 集成 Pre-commit 鉤子

detect-secrets 支持兩種方式集成到開發流程中:

  • 開發者本地鉤子:在提交前自動掃描
  • Jenkins 自動化鉤子:結合 CI/CD 流程進行掃描

配置步驟如下:

  1. 安裝 pre-commit:

    pip install pre-commit
    
  2. 在項目根目錄創建?.pre-commit-config.yaml?文件,添加 detect-secrets 配置

  3. 安裝鉤子:

    pre-commit install
    
  4. 執行掃描:

    pre-commit run --all-files
    

3. 審計與報告

detect-secrets 提供審計功能,用于分析 baseline 文件中的內容:

  • 查看審計結果:

    detect-secrets audit .secrets.baseline
    
  • 生成報告:

    detect-secrets audit --report .secrets.baseline > SecretReport.txt
    
  • 僅輸出真實 secrets:

    detect-secrets audit --report --only-real .secrets.baseline > SecretReport.txt
    
  • 查看統計信息:

    detect-secrets audit --stats .secrets.baseline > status.txt
    

五、插件與過濾器機制

detect-secrets 的強大之處在于其插件和過濾器系統:

  • 插件:用于識別不同類型的 secrets(如 AWS 密鑰、Slack token 等)
  • 過濾器:用于排除誤報,提高準確率

你可以通過以下命令查看和管理插件:

detect-secrets scan --list-all-plugins
detect-secrets scan --disable-plugin AWSKeyDetector

此外,還支持自定義插件和過濾器,滿足特定業務需求。詳細文檔可參考:

  • 插件開發指南
  • 過濾器開發指南

六、總結與建議

detect-secrets 是一款輕量級、高性能、可擴展的敏感信息掃描工具,適合集成到 DevSecOps 流程中,幫助開發團隊在代碼提交前發現并消除潛在的安全隱患。

建議開發團隊在以下場景中使用 detect-secrets:

  • 本地開發階段,結合 pre-commit 實現自動掃描
  • 自動化流水線中,結合 Jenkins 或 GitHub Actions 實現持續檢測
  • 安全審計階段,生成 secrets 報告并進行合規檢查

安全無小事,從每一次提交做起。detect-secrets,讓你的代碼更安全。

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

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

相關文章

數字經濟專業核心課程解析與職業發展指南

在數字經濟高速發展的時代,選擇一門與未來趨勢緊密關聯的專業至關重要。數字經濟專業作為新興交叉學科,既涵蓋傳統經濟理論,又融合了大數據、人工智能等前沿技術。想要在這一領域脫穎而出,考取權威證書是提升競爭力的有效途徑。其…

使用yolo11訓練航拍圖片微小目標AI-TOD檢測數據集無損壓縮版YOLO格式14018張8類別已劃分好訓練驗證集步驟和流程

【數據集介紹】我們基于公開的大規模航空圖像數據集構建了AI-TOD,這些數據集包括:DOTA-v1.5的訓練驗證集[1]、xView的訓練集[19]、VisDrone2018-Det的訓練驗證集[20]、Airbus Ship的訓練驗證集1以及DIOR的訓練驗證測試集[3]。這些數據集的詳細信息如下&a…

sward V2.0.6版本發布,支持OnlyOffice集成、文檔權限控制及歸檔等功能

1、版本更新日志新增新增目錄文檔權限控制新增新增知識庫、文檔歸檔功能集成OnlyOffice支持word文檔預覽、編輯新增MarkDown代碼塊根據語言展示不同樣式優化優化富文本在小屏幕操作調整優化部分界面展示效果優化知識庫圖片展示效果2、目錄與文檔權限控制默認情況下,…

多因子AI回歸揭示通脹-就業背離,黃金價格穩態區間的時序建模

摘要:本文通過構建包含通脹韌性、就業疲軟、貨幣政策預期及跨市場聯動的多因子量化模型,結合美國8月CPI超預期上行與初請失業金人數激增的動態數據,分析黃金價格的高位持穩機制,揭示就業市場對美聯儲降息預期的協同支撐效應。一、…

Java--多線程基礎知識(2)

一.多線程的中斷1.通過自定義的變量來作為標志位import java.util.Scanner;public class Demo1 {public static boolean flg false;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(()->{while (!flg){System.out.println(&qu…

Qit_計網筆記

第1章 概述1.1 計算機網絡在信息時代中的作用一、計算機網絡基礎概念(一)計算機網絡的定義定義:計算機網絡在信息時代中起到核心作用,實現了萬物聯網和人人用網的目標。(二)計算機網絡的特點信息時代特征&a…

【C++11】initializer_list列表初始化、右值引用和移動語義、可變參數模版等

目錄 前言 一、簡介一下C11 二、{}列表初始化 三、右值引用和移動語義 四、右值引用和移動語義的使用場景 五、右值引用和移動語義在傳參中的提效 六、引用折疊和完美轉發 七、可變參數模板 前言 本文主要介紹C11中新增的一些重要語法:包括initializer_list列表初…

MP3 ID3標簽中的數字流派代碼和文本值翻譯成的中文列表

將MP3 ID3標簽中的數字流派代碼和文本值翻譯成的中文列表:■ 數字代碼流派:0 布魯斯 (Blues)1 古典搖滾 (Classic Rock)2 鄉村音樂 (Country)3 舞曲 (Dance)4 迪斯科 (Disco)5 放克 (Funk)6 垃圾搖滾 (Grunge)7 嘻哈 (Hip-Hop)8 爵士樂 (Jazz)9 金屬樂 (M…

U8g2庫為XFP1116-07AY(128x64 OLED)實現菜單功能[ep:esp8266]

使用U8g2庫為XFP1116-07AY(128x64 OLED)實現菜單功能,核心是通過按鍵控制菜單切換、光標移動和選項選中,結合U8g2的繪圖/文本函數實現交互邏輯支持多級菜單(主菜單→子菜單→功能執行),并兼容ES…

easy-dataset 框架綜合技術分析:面向領域特定 LLM 指令數據的合成

摘要 本報告對 easy-dataset 框架 進行全面技術剖析,該框架旨在解決大型語言模型(LLM)在特定領域應用中的核心瓶頸——高質量指令微調數據的稀缺性。隨著 LLM 技術發展,其應用能力不再僅依賴模型參數規模,而是更依賴通…

【開題答辯全過程】以 4s店汽車銷售系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人,語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

測試中的Bug

文章目錄軟件測試的生命周期軟件測試的各個階段線上環境測試中的BUG描述測試BUGBUG的級別為啥要定義BUG的級別?BUG有哪些級別呢?BUG的生命周期測試與開發發生爭執怎么辦?測試與開發會發生啥爭執?為啥會發生這樣的爭執?…

aws共享一個鏡像并有畫圖功能

這樣可以方便的把系統安裝好,不會重復勞動了。 這個是frequi 單獨安裝 wget https://github.com/freqtrade/frequi/releases/download/2.0.7/freqUI.zip freqtrade install-ui pip install -U -r requirements-plot.txt 在AWS上把已經安裝好的環境共享給其他用戶。…

C語言---goto語句

文章目錄基本語法代碼示例goto 的常見用途(盡管不推薦)為什么 goto 聲名狼藉?(goto的缺點)如何避免使用 goto?(替代方案)goto 語句是一種無條件跳轉語句,它用于將程序的控…

Flask框架的簡單了解

🤟致敬讀者 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺 📘博主相關 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息 文章目錄1. 前言2. 簡介3. 核心特點4. 代碼實例5. 主要…

——貪心算法——

目錄 1 檸檬水找零 2 將數組和減半的最少操作次數 3 最大數 4 擺動序列 5 最長遞增子序列 6 遞增的三元子序列 7 最長連續遞增序列 8 買賣股票的最佳時機 9 買賣股票的最佳時機 II 10 K 次取反后最大化的數組和 11 按身高排序 12 優勢洗牌 13 最長回文串 14 增減…

網絡操作系統與分布式操作系統的區別

網絡操作系統與分布式操作系統的區別架構設計網絡操作系統(NOS)基于客戶端-服務器模型,通過共享資源(如文件、打印機)提供服務,各節點保留獨立的管理和數據處理能力。分布式操作系統(DOS&#x…

RabbitMQ—運維篇

RabbitMQ安裝 RabbitMQ需要依賴erlang,如果普通安裝需要安裝erlang并保證二者兼容,因此選擇較為簡單的docker安裝方式 1.獲取rabbitmq鏡像 docker pull rabbitmq:3.11.19-management #rabbitmq-management表示帶有客戶端(控制臺) …

【學習K230-例程21】GT6700-UDP-Client

B站視頻 UDP 簡介 UDP 是 User Datagram Protocol 的簡稱,中文名是用戶數據報協議,是 OSI(Open SystemInterconnection,開放式系統互聯)參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送…

LazyLLM教程 | 第9講:微調實踐:讓大模型和向量模型更懂你的領域

前面教程中,我們通過優化檢索策略、召回重排略以及基于大模型的查詢重寫策略來提升了RAG系統的檢索精度,但最終回復的結果還需要經過大模型的融合和處理,模型能力的強弱直接影響到最終的結果。這就好比一道好的菜不僅需要有高質量的食材&…