共用方式為


安全性控制 v3:DevOps 安全性

DevOps 安全性涵蓋與 DevOps 流程中安全性工程和作業相關的控制項,包括在部署階段之前部署重要的安全性檢查 (例如靜態應用程式安全性測試和弱點管理),以確保整個 DevOps 流程的安全性;它也包含威脅模型化和軟體供應安全性等常見主題。

DS-1:進行威脅模型化

CIS 控件 v8 標識碼 () NIST SP 800-53 r4標識符 (s) pci-DSS ID (s) v3.2.1
16.10, 16.14 SA-15 6.5, 12.2

安全性準則:執行威脅模型化來識別潛在威脅,並列舉緩和控件。 請確定您的威脅模型化有下列用途:

  • 保護生產運行時間階段中的應用程式和服務。
  • 保護用於建置、測試和部署的成品、基礎 CI/CD 管線和其他工具環境。

威脅模型化至少應包含下列層面:

  • 定義應用程式的安全性需求。 請確定威脅模型化中已適當地解決這些需求。
  • 分析應用程式元件、數據連線及其關聯性。 請確定此分析也包含應用程式範圍外的上游和下游連線。
  • 列出應用程式元件、數據連線和上游和下游服務可能公開的潛在威脅和攻擊向量。
  • 識別可用來減輕列舉威脅的適用安全性控制措施,並識別任何控件缺口 (例如,可能需要其他處理計劃的安全性弱點) 。
  • 列舉並設計可減輕所識別弱點的控件。

Azure 指引:使用威脅模型化工具,例如 Microsoft 威脅模型化工具與內嵌的 Azure 威脅模型範本,以推動威脅模型化程式。 使用 STRIDE 模型來列舉內部和外部的威脅,並識別適用的控件。 請確定威脅模型化程式包含 DevOps 程式中的威脅案例,例如透過不安全的成品存放庫插入惡意代碼,並具有設定錯誤的訪問控制原則。

如果使用威脅模型化工具並不適用,您至少應該使用問卷型威脅模型化程式來識別威脅。

確定當您的應用程式或威脅環境中發生重大安全性影響變更時,會記錄並更新威脅模型化或分析結果。

實作和其他內容:

客戶安全性項目關係人 (深入瞭解)

DS-2:確保軟體供應鏈安全性

CIS 控件 v8 標識碼 () NIST SP 800-53 r4標識符 (s) pci-DSS ID (s) v3.2.1
16.4, 16.6, 16.11 SA-12、SA-15 6.3, 6.5

安全性準則:確定您企業的 SDLC (軟體開發生命週期) 或程式包含一組安全性控制措施,可控管內部和第三方軟體元件, (包括專屬和開放原始碼軟體) 應用程式具有相依性的位置。 定義限制條件,防止易受攻擊或惡意元件整合並部署到環境中。

軟體供應鏈安全性控制至少應包含下列層面:

  • 識別開發、建置、整合和部署階段所需的上游相依性。
  • 當上游有可用的修正程式時,清查並追蹤內部和第三方軟體元件是否有已知的弱點。
  • 使用靜態和動態應用程式測試來評估軟體元件中的弱點和惡意代碼是否有未知的弱點。
  • 請確定使用適當的方法來減輕弱點和惡意代碼。 這可能包括原始程式碼本機或上游修正、功能排除和/或套用補償控件,如果無法使用直接風險降低。

如果您的生產環境中使用封閉式來源第三方元件,您可能會有其安全性狀態的有限可見度。 您應該考慮訪問控制、網路隔離和端點安全性等其他控制措施,以在有與元件相關聯的惡意活動或弱點時,將影響降到最低。

Azure 指引:針對 GitHub 平臺,請透過下列功能或工具,從 GitHub Advanced Security 或 GitHub 的原生功能,確保軟體供應鏈安全性:

  • 使用相依性圖形,透過諮詢資料庫掃描、清查及識別您所有專案的相依性和相關弱點。
  • 使用 Dependabot 確保追蹤並修復易受攻擊的相依性,並確保存放庫會自動掌握其相依的套件和應用程式最新版本。
  • 從外部來源程式代碼時,使用 GitHub 機器碼掃描功能來掃描原始程式碼。
  • 使用適用於雲端的 Azure Defender,在 CI/CD 工作流程中整合容器映像的弱點評估。

針對 Azure DevOps,您可以使用第三方擴充功能來實作類似的控件,以清查、分析和補救第三方軟體元件及其弱點。

實作和其他內容:

客戶安全性項目關係人 (深入瞭解)

DS-3:保護 DevOps 基礎結構

CIS 控件 v8 標識碼 () NIST SP 800-53 r4標識符 (s) pci-DSS ID (s) v3.2.1
16.7 CM-2、CM-6、AC-2、AC-3、AC-6 2.2, 6.3, 7.1

安全性準則:確保 DevOps 基礎結構和管線遵循環境的安全性最佳做法,包括您的建置、測試和生產階段。 這通常包含下列範圍的安全性控制項:

  • 儲存原始程式碼、建置套件和映像、專案成品和商務數據的成品存放庫。
  • 裝載 CI/CD 管線的伺服器、服務和工具。
  • CI/CD 管線設定。

Azure 指引:在將 Azure 安全性基準套用至 DevOps 基礎結構安全性控件時,請排定下列控件的優先順序:

  • 保護成品和基礎環境,以確保 CI/CD 管線不會成為插入惡意代碼的途徑。 例如,檢閱 CI/CD 管線,以識別 Azure DevOps 核心區域中的任何錯誤設定,例如組織、專案、使用者、管線 (組建 & 發行) 、連線和組建代理程式,以識別任何錯誤設定,例如開放式存取、弱式驗證、不安全的聯機設定等等。 針對 GitHub,請使用類似的控件來保護組織許可權等級
  • 在管線中設定 Azure AD、原生服務和 CI/CD 工具中的身分識別/角色許可權和權利原則,以確保管線的變更獲得授權。
  • 避免使用 Azure 受控識別、Just-In-Time 存取等功能,為開發人員或測試人員等人類帳戶提供永久「常設」特殊許可權存取。
  • 從 CI/CD 工作流程作業中使用的程式代碼和腳本中移除密鑰、認證和秘密,並將其保留在密鑰存放區或 Azure 金鑰保存庫 中。
  • 如果您執行自我裝載的組建/部署代理程式,請遵循 Azure 安全性效能評定控件,包括網路安全性、狀態和弱點管理,以及端點安全性來保護您的環境。

實作和其他內容:

客戶安全性項目關係人 (深入瞭解)

DS-4:將靜態應用程式安全性測試整合到 DevOps 管線

CIS 控件 v8 標識碼 () NIST SP 800-53 r4標識符 (s) pci-DSS ID (s) v3.2.1
16.12 SA-11 6.3, 6.5

安全性準則:確保靜態應用程式安全性測試 (SAST) 是 CI/CD 工作流程中控制控件的一部分。 您可以根據測試結果設定限制,防止易受攻擊的套件認可至存放庫、組建至套件,或部署到生產環境。

Azure 指引:將 SAST 整合到您的管線中,以便在 CI/CD 工作流程中自動掃描原始碼。 Azure DevOps Pipeline 或 GitHub 可以將下列工具和第三方 SAST 工具整合到工作流程中。

  • 用於原始程式碼分析的 GitHub CodeQL。
  • 適用於 Windows 和 *nix 二進位分析的 Microsoft BinSkim 二進位分析器。
  • Azure DevOps 認證掃描器和 GitHub 原生秘密掃描,以在原始程式碼中掃描認證。

實作和其他內容:

客戶安全性項目關係人 (深入瞭解)

DS-5:將動態應用程式安全性測試整合到 DevOps 管線

CIS 控件 v8 標識碼 () NIST SP 800-53 r4標識符 (s) pci-DSS ID (s) v3.2.1
16.12 SA-11 6.3, 6.5

安全性準則:確保動態應用程式安全性測試 (DAST) 是 CI/CD 工作流程中控制控制控制元件的一部分。 您可以根據測試結果設定限制,防止將弱點組建到套件或部署至生產環境。

Azure 指引:將 DAST 整合到您的管線中,讓運行時間應用程式可以在 Azure DevOps 或 GitHub 的 CI/CD 工作流程集中自動進行測試。 自動化滲透測試 (手動輔助驗證) 也應該是DAST的一部分。

Azure DevOps Pipeline 或 GitHub 支援將第三方 DAST 工具整合到 CI/CD 工作流程中。

實作和其他內容:

客戶安全性項目關係人 (深入瞭解)

DS-6:在整個 DevOps 生命週期強制執行工作負載安全性

CIS 控件 v8 標識碼 () NIST SP 800-53 r4標識符 (s) pci-DSS ID (s) v3.2.1
7.5, 7.6, 7.7, 16.1, 16.7 CM-2、CM-6、AC-2、AC-3、AC-6 6.1, 6.2, 6.3

安全性準則:確保工作負載在開發、測試和部署階段的整個生命週期中受到保護。 使用 Azure 安全性效能評定來評估 (,例如網路安全性、身分識別管理、特殊許可權存取等) ,預設設定為護欄,或在部署階段前保持左移。 特別是,請確定下列控件已就緒於您的DevOps程式中:

  • 在 CI/CD 工作流程中使用 Azure 或第三方工具來自動化部署、基礎結構管理 (基礎結構即程式代碼) ,以及測試以減少人為錯誤和攻擊面。
  • 確保 VM、容器映像和其他成品不受惡意操作保護。
  • 在 CI/CD 工作流程中部署之前,掃描工作負載成品 (,也就是容器映射、相依性、SAST 和 DAST 掃描)
  • 將弱點評估與威脅偵測功能部署到生產環境,並在運行時間持續使用這些功能。

Azure 指引:Azure VM 的指引:

  • 使用 Azure 共用映像庫 來共用和控制組織內不同用戶、服務主體或 AD 群組對映像的存取。 使用 Azure 角色型存取控制 (Azure RBAC) ,以確保只有授權的使用者才能存取您的自定義映像。
  • 定義 VM 的安全設定基準,以消除不必要的認證、許可權和套件。 透過自定義映像、Azure Resource Manager 範本和/或 Azure 原則 客體設定來部署和強制執行這些設定基準。

Azure 容器服務的指引:

  • 使用 Azure Container Registry (ACR) 來建立私人容器登錄,其中可透過 Azure RBAC 限制細微的存取權,因此只有授權的服務與帳戶可以存取私人登錄中的容器。
  • 使用適用於 Azure Container Registry的Defender來評估私人 Azure Container Registry中的影像。 此外,您可以使用適用於雲端的 Azure Defender 來擷取容器映射掃描作為 CI/CD 工作流程的一部分。

若為 Azure 無伺服器服務,請採用類似的控件,以確保安全性控制在部署之前會留在階段。

實作和其他內容:

客戶安全性項目關係人 (深入瞭解)

DS-7:在 DevOps 中啟用記錄和監視

CIS 控件 v8 標識碼 () NIST SP 800-53 r4標識符 (s) pci-DSS ID (s) v3.2.1
8.2, 8.5, 8.9, 8.11 AU-3、AU-6、AU-12、SI-4 10.1, 10.2, 10.3, 10.6

安全性準則:確定您的記錄和監視範圍包含 DevOps (中使用的非生產環境和 CI/CD 工作流程元素,以及任何其他開發程式) 。 如果這些環境未正確監視這些環境的弱點和威脅,可能會對生產環境造成重大風險。 您也應監視 CI/CD 組建、測試和部署工作流程中的事件,以利識別 CI/CD 工作流程作業中的偏差現象。

Azure 指引:在非生產環境與 CI/CD 工具環境中啟用和設定稽核記錄功能, (例如在 DevOps 程式中使用的 Azure DevOps 和 GitHub) 。

建置、測試和部署作業的 Azure DevOps 和 GitHub CI/CD 工作的事件也應該受到監視,以識別 CI/CD 作業中的任何例外狀況結果。

透過記錄串流或 API 將上述記錄和事件擷取至 Azure Sentinel 或其他 SIEM 工具,以確保已正確監視並分級安全性事件進行處理。

遵循 Azure 安全性效能評定 – 記錄和威脅偵測作為實作工作負載記錄和監視控件的指導方針。

實作和其他內容:

客戶安全性項目關係人 (深入瞭解)