在過去的幾年中,企業安全威脅層出不窮,形勢越來越嚴峻。黑客嘗試破壞開發流程上游的依賴項和工程系統,類似的高階攻擊會影響整個開發環境和軟體供應鏈。比如,最近的一個例子發生在一家軟體供應商,其開發人員工作流程和軟體供應鏈被攻擊,攻擊者獲得訪問許可權後,將新影像上傳到掃描其軟體供應鏈的數千個版本中,提取機密,並擴大漏洞。
由此看來,僅僅在 DevOps 工作流程上整合安全性是遠遠不夠的,而應該加強和保護工作流程自身的安全性。問題來了——如何保護上游開發環境呢?
GitHub Codespaces
GitHub Codespaces 解決方案能夠讓開發人員在沙盒環境中與不受信任的程式碼進行安全互動,可在任何地方和任何裝置上使用。管理使用者許可權、在正確的位置儲存加密的資訊、實施 GPG 驗證,都因 GitHub Codespaces 而變得前所未有的簡單和快速。開發團隊可以在10秒內從零開始進入到正常執行的開發環境。開發人員可以為並行工作流分離出新的程式碼空間,而無需任何開銷。在確保安全合規的同時,助力開發者生產力提升。
GitHub Actions
除了開發者的機器,企業還需要保護 DevOps 工作流程。GitHub Actions 可以幫助開發團隊輕鬆建立安全和自動化的工作流程,以構建、測試、打包、釋出和部署應用程式到 Azure 或其他雲。Azure 提供了豐富的 GitHub Actions 整合,幫助開發者採用“一切皆程式碼”(“everything as-code”)的 DevOps 模型——合規和安全策略、構建和釋出管道等都用程式碼形式編寫,從而實現持續的改進、更好的重用性和更高的透明度。
前面提到了日益複雜的安全風險,而更復雜的是,開發團隊必須在 GitHub 中儲存 Azure 服務主體機密資料,既冗餘又會增加被篡改的風險。近期,微軟宣佈了一系列預覽版功能,使開發人員能夠確保程式碼安全地被部署到Azure,而無需在 GitHub 中長時間儲存憑據。
通過最新的 Azure 和 GitHub 整合從開發人員環境中刪除憑據
一個加強抵禦攻擊的關鍵策略是:從開發環境中刪除長期存在的 Azure 憑據——現在,使用 Azure AD工作負載聯合身份驗證功能,您可以從 GitHub repo 部署到 Azure,無需建立、儲存或管理 Azure AD 應用程式的憑據。新功能減輕了在 GitHub 機密儲存中管理 Azure 服務主體機密和其他長期存在的雲憑據的需要。通過此整合,您可以在 Azure 中安全地管理所有云資源訪問。這些功能還可以最大限度地減少由於 GitHub 中的憑據過期而導致服務停機的可能性。
設定OpenID Connect(OIDC)與Azure AD和GitHub Actions的整合
完成此設定,您需要:
- 具有服務主體的 Active Directory 應用程式,該服務主體對您的訂閱具有貢獻者訪問許可權
- 一個配置了聯合憑據的 Active Directory 應用程式,以信任 GitHub Actions 向您的 GitHub 儲存庫釋出的tokens。您可以在 Azure 門戶中或使用 Microsoft Graph REST API 進行配置
- 一個 GitHub Actions 工作流,它向工作流請求 GitHub 發出tokens,並使用 azure/login@v1.4.0 操作
介紹了這麼多我們的解決方案,回到文章開頭的問題,您是否有其他保護上游開發環境的方法呢?歡迎下方留言區與我們分享見解或提出您對本文的問題!也歡迎掃描下方二維碼,瞭解更多DevSecOps