什麼是容器註冊安全性?
容器註冊中心安全性的重點在於保護容器註冊中心,也就是容器映像的集中儲存與散佈系統。容器註冊中心在容器生態系統中扮演舉足輕重的角色,可確保容器化應用程式的完整性與安全性。正確的容器註冊安全性包括使用可信賴的註冊、實作嚴格的存取控制、監控漏洞,以及確保託管伺服器的安全。此外,它還需求拒絕不安全的連線,並移除陳舊的影像。透過優先考量容器註冊安全性,組織可以保護其容器化環境,並維持使用者和客戶的信任。
容器註冊安全性說明
容器註冊表安全性針對容器生態系統的關鍵元件 - 容器註冊表。在更廣泛的 容器安全性敘述中,註冊中心扮演容器映像(容器化應用程式的建構區塊)保管人的角色。因此,集裝箱註冊處不僅僅是一個儲存單位。相反地,它是應用程式影像完整性維護與散佈的關鍵點。
瞭解容器註冊
如您所知,在 容器化環境 中,應用程式連同其相依性會被打包到容器中,使其可移植且易於跨平台部署。容器註冊處可提供一個位置,讓您以一致的方式對容器映像進行版本控制、擷取和部署,從而為此流程服務。
那麼,容器註冊中心就是容器映像的集中儲存和分發系統。該註冊中心可讓開發人員和作業團隊儲存、管理和分享容器映像,他們將用這些映像來建立和部署容器化應用程式和 微服務。
公共和私人註冊處
組織可能會結合使用公共與私有容器註冊處來管理容器映像,以及其他工件。
公共註冊中心,例如 Docker Hub 和 GitHub Container Registry(GitHub 套件的子功能),提供了大量的開放原始碼映像,組織可以使用這些映像作為應用程式的基礎。一般而言,任何人都可以存取這些註冊表,讓開發人員很容易找到並使用預先建立的影像。
但組織通常有特定的需求和專屬軟體,因此必須使用私人註冊處。
圖 1:容器註冊處/儲存庫公有 vs. 私有
私有容器註冊處,例如 Azure Container Registry、Amazon Elastic Container Registry 和 Google Container Registry,提供安全受控的環境,以儲存和管理專有映像及相關工件。只有組織內的授權使用者才能存取這些登錄,以協助確保敏感資訊和客製化影像的安全。
透過結合使用公共與私人註冊中心,組織可以充分利用開放原始碼影像的優點,同時維持對其專屬軟體的控制。這種雙重方法可讓組織最佳化容器管理工作流程,並簡化部署程序。
容器註冊安全性的組成部分
鑑於註冊表是容器化環境運作方式的核心 - 組織可以輕易地在註冊表中儲存數以萬計的映像 - 保護註冊表對於 軟體開發生命週期的完整性是不可或缺的。
漏洞可能危及的不只是應用程式。利用設定錯誤的攻擊者可以未經授權存取 CI/CD 系統 ,並橫向移動存取底層作業系統。他們可能會操控合法的 CI/CD 流量,取得敏感的代幣,並移轉到生產環境,在此環境中辨識暴露的憑證可能會讓他們進入組織的網路。
相關文章: 雲端供應管道攻擊剖析
註冊表安全性首先是只使用可信賴的註冊表和程式庫。持續監控弱點變更,以及確保主機伺服器的安全和實作大量存取政策是基礎。適當的註冊表安全性應該拒絕不安全的連線、標記或移除陳舊的影像,並執行嚴格的驗證與授權限制。
讓我們詳細看看這些可測量的指標。
在 CI/CD 中促進圖像和工件的完整性
瞭解與影像和人工製品相關的風險,讓我們了解到實作嚴格檢查以確保其完整性的重要性。考慮實作下列策略。
拒絕不安全的連線
雖然公共登記處可能允許匿名存取容器映像,但為了防止中間人攻擊、未經授權的篡改以及未經授權的敏感資訊存取,您必須維持安全性連線。
若要拒絕不安全的連線,請將您的系統設定為只接受 HTTPS 或 TLS 加密連線等安全通訊協定。首先從可信賴的憑證授權機構 (CA) 為您的網域取得並安裝有效的 SSL/TLS 憑證。然後更新伺服器或服務設定,強制使用 HTTPS 或 TLS,停用 HTTP 等不安全通訊協定。根據您的設定,這可能會涉及調整網路伺服器 (例如 Nginx、Apache)、負載平衡器或應用程式的設定。此外,請考慮使用 HSTS (HTTP Strict Transport Security) 等安全功能,指示瀏覽器在存取您的網站或服務時,始終使用安全連線。
移除陳舊圖片
建立政策來定義陳舊的影像 - 舊於特定時間範圍或未使用一段時間的影像 - 並使用登錄工具或 API 來根據政策列出和篩選影像。例如,在 Docker Registry 中,使用 Docker Registry API 擷取影像元資料,並依據最後推送日期或標籤進行篩選。在其他註冊表中,也可能有類似的 API 或 CLI 工具。找出陳舊的影像後,使用適當的指令或 API 刪除它們,並確保遵循註冊表的垃圾回收最佳作法。
避免第三方註冊中的 IAM 問題
身分與存取管理 (IAM) 對組織而言至關重要,尤其是在像 GitHub 之類的原始碼控制管理系統 (SCM),程式碼儲存庫儲存了寶貴的程式碼和資產。不適當的 IAM 會導致 CI/CD 管道中的安全風險。為了最佳化儲存庫的安全性和管理,組織可以使用單一登入 (SSO) 和跨領域身分管理 (SCIM) 系統來管理存取控制。然而,SSO 只適用於 GitHub 企業版,其他授權可能會有風險。
為了減少涉及 GitHub 帳戶中私人電子郵件位址、ghost GitHub 帳戶和未完全離職的問題,請強制執行雙重因素驗證 (2FA)、建立專屬企業帳戶的上線協議,並維護使用者帳戶清單。對於已啟用 SSO 的組織而言,實作 SCIM 可確保使用者自動取消配置,並消除透過陳舊憑證進行存取的情況。處理 IAM 風險有助於保護儲存庫、CI/CD 生態系統,並在所有系統中維持高安全層級。
相關文章: GitHub 組織中的三大 IAM 風險
採用足夠的驗證與授權限制
授予超過儲存庫所需權限的身分,會為權限升級帶來機會,並可能導致未經授權的程式碼變更、竄改建立程序,以及存取敏感資料。自動化可協助驗證存取控制、檢查使用者權限,並找出潛在的弱點,讓組織能夠制定例行性的主動措施,例如:
- 分析和映射整個工程生態系統中的所有身分。對於每個身分,不斷地對應身分提供者、授予的權限和使用的權限。確保分析涵蓋所有計劃存取方法。
- 移除環境中各個系統中每個身分的不必要權限。
- 設定停用或移除陳舊帳戶的可接受期限。停用並移除超過此不活動期限的身分。
- 映射所有外部合作者,並根據最少特權原則調整其身份。在可能的情況下,為人力帳戶和程式化帳戶授予有到期日的權限。
- 禁止員工使用個人電子郵件地址或來自非組織所有網域的地址存取 SCM、CI 或其他 CI/CD 平台。監控不同系統中的非網域位址,並移除不符合規定的使用者。
- 禁止使用者自行註冊到系統,並根據必要性授予權限。
- 避免將系統中的基本權限授予所有使用者,以及自動分配使用者帳號的大型群組。
- 為每個特定情境建立專用帳戶,而非使用共用帳戶,並針對指定情境授予所需的確切權限集。
實作安全儲存
建立安全的防篡改儲存庫,以儲存工件。啟用版本管理以維護元件變更的歷史記錄,並實作即時監控以追蹤和警示可疑活動。如果有受損害的工件,請設定系統以方便回滾到先前已知的良好版本。
從開發到生產進行完整性驗證檢查
實作流程和技術,以驗證整個軟體交付鏈的資源完整性。當開發人員產生資源時,應該使用外部資源簽署基礎架構來簽署。在後續的管道階段使用資源之前,請與簽章機構交叉檢查其完整性。
代碼簽署
SCM 解決方案可為每個貢獻者使用唯一的金鑰簽署提交,防止未簽署的提交在管道中繼續進行。
工件驗證軟體
專為簽署與驗證程式碼和人工成品而設計的工具,例如 Linux 基金會的 Sigstore,可以阻止未經驗證的軟體在管道中繼續前進。
組態漂移偵測
實作偵測組態偏移的措施,例如雲端環境中的資源未使用已簽署的 基礎架構即程式碼範本 進行管理。這種漂移可能表示部署來自不受信任的來源或程序。
採用加密簽章
在 CI/CD 管道的每個階段使用公開金鑰基礎架構 (PKI) 來加密簽署工件。這種做法是在使用前針對可信賴的憑證授權機構來驗證簽章。配置您的 CI/CD 管道以拒絕簽名無效或遺失的工件,從而降低部署篡改資源或未授權變更的風險。
僅使用安全性高的容器映像
容器映像可能包含漏洞,攻擊者可利用漏洞未經授權存取容器及其主機。為了防止這種情況發生,請使用來自可靠來源的安全、可信賴的容器映像,並定期掃描它們。從公開註冊表部署容器時,首先掃描容器是否有惡意軟體和漏洞尤為重要。
強制執行多來源驗證
採用多源驗證策略,利用各種來源(例如校驗和、數位簽章和安全雜湊演算法)以及可信賴的儲存庫來驗證人工成果的完整性。不斷更新加密演算法和金鑰,以維持其有效性。
第三方資源驗證
納入建置與部署管道的第三方資源,例如在建置過程中執行的指令碼,應該經過嚴格的驗證。在使用這些資源之前,先計算其切細值,然後與資源提供者提供的官方切細值進行比較。
整合安全掃描
CI/CD 管道在建立映像時,應該只使用經過審核的程式碼 (生產已核准)。在 CI/CD 管道中納入弱點掃描工具,以及 軟體組成分析 (SCA) 和 靜態應用程式安全測試 (SAST ),以確保影像完整性,然後再將影像推送到註冊中心,讓生產部署從中取得影像。請務必遵循最佳實務。例如,在移除所有不必要的軟體元件、程式庫、組態檔案、機密等之前,請勿建立映像。
採取保守、謹慎的方法可讓團隊在開發過程中及早解決弱點,並維持高水準的程式碼品質,同時降低安全性事故的風險。選擇能夠整合所有註冊表類型的容器映像掃描解決方案。Prisma Cloud 等平台可為管理員提供彈性的一站式影像掃描解決方案。
映像分析沙箱
在容器化應用程式的開發和部署過程中,使用映像分析沙箱可以強化您的容器安全性策略,讓您可以安全地從外部套件庫拉取並執行可能包含過期、脆弱套件和內嵌惡意軟體的容器映像。
沙箱的功能可讓您在受控的環境中掃描可疑的異常容器行為,例如加密貨幣挖礦、連接埠掃描、修改過的二進位檔,以及核心模組修改。您可以揭露風險,並找出埋藏在軟體供應鏈中的 可疑依賴關係 ,否則靜態分析可能會遺漏這些 依賴關係 。
- 擷取 容器的詳細 執行時設定檔
- 評估影像的風險
- 在工作流程中納入動態分析
建立驗證政策與稽核時間表
為了確保適當的影像與工件完整性驗證,組織應建立明確的政策,定義驗證流程。一經建立,即定期稽核內部政策的合規性,以找出並處理弱點以及不符合規定的地方。不斷地監控和分析有助於偵測異常和未經授權的活動。
貨櫃註冊安全性一覽表
- 使用可信賴的登錄和資料庫
- 確保主機伺服器的安全,並實作健全的存取政策
- 實作充分的驗證與授權限制
- 建立安全的藝術品儲存空間
- 在整個 CI/CD 過程中執行完整性驗證檢查
- 採用加密簽署
- 強制執行多重來源驗證
- 驗證第三方資源
- 在 CI/CD 管道中整合安全掃描
- 建立驗證政策與定期稽核排程
集裝箱註冊常見問題
CI/CD 管道 將軟體從版本控制到最終使用者手中所涉及的步驟自動化。它包含持續整合 (CI) 和持續部署 (CD),可將軟體交付和基礎結構變更的過程自動化。管道通常包括程式碼編譯、單元測試、整合測試和部署等階段。這種自動化可確保軟體永遠處於可部署狀態,促進快速可靠的軟體發佈週期。CI/CD 管道對 DevOps 實務而言是不可或缺的,可讓團隊更頻繁、可靠地交付程式碼變更。
- SCM 有助於維持用於建立容器映像的程式碼的一致性和可追蹤性,讓開發人員可以輕鬆識別用於建立容器映像的特定程式碼版本。
- SCM 可讓開發人員協同處理程式碼,確保建立並儲存在註冊中心的容器映像符合組織的品質需求。
- SCM 工具透過與 CI/CD 管道整合,並將建立、測試和推送容器映像至註冊中心的流程自動化,來強化工作流程。
webhook 是一種使用自訂回呼擴充或改變網頁或網路應用程式行為的方法。這些回呼可能會由第三方使用者和開發人員進行維護、修改和管理,而他們不一定能夠存取網頁或應用程式的原始碼。在雲端運算和 DevOps 中,webhooks 用於在儲存庫或部署環境中發生特定事件時,觸發 CI/CD 管道等自動化工作流程。Webhooks 可實現即時通知和自動反應事件,增強雲端服務和工具之間的自動化和整合。
Notary 是一個開放原始碼工具,提供一個架構用於發佈和驗證內容的簽章,例如容器映像。它實作 The Update Framework (TUF) 規格,以確保內容傳送與更新的安全性。Notary 可確保使用者收到的內容完全符合出版商的原意,防止未經授權的修改。
Notary 通常與 Docker Content Trust 結合使用,以簽署和驗證 Docker 映像。