IBM Cloud Docs
配置 detect-secret 掃描

配置 detect-secret 掃描

Detect-Secret 是一種用戶端安全工具,可在程式碼庫內偵測密鑰,以補救及防止密鑰洩漏。

如需相關資訊,請參閱 IBM/detect-secret

Detect-secret 會掃描整個現行程式碼庫,並輸出目前所識別密鑰的 Snapshot。 然後會使用密鑰清單將已識別的密鑰審核為真肯定或誤肯定,DevSec工具鏈會針對真肯定建立 Git 問題。

使用基準線檔案

基準線檔案是偵測密鑰掃描的 Snapshot。 檔案會列出每次執行時的潛在密鑰,並標示誤判,這些誤判在後續執行中不會標示為問題。

基準線檔案必須定期更新。 透過確定基準檔並將其推送回儲存庫來更新及審核基準檔。 在基準線中包含這些誤判,可確保在未來掃描期間不會針對這些現有檔案建立任何問題。

分類密鑰

當偵測密鑰掃描完成時,偵測到的密鑰尚未分類為實際正面或誤判。

三個條件會分類潛在偵測到的密鑰:

  • 未審核-如果密鑰是在審核處理程序中必須檢閱的潛在密鑰,則會將該密鑰分類為未審核。
  • 已審核為實際-如果在審核期間將密鑰標示為 true 正數,且基準檔仍包含該密鑰,則該密鑰會分類為已審核為實際。
  • 即時-如果密鑰已由 detect-secret 使用的外掛程式確認為即時密鑰,則該密鑰會分類為即時密鑰。

管理基準線

下列指令會管理密鑰基準線:

  • detect-secrets scan 指令會產生基準線檔案或更新現有檔案,以包含所有偵測到執行的潛在密鑰 Snapshot。
  • detect-secrets audit 指令會標示密鑰,以便您可以縮小要移轉的密鑰核對清單範圍。

審核會將偵測到的密鑰識別為 true 或誤判,然後您可以更新基準線檔案,以便可以從未來執行的掃描中排除誤判。

更新基準線

請採取下列步驟來更新基準線:

  1. 在本端電腦上安裝 detect-secret:

    pip install --upgrade "git+https://github.com/ibm/detect-secrets.git@master#egg=detect-secrets"

  2. 執行下列指令,以掃描、產生或更新儲存庫中的基準檔:

    1. 執行下列指令,以掃描 repo 資料夾:

      detect-secrets scan --update .secrets.baseline

      當您想要忽略已知包含誤判或不需要掃描的某些檔案時,可以使用 --exclude-files 旗標。 排除規則是以正規表示式格式為基礎。

      如果要使用檔案和資料夾排除項目來執行掃描,請使用下列指令:

      detect-secrets scan --update .secrets.baseline --exclude-files '<folder_to_ignore>|<file_to_ignore>'

      範例: detect-secrets scan --update .secrets.baseline --exclude-files "package-lock.json|go.sum"

      已排除檔案的清單會記錄在基準線檔案中。

      如果後續掃描中未提供 --exclude-files 選項,則偵測密鑰會自動遵循基準線檔案中的現有排除清單。

      不過,如果您要在 detect-secrets scan 期間指定新的排除清單,新的清單會改寫基準線檔案中的現有排除清單。

    2. 執行下列指令,以檢閱及審核使用掃描步驟建立的基準檔:

      detect-secrets audit .secrets.baseline

      此指令會啟動互動式終端機來標示誤判。 如果找到的密鑰是實際密鑰,則可以指出 (y) es ; 如果是誤判,則可以指出 (n) o

    3. 確定 .secrets.baseline 檔案並將其推送回儲存庫,必須定期在本端執行他的處理程序。

Detect-secret 掃描參數

如果您有現有的基準線檔案,掃描會使用現有的配置。 不會改寫您先前的審核結果和設定。 如果不存在基準線檔案,則會自動為執行建立暫時基準線。

detect-secrets-baseline-filename 參數指定 detect-secret 所使用的基準線檔案的自訂檔名。 依預設,detect-secret 會在儲存庫根目錄中尋找名為 .secrets.baseline 的檔案。 不過,如果您以不同方式命名基準線檔案,則可以使用此參數來提供其檔名。

在沒有現有基準線檔案的情況下執行時,detect-secrets-exclusion-list 參數會置換預設排除清單。 此參數會識別要忽略的檔案,因此不會建立鏈結至它們的問題。

detect-secrets-image 參數可用來指定要使用的不同 detect-secrets 映像檔,例如自訂映像檔或官方 detect-secrets 映像檔的特定版本。

當設為 1 時,detect-secrets-verbose 參數會記載正在掃描的現行檔案名稱。

表 1. 密鑰-掃描參數
名稱 類型 說明 必要或選用
detect-secrets-baseline-filename 字串 應用程式儲存庫中基準線檔案的名稱。 預設為 .secrets.baseline 如果基準線檔案不是預設名稱 .secrets.baseline,則為必要項目。
detect-secrets-exclusion-list 字串 要在 detect-secret 掃描中排除之檔案的正規表示式清單。 預設為 requirements.txt|go.mod|go.sum|pom.xml|build.gradle|package-lock.json 選用,只有在沒有 .secrets.baseline 檔存在時,這個檔案清單才會置換一般排除清單。
detect-secrets-image 字串 指定替代偵測密鑰映像檔,包括自訂映像檔或官方映像檔的特定版本。 選用
detect-secrets-verbose 字串 輸出目前正在掃描的檔案名稱。 預設為 0 選用,除錯旗標 0-off,1-on。