
容器安全掃描:風險與效益
這篇部落格文章提供容器安全掃描技術的深入技術解析;透過這篇文章,您將了解如何識別與緩解弱點,並探索保護容器化環境的最佳實務。

隨著企業轉向雲端基礎架構,整體部署流程已大幅改變。這導致容器與 Kubernetes 的使用量增加。容器可作為微服務架構應用程式的建構模組,讓企業能針對不同使用案例執行多個服務,而非單一的單體式應用程式。雖然這種轉變為開發團隊帶來許多好處,但也伴隨各種安全挑戰。這正是容器安全掃描發揮作用之處。
容器安全 掃描工具有助於找出並防止容器生態系中的安全弱點。企業通常會在建置流程期間於 CI/CD 管線中使用這些工具。
在這篇部落格文章中,我們將討論什麼是容器掃描器,以及容器中常見的弱點與如何避免這些問題。我們也將討論使用容器安全掃描工具的主要目標與效益。
什麼是容器安全掃描?
容器安全掃描是一種使用不同掃描工具檢視容器映像是否存在任何安全弱點的流程。這些容器可能處於靜態階段或執行中階段。容器安全掃描的最終目標是找出弱點、雲端基礎架構中的錯誤設定,以及合規違規問題。
保護企業在正式環境中使用的容器至關重要,因為它們可能成為威脅行為者的入侵入口。容器安全掃描工具是企業用來協助保護整體供應鏈環境的重要工具。
容器安全掃描的類型
如前一節所述,容器安全掃描工具可以在執行階段或靜態模式下掃描容器。這分別稱為動態分析與靜態分析。讓我們進一步了解它們。
- 靜態分析:這表示在容器層對映像有效執行弱點測試,以搜尋基礎映像、程式碼及應用程式相依性中的弱點。靜態分析通常在軟體建置階段進行,且能有效在早期識別問題。
- 動態分析:動態分析是另一個面向,除了容器的元件之外,還會揭示容器在執行階段中的行為與互動。它可對執行中的容器進行即時監控,以偵測威脅與活動異常。
容器安全掃描的主要目標
在使用容器化應用程式時,定期執行容器安全掃描非常重要。此流程有助於達成多項目標,以改善整體安全態勢。在本節中,我們將深入討論這些目標。
1. 識別容器映像中的弱點
容器安全掃描的主要目標之一,是識別容器中的安全弱點。這些弱點可能存在於容器所使用的基礎映像中,或存在於其上安裝的第三方套件中。企業通常會使用這些資料來協助開發人員保護容器,避免遭攻擊者利用。如果容器的弱點數量過高或超出企業的風險承受度,也可以阻止部署。
2. 偵測錯誤設定與安全風險
容器安全掃描不僅有助於識別弱點,也能協助找出與容器相關的錯誤設定問題。常見範例包括錯誤的權限、使用 root 存取,或資訊外洩。組織需要確保容器已安全設定,以避免任何未經授權的存取,或使容器成為攻擊者的入侵入口。
3. 確保符合安全標準
合規是指遵循特定的準則或具體條款。企業必須因各種原因遵守合規要求,例如客戶信任、安全性等。合規要求取決於企業所屬的產業,例如醫療保健公司使用的 HIPAA。SOC II、HIPAA 等合規標準具有嚴格的準則,以確保容器的安全性。若企業違反此類法規,則必須向監管機構支付高額罰款。容器安全掃描工具可確保容器免受風險影響,並依照合規要求運作。
4. 防止部署不安全的容器
如前所述,企業可以將防止部署不安全容器作為 CI/CD 檢查的一部分。這種阻擋通常是為了防止有弱點的容器上線(進入正式環境),因為任何使用該應用程式的人都可能嘗試利用已知弱點入侵它們。其目標是防止攻擊者入侵系統並洩露敏感資訊。
容器安全掃描的關鍵元件
容器安全掃描是一個包含多個元件執行不同工作的長流程。讓我們了解這些關鍵元件。
映像掃描
Containers 和 Images 是相關術語,但開發人員經常交替使用。可以將映像視為包含應用程式所需一切內容的完整套件。這包括應用程式程式碼、執行階段環境等。另一方面,容器則是相同映像的執行中實例。容器是隔離的環境,但彼此之間可以互動。
映像掃描是對我們前面提到的同一個套件進行掃描的流程。作為此流程的一部分,容器安全掃描解決方案會嘗試找出基礎映像、應用程式程式碼以及應用程式所使用相依性中的弱點。
組態評估
組態驗證或評估用於確認容器及其周邊不存在不安全的組態(亦即錯誤設定)。一些常見的錯誤設定包括使用預設密碼、不安全的密碼,以及硬式編碼的 API 金鑰或權杖。
弱點偵測
弱點偵測是容器安全掃描解決方案的另一個元件。此元件用於偵測容器軟體元件中的弱點。OSV、Github Advisory 和 NIST Vulnerability Database 等弱點資料庫可用來取得軟體中已知弱點的清單。
合規檢查
合規檢查元件用於透過頻繁掃描來驗證所使用的容器是否遵循相關準則。合規掃描包括確保容器符合 CIS benchmarks 以及 NIST 等其他準則。
執行階段監控
執行階段監控的目標是在容器處於執行狀態時即時識別威脅。這也包括檢查容器是否有任何異常行為,例如向惡意網域大量發送對外呼叫。
執行階段安全在識別日常安全問題方面非常實用,並可作為一層保護。
容器安全掃描器如何運作?
大多數容器安全掃描解決方案會透過多步驟方法,檢查容器本身的資訊,並檢查執行階段中的弱點。此流程結合了靜態分析、動態分析與執行階段監控的最佳要素,以確保在任何時刻,您都能完整掌握容器的安全狀況。
此掃描流程通常從對容器進行靜態分析開始。容器掃描器會檢視映像的各層,其中包括基礎作業系統、已安裝套件以及應用程式程式碼。接著,它會將這些元件與已知弱點資料庫及安全公告進行交叉比對,以判定是否存在任何風險。
動態分析和執行階段監控僅會在容器啟動並執行時運行。動態分析可透過偵測異常行為,或與任何不受信任或惡意的網域、網路等進行通訊來執行,這些情況可能會觸發安全警報。它會訂閱由容器執行階段提供的 heartbeat 和 perf-events 資料串流,持續監控特定容器的行為,包括其操作(created/started/stopped/deleted/etc)、網路連線,以及資源使用模式。

CNAPP Market Guide
Get key insights on the state of the CNAPP market in this Gartner Market Guide for Cloud-Native Application Protection Platforms.
容器中的不同弱點與風險
談到容器中的安全弱點時,它們與 Web & APIs 並無不同。容器也有各種類型的安全弱點,而且每一種都會帶來不同風險。讓我們來討論其中一些弱點。
1. 作業系統弱點
容器是隔離的環境,但它們共用主機 OS 核心,這意味著它們容易受到核心層級攻擊。這些弱點可以透過徹底掃描映像輕鬆識別。容器化環境帶來的一項主要風險是,容器所建構於其上的主機 OS 會暴露於網際網路(取決於組態),因此容易持續遭受攻擊。
然而,透過頻繁修補與更新主機 OS,可以降低此風險並減少整體攻擊面區域。
2. 應用程式相依性與程式庫問題
應用程式也可能包含數量不定的其他子應用程式函式庫,以及可能具有已知弱點的相依項目。掃描容器有助於識別並更新這些部分。在某些情況下,相依項目可能會持續被研究人員發現弱點(例如 Tensorflow),這可能會允許未經授權存取應用程式,因此需要頻繁更新與掃描。
3. 錯誤設定與不安全的預設值
容器中的許多弱點,都是在開發人員未將預設或預留位置的密鑰或設定替換為安全版本時產生的。一個常見範例是,應用程式持續使用像 WordPress 這類已知 CMS 的預設密碼,而該密碼已硬式編碼在基礎映像中。預設認證弱點類別是攻擊者最偏好的類型之一,因為他們不必花時間理解並突破應用程式邏輯。
4. 供應鏈風險與遭入侵的基礎映像
供應鏈攻擊 近來大幅增加(例如近期的 XZ 攻擊)。多數依賴容器的公司會直接使用來自公開登錄庫的映像。如果基礎映像從登錄庫中被移除並替換為惡意映像,系統就很容易遭到入侵。另一種方式是開發人員在匯入映像時發生拼字錯誤,例如使用 Python 而不是 Python。攻擊者通常會將帶有拼字錯誤的映像推送到公開登錄庫,等待開發人員犯錯。
容器安全掃描的流程是什麼?
容器安全掃描的流程包含數個關鍵步驟,最終有助於維持容器化應用程式的安全性。
讓我們拆解容器安全掃描的這個流程:
1. 靜態分析技術
第一種類型會在離線模式下掃描容器映像,以檢查基礎映像、應用程式程式碼及相依項目中的弱點。這通常會透過弱點資料庫與安全性公告來進行。靜態程式碼分析有助於在早期階段識別問題,並確保正在部署的容器映像不包含任何已知安全弱點。
2. 動態分析方法
另一種類型的分析是動態分析,在此情況下,自動化工具或安全工程師會分析執行中的容器,以識別存在於執行中容器內的威脅。這有助於確保安全事件能在發生時被偵測並處理。 TL;DR 就是動態分析,它透過監控容器在執行期間的行為與互動,作為第二道防線。
3. 將掃描整合至 CI/CD 管線
透過 CI/CD 管線進行的部署,會納入安全掃描,以對容器中的任何弱點或錯誤設定執行完整掃描。將容器安全掃描解決方案整合至 CI/CD 管線,可讓組織擁有安全的開發與部署環境。
4. 解讀掃描結果與修補
當容器安全掃描流程完成後,下一步就是解讀結果並採取行動,以處理弱點與風險。讓我們看看有哪些因素可協助分析掃描結果。
5. 了解容器安全掃描報告
容器安全掃描報告會提供有關已發現弱點、錯誤設定及合規問題的詳細資訊。這些報告對於修補非常重要,因此必須理解其內容。這表示在檢視掃描報告後,組織可以了解需要關注的領域並加以處理。
6. 弱點優先排序
並非所有弱點的嚴重程度都相同,因此不應以相同方式處理。當發現多個弱點時,應將風險因素納入考量,優先處理那些可能對企業造成最大傷害的弱點。透過先處理關鍵弱點,組織可以消除最危險的風險,並在此過程中保護其容器化應用程式。
7. 修補與更新有弱點的元件
弱點管理需要對所有已識別出弱點的受影響元件進行修補與更新。這包括更新基礎映像、應用程式函式庫及相依項目。頻繁修補與更新元件有助於建立安全的基礎架構。
8. 強化容器設定
容器強化流程用於修正容器中發現的錯誤設定。它也用於確保已套用適當的安全標準。一些安全標準包括使用安全密碼、避免不必要的存取,以及保護敏感資訊。就合規性而言,容器強化對企業也很重要。
容器安全掃描的優勢
容器安全掃描可為試圖改善其安全態勢的企業帶來多種優勢。讓我們來討論一些主要優勢:
- 強化安全性: 容器安全掃描有助於識別並處理弱點與錯誤設定,以提升容器化應用程式的安全性。這表示組織在處理安全問題時會採取主動而非被動的方式,因此可降低發生入侵的可能性。
- 合規性: 容器安全掃描解決方案提供的合規檢查,有助於掌握既定產業標準,並確保持續符合監管機構的要求。
- 防止入侵: 如果企業已妥善部署容器安全掃描,掃描流程有助於防止資料外洩,因為開發人員將無法部署不安全的容器。
- 持續監控: 透過持續追蹤執行中的容器,更容易處理正在執行或進行中的威脅。執行階段監控是另一層保護,因為它會持續評估容器及其作業。
- 改善資源配置: 容器安全掃描有助於企業改善整體資源配置,並降低與安全管理相關的成本。
容器安全掃描的最佳實務
為了確保容器可安全使用,開發人員需要遵循一套最佳實務。以下是一些有效進行容器安全掃描的關鍵最佳實務:
#1. 在大型部署中擴展安全掃描
隨著大型企業使用容器進行部署,使用不同解決方案自動化容器安全掃描流程變得相當重要。對於大規模應用程式而言,企業不能依賴開發人員來找出容器中的問題、持續關注新的 CVE,以及持續尋找透過容器揭露或外洩的敏感資訊。企業應建立自動化管線,以保護容器的完整生命週期,從將其導入登錄檔到將其部署到網際網路(交付至正式環境)。
#2. 平衡安全性與開發速度
隨著敏捷方法論的採用,如今企業喜歡快速交付,但在部署應用程式時,務必要確保已建立適當的安全控制。當開發人員嘗試快速交付應用程式時,往往容易犯錯,例如將 API 金鑰硬式編碼、關閉偵錯模式、加入安全控制等。企業可以透過在 CI/CD 管線中使用容器安全掃描解決方案,並對開發與 DevOps 團隊進行安全控制相關培訓,來確保其容器的安全性。
#3. 持續監控與自動化修補
持續掃描及後續控制有助於在新威脅出現時(即時)追蹤它們,並自動執行消除流程。這包括處理執行階段監控問題,以及建立自動化修補與更新流程。如此一來,組織便能落實持續監控與安全事件的自動化修補,並在快速回應安全事件的同時維持安全狀態。
#4. 實作安全的容器登錄庫
對於高度依賴容器的企業而言,投資安全的容器登錄庫或令人滿意的方案至關重要,這將有助於減少使用危險且未經核准的容器映像。這可透過映像簽章、使用存取控制措施,以及定期掃描登錄庫中的任何已知弱點來達成。使用容器成品也可確保開發人員不會使用惡意映像,或成為 typosquatting 攻擊的受害者。
結論
容器安全掃描是在掃描容器化應用程式並改善其風險態勢時的一項關鍵活動。透過指出風險、錯誤設定及合規問題,安全掃描有助於強化容器的安全性,並將遭受攻擊的機率降至最低。
為了獲得更佳的涵蓋範圍與安全性,務必確保將容器安全掃描解決方案納入 CI/CD 管線,以防止任何不安全的容器上線,讓公司成為攻擊目標。
常見問題
容器安全掃描是掃描容器映像與執行中容器的過程,用於偵測弱點、組態問題及合規違規。容器安全掃描的目標是確保容器免受任何弱點影響,從而避免公司在金錢與聲譽方面遭受嚴重損害。
容器掃描 可識別基礎映像與應用程式所使用相依項中的弱點、錯誤組態及合規違規。它也可協助識別安全威脅,並在容器被發送出去(或部署)之前判定其安全狀態。
在 DevSecOps 中,容器掃描可定義為將容器掃描納入應用程式開發流程,以便在容器部署到正式環境之前及早識別安全問題。
容器弱點掃描可定義為一種系統化且多步驟的流程,用於識別容器中的弱點,以防止威脅行為者發動攻擊,以及未經授權存取敏感資訊(PII)。
可用於容器安全的工具包括 Docker Security Scanning 和 Clair。這些工具可透過發現風險、識別錯誤組態,以及處理容器化應用程式的合規問題,來執行全面的容器安全防護。




