適用於雲端的 Microsoft Defender 中的無代理程式代碼掃描
適用於雲端的 Microsoft Defender 中的無代理程式程式碼掃描為 Azure DevOps 中的所有存放庫提供快速且可調整的安全性涵蓋範圍。 它快速找出程式代碼和基礎結構即程式代碼 (IaC) 設定中的弱點,而不需要代理程式或持續整合和持續部署 (CI/CD) 管線變更。 此方法可簡化單一 Azure DevOps 連接器的設定和維護,並提供廣泛的涵蓋範圍、持續深入解析,以及可採取動作的安全性結果。 它可讓安全性和開發小組專注於順暢地修正風險,而不會中斷開發工作流程。
必要條件
發行狀態:公開預覽
支援的使用案例:
雲端:Azure 商業雲端
支援的區域:澳大利亞東部、加拿大中部、美國中部、東亞、美國東部、北歐、瑞典中部、英國南部、西歐
支持的環境:Azure DevOps 連接器
角色和權限:
若要設定及設定連接器:
- 專案集合管理員:Azure DevOps 中執行初始設定的必要專案。
- 訂用帳戶參與者:在 Azure 訂用帳戶上建立及設定連接器所需的參與者。
若要檢視安全性結果:
- 安全性系統管理員:可以管理安全性設定、原則和警示,但無法修改連接器。
- 安全性讀取者:可以檢視建議、警示和原則,但無法進行任何變更。
重點優勢
- 主動式風險管理:在開發程式中早期識別風險。 這支援安全編碼作法,並降低弱點,再到達生產環境。
- 輕鬆上線:使用最少的設定快速設定,且不會變更管線。
- 企業級集中式管理:使用單一連接器自動掃描多個存放庫的程序代碼。 這為大型環境提供廣泛的涵蓋範圍。
- 快速補救的深入解析:在上架后立即接收可採取動作的弱點深入解析。 這可快速修正並降低曝光時間。
- 開發人員友好且順暢:獨立於持續整合和持續部署 (CI/CD) 管線獨立運作,不需要變更或直接參與開發人員。 這可讓您持續進行安全性監視,而不會中斷開發人員的生產力或工作流程。
風險偵測功能
無代理程式代碼掃描可藉由針對程式代碼和基礎結構即程序代碼 (IaC) 範本提供針對性的安全性建議,以改善安全性。 這是除了透過連接器提供的基礎雲端安全性狀態管理 (CSPM) 安全性建議之外。 主要偵測功能包括:
- 程式代碼弱點:尋找多個程式設計語言中的常見程式代碼錯誤、不安全的程式代碼撰寫做法和已知弱點。
- 基礎結構即程式代碼設定錯誤:偵測 IaC 範本中可能導致不安全部署的安全性設定錯誤。
建立連接器可藉由提供存放庫、管線和服務連線的基本安全性建議集來增強安全性。
掃描工具
無代理程式代碼掃描會使用各種開放原始碼工具來尋找程式代碼和基礎結構即程式代碼 (IaC) 範本中的弱點和設定錯誤:
工具 | 支援的 IaC/語言 | 授權 |
---|---|---|
Bandit | Python | Apache 2.0 |
Checkov | Terraform IaC 範本、Terraform 方案檔案、AWS CloudFormation 範本、Kubernetes 指令清單檔案、Helm 圖表檔案、Dockerfiles、Azure Resource Manager (ARM) IaC 範本、Azure Bicep IaC 範本、AWS SAM 範本(無伺服器應用程式模型)、Kustomize 檔案、無伺服器架構範本、OpenAPI 規格檔案 | Apache 2.0 |
ESLint | JavaScript、TypeScript、JSX、TSX | 麻省理工學院 |
範本分析器 | ARM IaC 範本、Bicep IaC 範本 | 麻省理工學院 |
Terrascan | Terraform IaC 範本 (HCL2)、Kubernetes 指令清單檔案 (YAML/JSON)、Dockerfiles、AWS CloudFormation 範本 (YAML/JSON)、Azure ARM IaC 範本、Helm 圖表檔案 (v3)、Kustomize 檔案 | Apache 2.0 |
這些工具支援各種不同的語言和 IaC 架構,確保跨程式代碼基底進行徹底的安全性分析。
支援的平台和文件類型
版本控制系統。
- Azure DevOps:完全支援透過 Azure DevOps 連接器連線的存放庫。
程式語言
- Python
- JavaScript/TypeScript
基礎結構即程序代碼 (IaC) 平臺和組態
IaC 平臺 | 支援的檔案類型 | 注意事項 |
---|---|---|
Terraform | .tf , .tfvars |
支援 HCL2 語言的 Terraform IaC 範本,包括中的 .tfvars 變數檔案。 |
Terraform 方案 | JSON 檔案 | 包含代表計劃組態的 JSON 檔案,用於分析和掃描。 |
AWS CloudFormation | JSON、YAML 檔案 | 支援 AWS CloudFormation 範本來定義 AWS 資源。 |
Kubernetes | YAML、JSON 檔案 | 支援 Kubernetes 指令清單檔案,以定義叢集中的組態。 |
Helm | Helm 圖表目錄結構,YAML 檔案 | 遵循 Helm 的標準圖表結構;支援 Helm v3 圖表檔案。 |
Docker | 名為 Dockerfile 的檔案 | 支援容器組態的 Dockerfiles。 |
Azure ARM 範本 | JSON 檔案 | 支援 JSON 格式的 Azure Resource Manager (ARM) IaC 範本。 |
Azure Bicep | .bicep 檔案 | 支援適用於 ARM 的網域特定語言 Bicep IaC 範本。 |
AWS SAM | YAML 檔案 | 支援無伺服器資源的 AWS 無伺服器應用程式模型 (SAM) 範本。 |
Kustomize | YAML 檔案 | 支援 Kubernetes 自定義的組態檔 (Kustomize)。 |
Serverless Framework | YAML 檔案 | 支援定義無伺服器架構的無伺服器架構範本。 |
OpenAPI | YAML、JSON 檔案 | 支援 OpenAPI 規格檔案來定義 RESTful API。 |
在您的 Azure DevOps 組織中啟用無代理程式代碼掃描
若要將 Azure DevOps 組織連線到 適用於雲端的 Defender 並啟用無代理程式代碼掃描,請參閱連線 Azure DevOps 組織中的指示。 下列視覺效果顯示快速、直接的設定程序,引導您完成每個步驟以進行無縫上線。
無代理程式代碼掃描的運作方式
無代理程式代碼掃描與 CI/CD 管線無關。 它會使用 Azure DevOps 連接器來自動掃描程式代碼和基礎結構即程式代碼 (IaC) 組態。 您不需要修改管線或新增延伸模組。 此設定可跨多個存放庫進行廣泛且持續的安全性分析。 結果會直接在 適用於雲端的 Microsoft Defender 中處理並顯示。
掃描程式
在連接器內啟用無代理程式代碼掃描功能之後,掃描程式會遵循下列步驟:
- 存放庫探索:系統會在連接器建立之後,自動識別透過 Azure DevOps 連接器連結的所有存放庫,然後每隔 8 小時一次。
- 程序代碼擷取:它會從每個存放庫的預設 (main) 分支安全地擷取最新的程式碼,以進行分析,先在連接器設定之後,再每隔 3-4 天。
- 分析:系統使用一組內建掃描工具,在 適用於雲端的 Microsoft Defender 內管理和更新,以尋找程式代碼和 IaC 範本中的弱點和設定錯誤。
- 結果處理:它會透過 適用於雲端的 Defender的後端處理掃描結果,以建立可採取動作的安全性建議。
- 結果傳遞:系統會將結果顯示為 適用於雲端的 Defender 的安全性建議,讓安全性小組檢閱並解決問題。
掃描頻率和持續時間
- 掃描頻率:
- 當您建立連接器,然後每隔 8 小時評估存放庫、管線和服務連線的安全性狀態。
- 在您建立連接器之後,系統會掃描程式代碼和基礎結構即程序代碼 (IaC) 範本是否有弱點,然後每 3-4 天一次。
- 掃描持續時間:掃描通常會在 15 到 60 分鐘內完成,視存放庫的大小和複雜度而定。
檢視和管理掃描結果
掃描完成後,您可以在 適用於雲端的 Microsoft Defender 記憶體取安全性結果。
存取結果
流覽至 [適用於雲端的 Microsoft Defender] 中的 [安全性建議] 索引標籤。
檢閱建議清單,其中包括下列結果:
Azure DevOps 存放庫應該已解決 程式代碼掃描結果 - 指出在程式代碼存放庫中發現的弱點。
Azure DevOps 存放庫應具有基礎結構,因為程式代碼掃描結果已 解決 - 指向存放庫內 IaC 範本檔案中偵測到的安全性設定錯誤。
Azure DevOps 連接器所產生的其他安全性建議可能包括:
- Azure DevOps 存放庫應已啟用適用於 Azure DevOps 的 GitHub 進階安全性 (GHAzDO)
- Azure Pipelines 不應該有秘密可供分支建置
- Azure DevOps 服務連線不應授與所有管線的存取權
- 具有秘密變數的 Azure DevOps 變數群組不應授與所有管線的存取權
- Azure DevOps 傳統 Azure 服務連線不應該用來存取訂用帳戶
- (預覽)Azure DevOps 存放庫至少需要兩個檢閱者核准程式代碼推送
- (預覽)Azure DevOps 存放庫不應允許要求者核准自己的提取要求
- (預覽)Azure DevOps Projects 應該已停用傳統管線的建立
- Azure DevOps 安全檔案不應授與所有管線的存取權
選取任何建議以取得詳細資訊,包括受影響的檔案、嚴重性層級和補救指引。
無代理程式代碼掃描與管線內掃描之間的差異
使用 Microsoft Security DevOps 擴充功能進行無代理程式代碼掃描和管線內掃描都提供 Azure DevOps 內的安全性掃描。 它們服務於不同的需求,但一起工作得很好。 下表強調主要差異,以協助您選擇符合安全性和開發需求的選項。
層面 | 無代理程式代碼掃描 | 管線內掃描 |
---|---|---|
使用案例大小 | 提供廣泛的涵蓋範圍,以最少的干擾給開發人員 | 提供具有可自定義控件的詳細管線整合式掃描 |
掃描範圍和涵蓋範圍 | 著重於基礎結構即程序代碼 (IaC) 和程式代碼弱點掃描,每 3-4 天排程一次 | 提供廣泛的涵蓋範圍,包括在每個管線執行上觸發的二進位檔和容器映像 |
設定和組態 | 建立連接器之後不需要進一步設定 | 每個 CI/CD 管線都需要手動安裝和設定 |
管線整合 | 獨立於 (CI/CD) 管線執行,而不需修改工作流程 | 在 CI/CD 管線內整合,需要每個管線中的設定 |
掃描器自定義 | 掃描器無法自定義或選擇性地執行 | 允許使用特定掃描器、類別、語言、敏感度層級和非Microsoft工具進行自定義 |
結果和意見反應 | 提供 適用於雲端的 Defender 內結果的存取權 | 在 CI/CD 管線中提供近乎即時的意見反應,結果也會顯示在 適用於雲端的 Defender |
中斷和失敗準則 | 無法中斷組建 | 可以設定為根據安全性結果嚴重性中斷組建 |
延展性和效能影響
無代理程式代碼掃描可避免在訂用帳戶中建立資源,而且不需要在管線程式期間進行掃描。 它會使用 Azure DevOps REST API 來提取元數據和程序代碼。 這表示 API 呼叫會計入 Azure DevOps 速率限制,但您不會產生直接數據傳輸成本。 服務會管理掃描,以確保它們保持在 Azure DevOps 速率限制內,而不會中斷開發環境。 此方法可在存放庫之間提供有效率且高效能的掃描,而不會影響 DevOps 工作流程。 如需詳細資訊,請參閱 Azure DevOps 速率和使用限制。
無代理程式代碼掃描的數據安全性、合規性和訪問控制
適用於雲端的 Microsoft Defender 的無代理程式代碼掃描服務藉由實作嚴格的數據安全性和隱私權措施,確保程式代碼的安全且符合規範的處理:
- 數據加密和訪問控制:系統會使用業界標準通訊協定加密傳輸中的所有數據。 只有授權 適用於雲端的 Defender 服務才能存取您的程序代碼。
- 數據落地和保留:掃描會與您的 Azure DevOps 連接器(美國或歐盟)位於相同的地理位置,以符合數據保護法。 系統只會在掃描期間處理程式碼,並在之後安全地刪除程序代碼,而不需要長期儲存。
- 存放庫的存取:服務會產生安全存取令牌,讓 Azure DevOps 執行掃描。 此令牌可讓您擷取必要的元數據和程序代碼,而不需要在訂用帳戶中建立資源。 只有 適用於雲端的 Defender元件可以存取,保護數據完整性。
- 合規性支援:此服務符合數據處理和隱私權的法規和安全性標準,確保符合區域數據保護需求的安全處理和掃描客戶程序代碼。
這些措施可確保安全、符合規範且有效率的程式代碼掃描程式,維護數據的隱私權和完整性。
限制(公開預覽)
在 公開預覽 階段期間,適用下列限制:
無二進位掃描:系統只會掃描程式代碼和基礎結構即程序代碼 (IaC) 檔案。
掃描頻率:每隔 3-4 天掃描存放庫。
存放庫大小:它會將掃描限制在 1 GB 以下的存放庫。
分支涵蓋範圍:掃描只涵蓋預設 (main) 分支。
工具自訂:您無法自訂掃描工具。