部署階段概觀
部署階段是容器安全供應鏈 (CSSC) 架構的第四個階段。 企業可能會將容器映射部署到其裝載環境,以執行容器化工作負載,而不需要驗證這些容器映像的安全性和合規性。 這會增加潛在的安全性風險,或可能導致在裝載環境中執行易受攻擊或惡意代碼。 在部署期間,應驗證先前階段所產生的容器映像元數據和證明。 這可確保部署符合全企業的安全性與合規性政策。
Microsoft 的容器安全供應鏈 (CSSC) 架構可識別以符合規範的方式部署映像的需求。 CSSC 架構建議一組標準做法和工具,藉由驗證映像元數據並實作合規性政策,協助您安全地部署映像。 在本文中,您將瞭解可在 CSSC 架構的部署階段中使用的目標、標準做法和工具。
背景
企業可以直接從外部或內部登錄部署容器映像,而不需確認容器映像不受弱點的傷害,並核准以供使用。 將不受信任的和不符合規範的容器映射部署到裝載環境會增加潛在的安全性風險,或在裝載環境中執行惡意代碼或易受攻擊的程序代碼。
CSSC 架構做法有助於確保部署就緒的容器映像來自受信任的登錄、沒有弱點和惡意代碼,並確保真實性和完整性。 許多企業都在實作原則,先驗證容器映像的 SBOM 和簽章,再將其部署至 Kubernetes,並持續掃描容器映像以驗證掃描報告。
在 [部署] 階段中,我們著重於保護容器映射和部署環境。 部署會使用容器映射簽章、生命週期元數據、弱點和惡意代碼報告、SBOM 和從建置階段產生的源數據進行驗證,以確保容器映射在部署至裝載環境之前受信任且相容。
部署容器映像的工作流程
部署階段有一個工作流程,可跨全球數百或數千個叢集部署容器映像。 部署可以動態且視需要進行。 建置、驗證和簽署容器映射之後,CSSC 架構會升級容器映射,並可使用相關的成品分散到部署階段的登錄。
- 實作映射完整性原則,在部署之前先驗證映射簽章,以確保它們尚未遭到竄改,且來自受信任的發行者。
- 實作弱點掃描原則以掃描容器映射是否有弱點、根據嚴重性層級設定閾值(嚴重性、高、中、低),並只部署相容的映像。
- 實作授權合規性政策,以強制限制使用不想要的授權部署容器映像。
- 實作證明原則,以確認容器映射來自受信任的來源和存放庫,再部署。
- 實作映像生命周期原則,以確保已部署的映像位於支援範圍內且有效,並限制終止生命週期和終止支援映射的部署。
- 產生並簽署每個映像的弱點和惡意代碼報告,以防止竄改並保護其完整性。
- 將已簽署的報告附加至容器映射,以在部署期間進行可見度和合規性驗證。
- 確認容器映射元數據,包括 SBOM、映射簽章、弱點報告、生命週期元數據和源數據。
- 實作許可控制機制,以強制執行部署原則,並限制部署不符合規範的容器映射。
- 使用 CI/CD 管線將部署程式自動化,整合映像驗證和驗證檢查。
- 持續監視已部署的映像,並強制執行合規性來偵測新的弱點、合規性偏差,並視需要採取補救動作。
- 記錄部署活動並定期進行稽核,以確保遵守安全性和合規性標準。
- 實作自動化或手動補救程式,以解決安全性事件或合規性偏差。
- 記錄部署程式,包括已採取的步驟、所使用的工具,以及針對未來的參考和稽核目的實作的任何安全性措施。
建議做法
Microsoft 建議在部署階段驗證映射元數據,並只從信任的登錄部署容器映像。 建議使用下列作法來保護雲端原生工作負載。
- 強制執行部署原則,以驗證元數據並限制不符合規範的容器映像。 這可防止未核准的映像部署。
- 在部署映像之前,強制執行驗證映射簽章的部署原則。 這可確保用於部署的映像來自受信任的發行者,且未遭到竄改。
- 根據弱點分數強制執行部署原則。 這可防止部署具有高於特定閾值的弱點的映射(重大、高、中、低)。
- 強制執行驗證生命週期資訊的部署原則,以確保部署中不會使用終止支援映像。
- 確定部署環境和平臺具有安全的網路連線能力。
- 需要嚴格的驗證、訪問控制和檔案許可權,以拒絕未經授權存取部署平臺。 這可避免潛在的認證外泄或未經授權的變更。
- 自動化 CI/CD 管線中的驗證程式。
部署階段的安全性目標
擁有定義完善的映像部署工作流程,可協助企業提高其安全性,並減少容器供應鏈上的受攻擊面。 CSSC 架構的部署階段旨在滿足下列安全性目標。
從受信任且相容的來源部署映像
應在部署階段期間實作安全策略,以確認容器映像來自信任的來源,而且不會遭到竄改。 藉由在部署之前驗證容器映射簽章,即可驗證完整性和真實性。
實作許可控制安全策略
應在部署階段期間實作安全策略,以確認容器映像符合規範。 這可藉由驗證容器映射以針對下列安全性元數據達成:弱點和惡意代碼報告、映射簽章、SBOM、映像生命週期元數據和源頭元數據。
建議的工具
驗證影像元數據並強制執行驗證原則的工具和服務
批准 是開放原始碼專案,可讓 Kubernetes 叢集在部署之前驗證安全性元數據,並只承認符合許可原則的映像。 建議您設定「批准」和「閘道守衛」,只允許信任且相容的容器映像在 Kubernetes 叢集上執行。
Gatekeeper 是開放原始碼和NCF 專案,可提供動態許可控制器和原則引擎,以標準化的方式定義、強制執行和稽核 Kubernetes 叢集上的原則。
Azure 原則 擴充 Gatekeeper,以允許跨 Azure Kubernetes Service 叢集套用內建原則,以稽核或封鎖從外部登錄或不受信任的來源參考容器映射的部署。
附加影像元數據的工具
ORAS 是一個NCF專案,提供在符合 OCI 規範的登錄中儲存和管理成品的方法。 ORAS 可讓您在符合 OCI 規範的登錄中儲存和管理任何類型的成品,包括容器映像、映射元數據等等。 它也提供一組命令行工具,可讓您輕鬆地與符合 OCI 規範的登錄互動。 我們建議使用 ORAS,將產生的弱點和惡意代碼報告、SBOM、映像生命週期元數據,以及相關聯的映像一起推送至登錄。
用於簽署和驗證容器映像和元數據的工具
Notary 專案 是一個開放原始碼專案,其中包含一組規格和工具,旨在透過簽署和驗證、簽章可移植性和密鑰/憑證管理來保護軟體供應鏈的安全。 表示法 是由 Notary Project 社群開發的供應鏈工具,可支援在開放容器計劃 (OCI) 相容登錄中簽署和驗證成品,以啟用簽章可移植性和互操作性。 它也透過外掛程式模型提供與第三方密鑰管理解決方案的整合,以啟用擴充性。 我們建議使用 Notary Project 工具來簽署容器映像和元數據,以確保真實性和非竄改。
下一步
請參閱 執行階段 的概觀,以安全地部署容器映像。