建置階段概觀
建置容器映像是容器安全供應鏈 (CSSC) 架構的第三個階段。 雖然有些企業會直接從外部來源提取基底映射,但有些企業可能會從內部目錄提取基底映射,而不需根據其簽章和證明來驗證映像。 請務必確保基底映像一律從內部目錄提取,並在使用之前經過驗證。 建置映射之後,有些企業會發佈這些映像,而不會進行弱點和惡意代碼掃描,而且無法產生SBOM等證明,而SBOM無法在後續供應鏈階段進行驗證。 請務必確保產生的容器映像受信任且符合企業原則。
Microsoft 的容器安全供應鏈 (CSSC) 架構可識別建置容器映射的需求,並提供一組最佳做法和工具,協助您安全地建置受信任且相容的映像。 在本文中,您將瞭解可在 CSSC 架構建置階段中使用的目標、最佳做法和工具。
背景
目前,企業會使用各種方法來安全地建置相容的容器映像。 在建置容器映射之前,需要內部小組才能從內部 黃金登錄提取基底映射。 不過,這些映像在使用之前不會經過驗證,不建議這麼做,因為 黃金登錄 可能會遭到入侵,而且映像可能會變成惡意。 企業也會控制新增至容器映像的連結庫和套件來源,以確保品質。
建置容器映射之後,企業會產生額外的元數據,以確保容器映像符合規範。 有些企業會利用 SLSA 證明檔,知道哪個 Git 認可負責產生容器映射,以及其是否可重現。 其他人則使用 Docker 標籤在容器映像的擁有者上提供證明,以及誰負責認可映像。 有些企業會掃描映像中是否有弱點和惡意代碼,並據此產生報告。
CSSC 架構的建置階段會建議一組步驟和安全性控制措施,以在發佈之前產生可信任且相容的容器映像。
建議做法
Microsoft 建議下列做法安全地建置符合規範的容器映射。
- 僅從內部目錄提取基底映射,以減少受攻擊面並改善安全性。
- 當可用時,請先確認基底映射的簽章和證明,再使用它們,以確保它們可信任且符合規範。
- 無散發映像 只包含應用程式和其運行時間相依性,而不需要任何額外的軟體或操作系統元件。 使用無散發映射作為基底映射,以減少受攻擊面並改善安全性。
- 將最低許可權存取套用至建置平臺或服務,以確保只有授權的使用者能夠進行變更或修改,從而降低未經授權的存取、數據外泄和其他安全性事件的風險。
- 掃描容器映射中是否有弱點和建置後的惡意代碼,以降低引入安全性弱點的風險。
- 使用SBOM和源頭元數據等其他元數據,在建置之後擴充容器映像。
- 使用企業金鑰簽署建置之後的容器映像和相關元數據,以確保完整性並提供信任的核准戳記以供內部使用。
- 及時修補容器映像,以解決已知的弱點。
- 讓相依性保持最新狀態,以跟上弱點和安全性修正。
建置相容容器映像的工作流程
建置階段有工作流程,可建立符合組織和安全策略的容器映像。 請務必將許可權等級訪問控制套用至僅限授權用戶的組建平臺或服務。 當目錄提供基底映射時,建置工作流程會執行下列動作:
- 僅從內部目錄提取基底映像。
- 使用基底映像之前先確認基底映射,以確保其可信任且符合規範。
- 在基礎映像之上,從信任來源新增其他架構、應用程式程式代碼和/或組態,以進行建置。
- 在建置程式期間產生 SBOM。
- 在建置後掃描產生的容器映射中是否有已知的弱點和惡意代碼,以避免引入安全性缺陷。
- 修補產生的容器映射,以解決已知的弱點和惡意代碼
- 將弱點和惡意代碼報告附加為映像證明,以在供應鏈的後續階段使用。
- 將 SBOM 附加為映像證明,以在供應鏈的後續階段使用。
- 使用其他元數據擴充產生的影像,例如在供應鏈後續階段使用的源源元數據。
- 使用企業金鑰簽署產生的映像和相關元數據,以確保完整性,併為部署階段提供信任的核准戳記
建置階段的安全性目標
擁有定義完善的工作流程來建置可信任且相容的容器映像,可協助企業提高其安全性,並減少容器供應鏈上的受攻擊面。 CSSC 架構的建置階段旨在滿足下列安全性目標。
由於訪問控制不當,降低受攻擊面
內部使用者可能會在建置基礎結構上進行非預期的變更或不正確的設定。 CSSC 架構中的建置階段預設會強制執行 最低許可權訪問控制 來解決此風險,讓資源擁有者能夠確保正確的人員有權進行變更和設定,進而減少受攻擊面。
減少惡意內部使用者的受攻擊面
身分識別竊取可用來存取建置平臺、修改二進位檔,以及插入原始開發人員和使用者看不到的非法變更。 也有插入易受攻擊的程式代碼或內部使用者設定錯誤的風險。 CSSC 架構中的建置階段會套用 Azure 角色型訪問控制(Azure RBAC), 並從各種程式碼擁有者強制執行程式碼檢閱,以解決此風險。
減少受攻擊面,因為外部相依性
來自外部來源的基底映像可能是惡意的。 外部登錄可能會遭到入侵。 CSSC 架構中的建置階段只會使用目錄中的基底映像,並對其簽章、弱點和惡意代碼報告和其他映射元數據進行驗證,再加以使用,以解決此風險。
具有隱藏後門的惡意開放原始碼軟體 (OSS) 套件可能會導致套件的二進位檔與原始程式碼不相符。 相依性或開放原始碼元件的有效性可能會過期,並封鎖上游的最新安全性修正程式。 CSSC 架構中的建置階段會使用核准的連結庫、定期掃描弱點和惡意代碼,以及讓連結庫保持最新狀態,來解決此風險。
減少受入侵組建所造成的攻擊面
易受攻擊的組建代理程式可以插入側邊二進位檔或惡意代碼,以致於 SolarWinds 攻擊之類的攻擊。 CSSC 架構中的建置階段會定期修補組建代理程式,以解決此風險。
確保影像品質下限
在 CSSC 架構的建置階段,企業可以在建置後設定映像弱點和惡意代碼掃描所需的步驟,併產生報告。 企業也可以在建置後使用其他元數據來擴充映像,包括 SBOM、源頭元數據,以及其他符合其原則的內部元數據。 他們也可以使用企業密鑰簽署成品,以確保完整性,併為部署階段提供受信任的核准戳記。
建議的工具
Microsoft 提供一組工具和服務,可協助企業在建置階段工作流程中實作建議的步驟,並解決上面所列的安全性目標。
建置後保持最新狀態的工具
Dependabot 是透過提取要求將相依性更新自動化的工具。 如需詳細資訊和後續步驟,請參閱 本指南 。
Copa 是 Microsoft 支援的開放原始碼專案,可根據弱點掃描結果解決容器映像中的 Linux OS 套件弱點。 如需詳細資訊和後續步驟,請參閱 本指南 。
持續弱點掃描和修補映像的工具和服務
適用於雲端的 Microsoft Defender 是雲端原生解決方案,可改善、監視和維護容器化工作負載的安全性。 適用於雲端的 Microsoft Defender 針對儲存在 Azure Container Registry 中的映像提供弱點評量和管理工具。
Copa 是 Microsoft 支援的開放原始碼專案,可根據弱點掃描結果解決容器映像中的 Linux OS 套件弱點。 如需詳細資訊和後續步驟,請參閱 本指南 。
使用企業元數據擴充外部映像的工具和服務
ORAS 是由 Microsoft 支援的NCF 專案,提供開放原始碼 CLI 和連結庫來與 OCI 登錄互動。 ORAS 可用來新增批注,並將元數據附加至容器映像。 ORAS 可用來新增 SBOM、源頭元數據和其他元數據,以擴充供應鏈後續階段的影像。
Microsoft 的 SBOM 工具 是開放原始碼、可高度擴充且企業就緒的工具,可針對各種成品建立 SPDX 2.2 兼容的 SBOM。 SBOM 工具可用來產生容器映像的詳細 SBOM。
Notary Project 是 Microsoft 支援的NCF 專案,可開發用於簽署和驗證軟體成品的規格和工具。 Notary Project 的工具 notation
可用來使用企業密鑰簽署容器映像和其他雲端原生成品。
Azure 金鑰保存庫 是雲端式服務,可提供安全且集中的位置,用於儲存和管理密碼編譯密鑰、秘密和憑證。 AKV 可用來安全地儲存和管理企業密鑰。
下一步
請參閱 部署階段 的概觀,以安全地部署容器映像。