共用方式為


取得階段概觀

取得要作為基底或公用程式映射的外部容器映像,是容器供應鏈的第一個階段。 企業可能缺乏從來源建置每個軟體部分的專業知識或資源,而且需要依賴外部來源的容器映像。 這類映像的範例包括操作系統或架構映像、NGINX 和 Envoy 等服務 Proxy,或記錄和 Fluentd 和 Kafka 等計量映射。 請務必在使用之前建立特定質量檢查,並確保這類映像符合企業原則。

Microsoft 的容器安全供應鏈 (CSSC) 架構可識別取得外部映射的需求。 CSSC 架構建議一組標準做法和工具,以協助您安全地取得外部容器映射以供內部使用。 在本文中,您將瞭解可在 CSSC 架構的取得階段中使用的目標、標準做法和工具。

背景

目前,企業沒有取得外部容器映像的既定程式。 方法會根據企業的大小和專業知識而有所不同。

以安全性為主的企業會將來自外部來源的預先核准映像,例如 Docker Hub 帶入內部 隔離 登錄。 這些映像會在發佈弱點和惡意代碼以供內部使用之前進行檢查。 不過,此程式並非統一或完全自動化。 企業也缺乏一種方法來保證整個供應鏈中這些圖像的真實性和完整性。 最後,它們沒有一致的方式,為供應鏈後續階段使用額外的元數據來擴充影像。

企業開始其安全性旅程時,會直接在其組建和部署腳本中使用來自外部登錄的容器映像。 這種方法可能會造成弱點、惡意代碼和不符合規範的軟體危害映像組建和容器化服務的可用性。

CSSC 架構的 「取得」階段會建議一組應實作的步驟和安全性控件,以確保外部映像在內部使用之前先驗證並符合企業原則。

Microsoft 建議盡可能從來源建置軟體。 如果企業無法這麼做,建議您遵循下列做法來取得外部容器映像和雲端原生成品。

  • 將外部映像匯入企業控制的內部登錄,以移除對第三方的相依性,並減少對可用性的影響。 您應該只從信譽良好的來源匯入映像。
  • 當可用時,請確認外部映像的簽章,以確保發行者的真實性和映射完整性在匯入程序期間。
  • 在允許內部使用之前,請先掃描容器映像是否有弱點和惡意代碼,以降低引入安全性缺陷的風險。
  • 使用 SBOM、源頭和生命週期等其他元數據來擴充容器映射,以在軟體供應鏈的後續階段啟用原則。
  • 使用企業金鑰簽署容器映像和相關元數據,以確保完整性,並提供信任的核准戳記以供內部使用。

Microsoft 的 CSSC 架構指引也符合在CNCF軟體供應鏈最佳做法保護材料的指導。

取得外部影像的工作流程

儘管信任企業已投入廠商或開放原始碼專案,但應一律驗證他們從外部來源取得的軟體。 容器映像和雲端原生成品並不例外。 CSSC 架構建議下列工作流程來取得外部影像。

  1. 將容器映像和雲端原生成品匯入企業控制下的內部登錄。
  2. 隔離內部登錄中的映像,以防止它們在內部使用,直到它們經過驗證為止。
  3. 如果外部登錄中有簽章,請驗證與映像相關聯的任何簽章,以確保映像的真實性和完整性。
  4. 如果外部登錄中有其他元數據,請驗證與映像相關聯的任何其他元數據,包括 SBOM 和來源,以防止違反企業原則,例如不符合規範的授權。
  5. 掃描映射中是否有已知的弱點和惡意代碼,以防止引入安全性缺陷。
  6. 將弱點和惡意代碼報告附加為映像證明,以在供應鏈的後續階段使用。
  7. 如果無法使用,請產生映像的SBOM和來源,並將其附加為映像證明,以在供應鏈的後續階段使用。
  8. 使用其他元數據擴充映射,例如生命週期元數據,以在供應鏈的後續階段使用。
  9. 使用企業密鑰簽署映像和相關元數據,以確保完整性,並提供信任的核准戳記以供內部使用。
  10. 如果映像符合內部原則,請將映像發佈至黃金登錄以供內部使用。

取得階段的安全性目標

擁有定義完善的工作流程來取得外部影像,可協助企業提高其安全性,並減少容器供應鏈上的受攻擊面。 CSSC 架構的取得階段旨在滿足下列安全性目標。

減少受攻擊面,因為外部相依性

由於公用登錄的公開性質和缺乏嚴格的安全措施,公共登錄容易受到各種類型的攻擊。 允許企業內的使用者從外部登錄直接提取映像,使其暴露在相依性混淆和錯字等攻擊中。

CSSC 架構中的「取得」階段藉由集中取得和管理外部成品,併為內部使用者提供所有影像和雲端原生成品的單一事實來源,來解決此風險。

將引入安全性缺陷的風險降到最低

在公用登錄中缺少影像的嚴格驗證和核准程式,表示任何人都可以在不經過嚴格審查的情況下推送映像。 這會增加不小心使用遭入侵映像的風險,這些映像可能會對企業應用程式造成安全性弱點。

「取得」階段會藉由在映射核准供內部使用之前,新增弱點和惡意代碼掃描的必要步驟來解決此風險。 將映射匯入內部登錄的另一個額外優點,現在可以定期掃描和修補這些映像。

增加容器組建和部署的可用性

由於需要以全域規模散發容器映射,公用登錄很容易受到節流影響。 公用登錄也是可能會影響映像散發的 DDoS 攻擊目標。 最後,公用登錄裝載於未受企業控制的基礎結構上,而且可能會受到中斷的影響。 這一切可能會導致企業組建和部署的延遲或失敗。

藉由將映像從外部登錄匯入內部登錄,「取得」階段會藉由移除外部登錄的相依性,並允許企業控制從內部登錄提取映像的速率,來解決此風險。 私人登錄也可以受到更好的保護,免於遭受外部攻擊,並符合企業可用性需求。

控制外部映像的生命週期

軟體發行者可以在未通知的情況下更新外部登錄中的映像。 這可能會導致企業組建和部署發生非預期的變更。 此外,映像也可以從外部登錄中移除,而不通知,這可能會導致企業組建和部署失敗。

藉由引進中繼登錄來裝載外部映像,「取得」階段會藉由提供內部使用所需映像的快取版本來解決此風險。 這可讓企業控制映像的生命週期,並確保它們會根據企業原則淘汰。

確保影像品質下限

雖然某些外部映像發行者開始包含 SBOM 和證明,以及簽署容器映射等證明,但公用登錄中的許多映射並沒有這類證明。 這也是因為某些公用登錄不支援這類功能。 這讓企業難以確保他們取得的映像符合其原則規範。

在 CSSC 架構的 「取得」階段,企業可以使用其他元數據來擴充映射,包括 SBOM、源頭、生命週期和其他符合其原則的內部元數據。 他們也可以使用企業密鑰簽署成品,以確保完整性,並提供信任的核准戳記以供內部使用。

Microsoft 提供一組工具和服務,可協助企業在取得階段工作流程中實作建議的步驟,並解決上面所列的安全性目標。

匯入外部映像的工具和服務

Azure Container Registry (ACR) 是受控且符合 OCI 規範的登錄,可支援散發容器映像和其他雲端原生成品。 ACR 符合最新的 OCI 規格,可用來儲存供應鏈成品。

ACR 匯 入功能可用來將映像從外部登錄匯入 ACR。 匯入會保留映像摘要和標記,並可讓您從任何支援 Docker 登錄 V2 API 的公用和私人登錄匯入映像。

ORAS 是由 Microsoft 支援的NCF 專案,提供開放原始碼 CLI 和連結庫來與 OCI 登錄互動。 ORAS 也可以用來將映像和其他 OCI 成品從外部登錄複製到 ACR。

用於驗證外部映像的工具和服務

ACR 工作 是 Azure Container Registry 中的一套功能,可讓企業自動化不同的工作,例如弱點掃描或 SBOM 或簽章驗證。 一旦將外部映射匯入 Azure Container Registry,ACR 工作就可以用來驗證外部映像。 ACR 工作也可以用來將映像從外部登錄自動匯入至 Azure Container Registry。

適用於雲端的 Microsoft Defender 是雲端原生解決方案,可改善、監視和維護容器化工作負載的安全性。 適用於雲端的 Microsoft Defender 為儲存在 Azure Container Registry 中的映像提供弱點評定和管理工具。

使用企業元數據擴充外部映像的工具

作為與 OCI 登錄互動的多用途工具, ORAS 也可以用來新增註釋,並將元數據附加至容器映射。 ORAS 可用來新增 SBOM、源頭、生命週期和其他元數據,以擴充供應鏈後續階段的影像。

Microsoft 的 SBOM 工具 是開放原始碼、可高度擴充且企業就緒的工具,可針對各種成品建立 SPDX 2.2 兼容的 SBOM。 SBOM 工具可用來產生容器映像的詳細 SBOM。

Notary Project 是 Microsoft 支援的NCF 專案,可開發用於簽署和驗證軟體成品的規格和工具。 Notary Project 的工具 notation 可用來使用企業密鑰簽署容器映像和其他雲端原生成品。

下一步

請參閱 目錄階段 的概觀,以安全地裝載容器映像以供內部使用。