設定適用於 GitHub 和 Azure DevOps 的 GitHub Advanced Security
GitHub Advanced Security 是 GitHub 所提供的一套安全性特性和功能,可協助組織識別及降低安全性弱點、保護其程式碼,以及保護其軟體供應鏈。 它包含下列主要元件:
- 程式碼掃描會透過使用 CodeQL 或第三方工具提供的靜態分析技術自動掃描存放庫中的程式碼是否有安全性弱點和編碼錯誤。 它會識別潛在的安全性弱點,包括與過期相依性和弱式加密相關的弱點。
- 秘密掃描可偵測秘密是否存在並協助補救,例如存放庫和認可中的 API 權杖和密碼加密金鑰。 它會自動掃描存放庫的內容,並根據其探索到的內容產生警示。
- 相依性檢閱可協助根據從封裝資訊清單和其他組態檔中擷取到的直接和可轉移的相依性來識別和管理軟體專案中的相依性。 它們可讓您評估相依性變更的完整影響,包括合併提取要求之前任何易受攻擊版本的詳細資料。
- 自訂自動分級規則可協助您大規模管理 Dependabot 警示。 使用自訂自動分級規則,您可以控制可以忽略哪些警示,以及需要套用安全性更新的警示。
- 安全性諮詢提供關於開放原始碼相依性中所發現弱點的策劃安全性諮詢和警示。
GitHub Advanced Security 會以原生方式與 GitHub 和 Azure DevOps 整合。
GitHub
GitHub 會根據 Advanced Security 授權在私人存放庫中提供其 Advanced Security 功能。 為您的組織購買 GitHub Advanced Security 授權,您可以在組織或存放庫層級啟用和停用這些功能。 這些功能也會在 GitHub.com 上的公用存放庫中永久啟用,無需任何授權先決條件,而且只有在您變更專案可見度時才能停用。
若要為您的組織設定 GitHub Advanced Security,請在 GitHub.com 右上角選取您的設定檔圖示,然後選取您的組織。 接下來,選取 [設定],然後在側邊欄的 [安全性] 區段中,選取 [程式碼安全性和分析]。 這會顯示允許您啟用或停用您的組織中存放庫的所有安全性和分析功能的頁面。
組態變更的影響取決於您的組織中存放庫的可見度:
- 私人弱點報告 - 僅限公用存放庫。
- 相依性關係圖 - 僅限私人存放庫,因為一律會針對公用存放庫啟用此功能。
- Dependabot 警示 - 所有存放庫。
- Dependabot 安全性更新 - 所有存放庫。
- GitHub Advanced Security - 僅限私人存放庫,因為一律會針對公用存放庫啟用 GitHub Advanced Security 和相關功能。
- 秘密掃描 - 會啟用 GitHub Advanced Security 的公用和私人存放庫。 此選項可控制是否啟用使用者的秘密掃描警示。
- 程式碼掃描 - 會啟用 GitHub Advanced Security 的公用和私人存放庫。
您也可以管理個別私人存放庫的安全性和分析功能。 若要這樣做,請從 GitHub.com 瀏覽至存放庫的主頁面,然後選取 [設定]。 在側邊欄的 [安全性] 區段中,選取 [程式碼安全性和分析]。 在 [程序碼安全性和分析] 窗格中,停用或啟用個別功能。 如果您的企業尚未購買必要的授權,則會停用 GitHub Advanced Security 的控制項。
請注意,如果您停用 GitHub Advanced Security,則相依性檢閱、使用者秘密掃描警示和程式碼掃描會有效停用。 因此,任何包含程式碼掃描的工作流程都會失敗。
啟用後,安全性功能會直接整合到 GitHub 平台中,直接在 GitHub 介面中提供持續的安全性監視和警示。 存放庫管理員和開發人員可以存取安全性深入解析、建議和可採取動作的步驟,以解決已識別的安全性弱點,並強化其軟體專案的整體安全性態勢。 此外,組織可以自訂安全性原則、設定自動化工作流程,以及整合 GitHub Advanced Security 與其他安全性工具和服務,以符合其特定的安全性需求和合規性需求。
Azure DevOps
適用於 Azure DevOps 的 GitHub Advanced Security 以 Azure Repos 為目標,包括:
- 秘密掃描推送保護可檢查程式碼推送是否包含暴露秘密的認可。
- 秘密掃描存放庫掃描會在存放庫中搜尋是否有暴露的秘密。
- 相依性掃描可識別開放原始碼相依性中的直接和可轉移的弱點。
- 程式碼掃描會使用 CodeQL 靜態分析來識別程式碼層級的應用程式弱點,例如 SQL 插入式和驗證略過。
Advanced Security 可以在組織、專案或存放庫層級上開啟。 這會自動啟用秘密掃描推送保護和存放庫掃描。 實際上,當秘密掃描在背景執行時,會自動封鎖任何包含秘密的未來推送。
相依性掃描是管線型的掃描工具。 結果會按存放庫彙總。 建議您將相依性掃描工作新增至您想要掃描的所有管線。 為了獲得最準確的掃描結果,請務必遵循建置您想要掃描的程式碼的管線的建置步驟來新增相依性掃描工作。 您可以將 Advanced Security 相依性掃描工作 (AdvancedSecurity-Dependency-Scanning@1) 直接新增至您的 YAML 管線檔案,或從工作助理中選取它。
程式碼掃描也是管線型的掃描工具,其中結果會按存放庫彙總。 它往往是一項耗時的建置工作,因此請考慮將程式碼掃描工作新增至主要生產管線的個別複製管線中,或建立新的管線。 在該管線內,依下列順序新增工作:
- Advanced Security 初始化 CodeQL (AdvancedSecurity-Codeql-Init@1)
- 您的自訂建置步驟
- Advanced Security 執行 CodeQL 分析 (AdvancedSecurity-Codeql-Analyze@1)
此此外,您還需要包含您正在使用 Advanced Security 初始化 CodeQL 工作分析的語言的逗號分隔清單。 支援的語言包括 csharp、cpp、go、java、JavaScript、python、ruby 和 swift。