本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
檢閱提取請求中的程式碼安全性問題清單
為您的儲存庫啟用提取請求的程式碼檢閱後,AWS Security Agent 會自動分析提取請求,並直接在來源控制提供者中發佈安全調查結果。這可讓開發人員在正常工作流程中解決安全問題,而無需離開提取請求。
注意
此頁面適用於 GitHub 提取請求、GitLab 合併請求和 Bitbucket 提取請求。所有供應商的體驗都類似。
程式碼檢閱在提取請求中的運作方式
當您在啟用程式碼檢閱的儲存庫中提交提取請求 (或在 GitLab 中合併請求) 時,AWS Security Agent 會自動開始分析。
-
提取請求分析觸發 - 當您在已啟用程式碼檢閱功能的儲存庫中將提取請求標記為「準備檢閱」時,就會觸發程式碼檢閱。草稿提取請求不會進行分析。
-
分析確認 - 當 AWS Security Agent 開始分析提取請求時,它會發佈初始評論:「AWS Security Agent 正在分析您的程式碼...」這可讓您知道分析已開始並正在進行中。
-
檢閱完成 - 分析完成後,AWS Security Agent 會將檢閱與結果一起發佈到您的提取請求。所有安全性調查結果都會在單一檢閱中批次處理,以保持提取請求井然有序,並將通知降至最低。
了解程式碼檢閱結果
AWS Security Agent 會根據其在分析期間找到的結果,提供不同類型的結果。
發現安全問題時
如果 AWS Security Agent 在程式碼變更中發現安全問題,它會發佈評論,其中包含:
-
摘要 - 所有安全性調查結果的高階概觀,說明已識別的問題類型及其潛在影響
-
個別問題清單 - 詳細的安全性問題清單會在主要檢閱下顯示為執行註解,每個問題清單包括:
-
安全問題的描述
-
在您的程式碼中發現問題的位置
-
說明如何解決問題的修補指引
-
根據您的程式碼檢閱設定的相關內容 (安全需求違規、常見漏洞或兩者)
-
注意
分析的安全性問題類型取決於您的程式碼檢閱設定。如果您已設定安全需求驗證,問題清單會參考組織的自訂安全需求。如果您設定了安全漏洞調查結果,調查結果將識別常見的安全漏洞。如需程式碼檢閱設定的詳細資訊,請參閱 啟用 GitHub 儲存庫的提取請求程式碼檢閱。
未發現安全問題時
如果 AWS Security Agent 完成分析並在程式碼中沒有發現任何安全性問題,它會發佈評論:「沒有發現問題」。這可確認檢閱已成功完成,而且您的程式碼變更不會根據您設定的程式碼檢閱設定觸發任何安全性問題清單。
回應安全性問題清單
檢閱 AWS Security Agent 發佈的安全調查結果後,您可以直接在來源控制提供者中採取動作。
-
地址調查結果 - 根據調查結果中提供的修補指引更新您的程式碼,然後將新的遞交推送至提取請求。AWS Security Agent 會分析更新的程式碼。
-
解決對話 - 解決安全問題清單後,將對話標記為已解決,以追蹤您的進度。
提示
每個調查結果都包含針對所識別安全問題量身打造的特定修補指引。請仔細檢閱本指南,以了解安全風險以及如何有效解決風險。
篩選程式碼檢閱問題清單
您可以自訂 AWS Security Agent 如何透過將filtering.md檔案新增至儲存庫來分析程式碼。此檔案可讓您提供程式碼庫的相關內容,並從分析中排除檔案或資料夾,以減少誤報。
建立篩選檔案
在儲存庫根filtering.md目錄的 .awssecurityagent 目錄中建立名為 的檔案:
.awssecurityagent/filtering.md
分析提取請求時,AWS Security Agent 會從儲存庫的主分支讀取此檔案 (例如 main或 mainline)。
檔案結構
filtering.md 檔案使用標準 Markdown 格式搭配 AWS Security Agent 辨識的特定區段。檔案必須包含Code Review標題,後面接著下列其中一個或兩個區段: IgnorePatterns和 ContextHints(無空格)。
下列範例顯示filtering.md檔案的完整結構:
# filtering.md ## Code Review ### IgnorePatterns **/*.md /myapp/src/**/*.snap /myapp/config/README ### ContextHints - The backend is a trusted system and won't return non-standard protocols. - URL is generated from server with presigned token, so no SSRF security vulnerabilities. - AppSec has verified that we are allowed to use cache with an eviction policy.
忽略模式
IgnorePatterns 本節指定 AWS Security Agent 在程式碼檢閱期間應略過的檔案和資料夾。使用 glob patterns 定義要從分析中排除的路徑。
格式需求:
-
每個模式都必須位於自己的一行。
-
以空行分隔每個模式。這可確保檔案在 GitHub 或程式碼檢閱工具中檢視時能正確轉譯。
-
模式遵循標準 glob 格式。例如,
**/*.md會比對所有 Markdown 檔案,並/myapp/src/**/*.snap比對根/myapp/src/資料夾內的所有.snap檔案。 -
本節支援最多 1000 個忽略模式。
內容提示
ContextHints 本節提供有關程式碼庫的其他內容,可協助 AWS Security Agent 進行更準確的評估。使用內容提示來說明可能影響問題清單解譯方式的架構決策、安全例外狀況或其他資訊。
格式需求:
-
每個提示必須以破折號 (
-) 開頭,後面接著空格。 -
以單行自由格式文字撰寫每個提示,限制為 500 個字元。
-
每個提示都應描述有關程式碼庫的一個特定內容。
-
本節支援最多 20 個內容提示。
內容提示會在 AWS Security Agent 完成其初始分析後套用,協助篩選不適用於您特定使用案例的問題清單。
後續步驟
檢閱程式碼安全性問題清單之後:
-
根據修補指引更新您的程式碼
-
推送新遞交以觸發變更的重新分析
-
視需要調整程式碼檢閱設定 (請參閱 啟用 GitHub 儲存庫的提取請求程式碼檢閱)
-
檢閱組織的安全需求,以了解驗證條件
-
考慮滲透測試,以全面驗證已部署應用程式的安全性