將 零信任 安全性內嵌至開發人員工作流程
身為開發人員,您必須有信心且安全地以速度移動。 當您複製程式代碼時,安全性的需求就會立即開始。 在本文中,您將瞭解如何使用 零信任 原則進行開發,以便快速且安全地進行創新。 零信任 設計及實作應用程式的安全性策略和方法包含下列原則:
- 明確驗證。 一律根據所有可用的資料點進行驗證及授權。
- 使用最低許可權存取。 使用 Just-In-Time 和 Just-Enough-Access (JIT/JEA)、風險型調適型原則以及資料保護來限制使用者存取權。
- 假設可能遭到入侵。 將爆炸半徑和區段存取權降至最低。 確認端對端加密,運用分析來提升資訊透明度與威脅偵測,並改善防禦。
將安全性內嵌至工作流程可協助您:
- 更快速地找出安全性弱點。
- 提供更安全的開發人員工具。
- 建立連線以改善安全性與開發小組之間的共同作業。
在建立程式代碼時創新並保護您的工作流程
Microsoft的統一解決方案,如下圖所示,跨 DevOps 和 SecOps 小組建立橋樑,以協助您加速和保護程式代碼到雲端開發。
我們的保護DevOps解決方案依賴兩個主要元件:在開發人員建立程式碼時,為開發人員提供工具以推動創新和保護開發人員工作流程。 觀看從 Microsoft Build 2022 加速並保護您的程式代碼到雲端開發會話,以了解這些元件如何保護您的開發環境。
在 Azure 和 GitHub 中實作下列最佳做法,以保護您的開發解決方案。
- 因為安全性會在開發人員複製程式代碼時啟動, 因此讓DevSecOps與 Azure 和 GitHub 跨DevOps和 SecOps 小組進行橋接,並保護您的開發環境。
- 使用 Visual Studio 和 Visual Studio Code 為任何開發人員、語言和堆疊提供彈性且功能強大的開發人員工具。
- 使用 GitHub Codespaces 和 Microsoft Dev Box,簡化雲端中整個開發生命週期工具的新開發人員上線和共同作業。
- 包含您不再分散到多個位置之程式代碼的內建知識產權保護。 協助您的小組隨時隨地使用 GitHub Actions 和 Azure Pipelines 共同作業、開發、自動化及部署程式代碼。
- 使用 GitHub 進階安全性,在開發人員工作流程中取得安全性指引和持續的安全性意見反應,其中包含程式代碼掃描、秘密掃描和相依性檢閱。
- 在 entra ID 中使用 Microsoft身分識別管理服務 ,在組織中將零信任安全性灌輸至零信任安全性。
讓您的開發生命週期 零信任 安全性
從預先認可到部署,然後操作和監視,您需要在所有開發生命週期階段都就緒的安全性解決方案。
預先認可階段
- 威脅分析模型
- IDE 安全性外掛程式
- 預先認可勾點
- 安全編碼標準
- 同行審查
85% 的程式代碼瑕疵出現在開發前階段,主要是因為人為錯誤。 在 Visual Studio Code、Visual Studio 或 GitHub Codespaces 中撰寫程式代碼,以識別弱點和安全程式代碼,以專注於安全性。 使用對等檢閱來鼓勵安全的編碼做法。
認可 (CI) 階段
- 靜態程式碼分析
- 安全性單元測試
- 相依性管理
- 認證掃描
在認可階段,使用廣泛的安全性方法來檢閱您的程式代碼(包括靜態程式代碼分析),並在將程式代碼簽入原始檔控制時掃描程序代碼。 使用認證掃描(也稱為秘密掃描或令牌掃描)來公開您可能無意中引入程式代碼基底的認證。 在您透過相依性檢閱將不安全的相依性引入環境之前,先攔截不安全的相依性。
部署 (CD) 階段
- 基礎結構即程序代碼 (IaC) 掃描
- 動態安全性掃描
- 雲端設定檢查
- 安全性驗收測試
在部署階段,查看程式代碼基底的整體健康情況,並執行高階安全性掃描來識別風險。 執行雲端設定檢查、基礎結構程式代碼檢查和安全性驗收測試,以確保與組織安全性目標一致。
操作和監視階段
- 持續監視
- 威脅情報
- 不究責的事後檢討
在操作和監視階段期間,使用持續監視和威脅情報來降低一段時間內您可能會繼承的整體相依性弱點。 執行驗屍,以取走所學到的教訓,並繼續逐一查看您的DevOps週期。
實作相依性、程序代碼和秘密掃描
若要讓開發人員更輕鬆地保護程序代碼,請使用原生和自動化功能,在整個開發生命週期中提供持續的安全性功能提供持續的意見反應。 使用 GitHub 進階安全性相依性掃描、程式代碼掃描和秘密掃描,為開發人員和社群提供整體安全性。
相依性掃描
- 相依性的整合式檢閱
- 警示和安全性更新
使用持續 相依性掃描,取得相依性的風險層級,以及自動修正程式代碼基底中易受攻擊的相依性。 作為一個連續的程式,它會以友好且不顯眼的方式,將開發人員推入正確的方向。
程式碼掃描
- 程式代碼掃描的可延伸架構
- 在開發人員工作流程內整合
- 支援業界領先的 CodeQL 引擎
當您 產生程式代碼時,實作程式 代碼掃描,而不需要其他步驟即可在不同的位置執行。 藉由檢視您熟悉的 GitHub 用戶體驗中的掃描結果,以簡化開發生命週期早期修正程式。
祕密掃描
- 掃描公開和私人存放庫中洩露的秘密
- 與 40+ 個以上的提供者合作
- 推送保護
- 從補救移至預防
- 檢查高信賴度秘密
- 使用一個選取專案啟用保護
使用秘密掃描來掃描您的程序代碼,以取得硬式編碼的認證和令牌。 推送保護會先掃描秘密和令牌,再推送至程式代碼基底。 當開發人員推送程式代碼時,檢查高信賴度秘密,在 GitHub 識別秘密時封鎖推送。
管理和保護工作負載身分識別
- 生命週期管理
- 存取控管
- 安全自適性存取
瞭解工作負載身分識別的活動,並啟用定期清除。 判斷誰擁有工作負載身分識別,以及如何讓這項資訊在整個組織變更中保持最新狀態。 追蹤您上次使用的工作負載身分識別、上次核發令牌的時間,以及令牌到期的時間。
若要降低洩漏秘密和認證的可能性,請定期進行存取權檢閱。 要求使用者檢閱其工作負載身分識別,並移除不必要的訪問許可權。 讓使用者報告許可權過高和使用量過低的存取許可權。 討論如何保護工作負載身分識別免於外洩。 啟用條件式存取,以確保存取源自預期的資源。
使用 GitHub OIDC 和 Microsoft Entra 工作負載 ID 同盟保護身分識別
若要進一步保護您的組織,請使用 GitHub OpenID Connect (OIDC) 搭配 Microsoft Entra Workload Identity Federation ,並將儲存和存取秘密的需求降到最低。 安全地管理 Azure 伺服器主體秘密和其他長期雲端認證資源,以將服務停機時間降到最低,因為認證已過期。 與 GitHub Actions 等開發人員平臺整合,以安全地建置您的應用程式。
我們建議的工作負載身分識別同盟工作流程,如下圖所示,包含六個步驟。
- 在 Microsoft Entra ID 中設定信任,並要求令牌。
- 設定 GitHub 工作流程以允許動作取得令牌。
- GitHub 工作流程會將要求傳送至 Azure 識別碼。
- Microsoft Entra 識別符會驗證應用程式的信任,並擷取金鑰來驗證令牌。
- Microsoft Entra ID 存取併發出令牌。
- 部署動作會使用 Microsoft Entra 存取令牌來部署至 Azure 中的資源。
觀看 4 月愛德華茲、資深雲端大使和 DevOps 實務主管,示範工作負載身分識別同盟工作流程。 示範從 Microsoft 組建 2022 工作階段中的 19:14 標記開始, 加速並保護您的程式代碼到雲端開發。
下一步
- 註冊 Azure 開發人員 CLI,這是一種開放原始碼工具,可加速開始使用 Azure 所需的時間。
- 將 Azure 設定為信任 GitHub 的 OIDC 作為同盟身分識別。 OpenID Connect (OIDC) 可讓您的 GitHub Actions 工作流程 存取 Azure 中的資源,而不需要將 Azure 認證儲存為長期存在的 GitHub 秘密。
- 如備忘錄 22-09 中所述實作 零信任 原則(支持美國行政命令 14028,改善美國網路安全),方法是使用Microsoft Entra ID 作為集中式身分識別管理系統。
- 使用 Azure DevOps 加速並保護您的程式代碼,其工具可讓開發人員獲得最快速且最安全的雲端體驗程式代碼。
- 保護開發人員環境可協助您在開發環境中實作 零信任 原則,並提供最低許可權、分支安全性和信任工具、延伸模組和整合的最佳做法。
- 保護適用於 零信任的DevOps環境說明保護DevOps環境的最佳做法,以防止駭客入侵開發人員方塊、感染惡意腳本的發行管線,以及透過測試環境存取生產數據。
- 自定義令牌描述您可以在 Entra 令牌 中接收的資訊Microsoft。 它說明如何自定義令牌,以改善彈性和控制,同時提高應用程式零信任安全性與最低許可權。
- 在令牌 中設定群組宣告和應用程式角色會示範如何使用應用程式角色定義來設定應用程式,並將安全組指派給應用程式角色。 這些方法有助於改善彈性和控制,同時以最低許可權增加應用程式零信任安全性。