使用 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 容器網路功能。