使用 Windows 容器的安全性、儲存體和網路功能

已完成

Contoso 已要求您身為 Windows Server 系統管理員,評估 Windows 容器的安全性、儲存體和網路需求。 您特別想要了解這些需求在 Windows Server 中的容器和 VM 之間有何差異。

Windows 容器安全性

Windows 容器是以與在實體或虛擬機器上所執行 Windows 執行個體相同的基底所建置。 不過,某些安全性層面會以不同或專屬於 Windows 容器的的方式來處理:

  • 共用元件。 基於安全性目的,Windows 容器會共用部分主機的元件。 這包括 Windows 防火牆、Windows Defender(防毒軟體)和其他資源存取限制。 您不需要直接在容器上設定這些元件,因為容器主機會根據您的容器工作負載進行必要的調整。 例如,如果容器提出 Web 要求,容器主機會透過其防火牆轉送必要的流量,讓容器可以存取 Web。

  • 隔離模式。 Windows 容器可以在處理程序或 Hyper-V 隔離模式中部署,而 Hyper-V 可提供最安全的隔離。 在處理程序隔離中,容器會與主機共用其核心、檔案系統和登錄,這可讓提升權限的 (管理員) 處理程序與容器處理程序和服務互動。 若要確保適當的安全性模式,為您的應用程式選擇正確的隔離模式很重要。

  • Windows Update。 由於服務堆疊不存在於 Windows 容器上,因此 Windows 容器不會收到更新,例如一般 Windows 執行個體。 相反地,您必須使用最新的可用基底容器映像來重建 Windows 容器。 客戶可以針對該目的利用 Azure 管線。 Microsoft 會在每個月更新其所有官方映像的基底容器映像,並遵循 Patch Tuesday 步調。

  • 容器使用者帳戶。 根據預設,Windows 容器內的應用程式會以 ContainerAdmin 使用者帳戶下較高的權限執行。 這有助於在容器映像內安裝和設定必要的元件。 不過,在執行不需要較高的權限的應用程式時,您應該考慮將使用者帳戶變更為 ContainerUser。 針對特定案例,您也可以建立具有適當權限的新帳戶。

  • 映像和執行階段掃描。 容器需要存放庫和容器執行個體上的映像是安全的。 Microsoft 建議您使用適用於容器的 Microsoft Defender 進行映像掃描和執行階段掃描。 適用於容器的 Defender 支援 Windows 容器,以使用登錄掃描進行弱點評估,以及使用威脅偵測進行執行階段防護。

如需 Windows 容器安全性的詳細資訊,請參閱保護 Windows 容器

Windows 容器的永續性儲存體

Windows 容器預設會使用暫時儲存體。 所有容器 I/O 都會在「臨時空間」中發生。 臨時空間是提供給容器的暫存儲存體,用於檔案系統中的變更。 每個容器都會取得自己的臨時空間。 檔案建立和檔案寫入會在臨時空間進行擷取,而不會逸出到主機。 如果容器執行個體已刪除,則會擲回在臨時空間發生的所有變更。 啟動新的容器執行個體後,就會為該執行個體提供新的臨時空間。

在某些情況下,應用程式務必能夠保存容器中的資料,或者您想要在容器中顯示在容器建置階段未包含的檔案。 為此,永續性儲存體可以提供給 Windows 容器。

永續性儲存體可以透過 Docker 引擎或容器協調器提供給 Windows 容器。 在開發/測試環境中,Docker 引擎提供一個快速且簡單的方法,將本機儲存體指派給具有繫結掛接或具名磁碟區的 Windows 容器。 繫結掛接可讓容器與主機共用目錄。 如果您需要一個位置來儲存容器重新啟動時本機電腦上可用的檔案,或想要與多個容器共用位置,這項功能非常有用。 如果想要在具有相同檔案存取權的多部電腦上執行容器,則應該改用具名磁碟區區或 SMB 裝載。

針對生產環境,容器協調器可以提供企業級永續性儲存體選項。 例如,Kubernetes 原生提供永續性磁碟區,可用來為在多部主機上執行的多個容器提供永續性儲存體。 Kube 也提供協力廠商外掛程式,以用來對應雲端儲存體上的磁碟區,例如 Azure 儲存體。

如需 Windows 容器永續性儲存體的詳細資訊,請參閱容器儲存體概觀

Windows 容器網路功能

Windows 容器在網路功能方面類似於虛擬機器。 每個容器都有一張虛擬網路介面卡(vNIC),其已連線至 Hyper-V 虛擬交換器(vSwitch)。 Windows 支援五種不同可透過 Docker 建立的網路驅動程式或模式:nat、overlay、transparent、l2bridge 和 l2tunnel。 根據您的實體網路基礎結構和單一主機與多主機網路需求,您應該選擇最符合您需求的網路驅動程式。

Docker Windows 網路驅動程式 一般用法 容器至容器 (單一節點) 容器至外部 (單一節點 + 多節點) 容器至容器 (多節點)
NAT (預設) 適用於開發人員 相同子網路:透過 Hyper-V 虛擬交換器進行橋接連線
跨子網路:不支援 (只有一個 NAT 內部前置詞)
透過管理 vNIC 路由傳送 (繫結至 WinNAT) 不直接支援:需要透過主機公開連接埠
透明 適用於開發人員或小型部署 相同子網路:透過 Hyper-V 虛擬交換器進行橋接連線
跨子網路:透過容器主機路由傳送
透過直接存取 (實體) 網路介面卡的容器主機路由傳送 透過直接存取 (實體) 網路介面卡的容器主機路由傳送
Overlay 適用於多節點;Docker Swarm 所需,Kubernetes 中提供 相同子網路:透過 Hyper-V 虛擬交換器進行橋接連線
跨子網路:網路流量會經過封裝並透過管理 vNIC 進行路由傳送
不直接支援 - 需要附加至 Windows Server 2016 上 NAT 網路的第二個容器端點,或 Windows Server 2019 上的 VFP NAT 規則。 相同/跨子網路:網路流量會使用 VXLAN 封裝,並透過管理 vNIC 路由傳送
L2Bridge 用於 Kubernetes 和 Microsoft SDN 相同子網路:透過 Hyper-V 虛擬交換器進行橋接連線
跨子網路:在輸入和輸出和路由上重新寫入容器 MAC 位址
在輸入和輸出上重新寫入容器 MAC 位址 相同子網路:橋接連線
跨子網路:透過 WSv1809 和更新版本上的管理 vNIC 路由傳送
L2Tunnel 僅限 Azure 相同/跨子網路:釘選至套用原則所在的實體主機 Hyper-V 虛擬交換器 流量必須通過 Azure 虛擬網路閘道 相同/跨子網路:釘選至套用原則所在的實體主機 Hyper-V 虛擬交換器

除了上述 Docker 選項之外,Kubernetes 還提供不同的容器網路介面 (CNI) 外掛程式。 這些 CNI 會針對網路設定、網路原則等實作不同的模式。

如需 Windows 容器網路功能的詳細資訊,請參閱 Windows 容器網路功能