

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 強化 Windows 容器映像
<a name="windows-hardening-containers-images"></a>

您是否正在強化 Windows 容器映像？ 多年來，我與全球客戶合作，協助他們將舊版工作負載遷移至容器，特別是 Windows 工作負載。憑藉 20 多年的經驗，我看到組織投入大量心力和資源來強化 Windows Server，實作從 CIS Benchmarks 到執行期防毒保護的所有項目，以保護敏感資料。

不過，出現了令人擔憂的趨勢。由於這些高度安全的虛擬機器會現代化為容器，因此許多重要的強化實務都會遭到忽略。從基礎映像 (OS) 到 IIS 等 Web 服務，Windows 安全最佳實務通常被忽略，其中大部分重點僅放在保護容器主機。請務必了解，當容器在隔離的命名空間中運作時，它們仍然會與主機共用核心基本概念。攻擊者通常對橫向移動更感興趣，而不是直接鎖定容器主機，使其能夠利用脆弱的容器安全設定並存取敏感資料。

文件的目標是強調您應該特別針對 IIS 上託管`ASP.NET`網站的 Windows 容器實作的一些基本安全設定。我們將專注於四個關鍵領域：
+ 帳戶安全政策
+ 稽核政策
+ IIS 安全最佳實務
+ 最低權限準則

首先，我們將深入探討為什麼每個安全組態對於保護您的 Windows 容器至關重要，並檢查它們減輕的特定風險及其提供的安全優勢。接下來，我們將逐步解說程式碼片段，示範如何在 Dockerfile 中正確實作這些組態，確保您的容器已強化，防範潛在威脅。最後，我們將詳細說明每個設定，提供其功能的完整說明、對容器安全性的影響，以及它如何有助於保護您的應用程式。此方法不僅會示範如何套用這些最佳實務，也會讓您深入了解為何這些做法對於在容器化環境中維持強大的安全狀態至關重要。

## 1. 使用本機安全政策和登錄檔設定帳戶政策 （密碼或鎖定）
<a name="_1_configure_account_policies_password_or_lockout_using_local_security_policies_and_registry"></a>

Windows Server Core 是最小的安裝選項，可作為 【EKS Optimized Windows AMI】(https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-windows-ami.html：//) 的一部分使用。使用本機安全政策及登錄檔設定帳戶政策 （密碼或鎖定） 可強制執行強大的密碼和鎖定規則，以強化系統安全。這些政策要求使用者建立具有已定義最小長度和複雜性的高強度密碼，以防止常見的密碼相關攻擊。

透過設定密碼存留期上限，系統會提示使用者定期更新密碼，從而降低登入資料洩露的可能性。鎖定政策透過在指定的失敗登入嘗試次數後暫時鎖定帳戶來新增額外的保護層，有助於防止暴力攻擊。透過 Windows 登錄檔設定這些設定，可讓管理員在系統層級強制執行這些安全措施，確保整個組織的一致性和合規性。在 Windows 容器中套用這些帳戶政策對於維持安全性一致性至關重要，即使容器通常是暫時性的，且適用於隔離的工作負載：

### 安全一致性
<a name="_security_consistency"></a>
+ 合規：在容器中強制執行一致的密碼政策和鎖定規則有助於維持安全合規，尤其是在需要嚴格存取控制的環境中 （例如 HIPAA、PCI-DSS 等法規合規）。
+ 強化容器：套用這些設定可確保您的 Windows 容器強化，防範未經授權的存取或密碼型攻擊，使容器的安全狀態與更廣泛的系統安全政策保持一致。

### 防禦暴力攻擊
<a name="_protection_against_brute_force_attacks"></a>
+ 帳戶鎖定：這些設定可在登入嘗試失敗的特定次數之後鎖定帳戶，協助防止暴力登入嘗試。這可防止攻擊者嘗試不限數量的密碼。
+ 密碼複雜性：需要長度足夠的複雜密碼，可以降低使用弱密碼的可能性，即使在隔離的容器化環境中也是如此。

### 多使用者案例
<a name="_multi_user_scenarios"></a>
+ 如果您的容器化應用程式旨在處理多個使用者或需要使用者身分驗證，強制執行密碼政策可確保容器內的使用者帳戶遵守嚴格的安全規則，限制只有授權使用者才能存取。

### 持久性 Windows 容器
<a name="_persistent_windows_containers"></a>
+ 雖然容器通常被視為暫時性，但某些 Windows 容器可以執行長期服務或處理使用者管理，因此請務必強制執行與一般 Windows 伺服器類似的適當安全政策。

### 混合環境中的一致性
<a name="_consistency_in_hybrid_environments"></a>
+ 如果您在基礎設施中同時執行虛擬機器和容器，在所有環境中套用相同的安全政策 （例如密碼/鎖定政策） 可確保一致的安全標準，簡化控管和管理。

總而言之，在 Windows 容器內套用這些帳戶政策可確保您的容器不是安全策略的弱點，可防範密碼攻擊，並在整個環境中強制執行一致性。

Dockerfile：

```
# Configure account policies for password complexity and lockout
RUN powershell -Command \
      "Write-Output 'Configuring Account Policies (Password/Lockout)...'; \
      NET ACCOUNTS /MINPWLEN:14 /MAXPWAGE:60 /MINPWAGE:14 /LOCKOUTTHRESHOLD:5
```

 **說明：**

本節透過 Windows 登錄檔設定密碼和鎖定設定的帳戶政策。這些政策透過控制密碼要求和帳戶鎖定閾值來協助強制執行安全性。

1.  **MinimumPasswordLength (MINPWLEN) = 14** 此設定會定義密碼的字元數下限。範圍為 0-14 個字元；預設值為六個字元。

1.  **MaximumPasswordAge (MAXPWAGE) = 60** 此設定會定義密碼有效的天數上限。使用 UNLIMITED 不會指定任何限制。/MAXPWAGE 不能小於 /MINPWAGE。範圍為 1-999；預設值為 90 天

1.  **鎖定閾值 (LOCKOUTTHRESHOLD) = 5** 此設定會定義失敗登入嘗試的閾值。5 次不正確的嘗試後，帳戶將被鎖定。

這些設定可透過強制執行強式密碼政策，並在登入嘗試失敗一定次數後鎖定帳戶，協助改善密碼安全性並防止暴力攻擊。

## 2. 稽核政策
<a name="_2_audit_policies"></a>

稽核政策對於 Windows Containers 很重要，因為它們提供安全事件的關鍵可見性，例如登入嘗試和權限使用、協助偵測未經授權的存取、監控使用者活動，並確保符合法規標準。即使在容器的暫時性本質下，稽核日誌對於事件調查、主動威脅偵測，以及跨容器化環境維持一致的安全狀態至關重要。

 **安全性監控與合規：**
+ 追蹤使用者活動：稽核政策可讓管理員監控容器內的使用者活動，例如登入嘗試和權限使用。這對於偵測未經授權的存取或可疑行為至關重要。
+ 法規合規：許多組織需要記錄安全事件以符合 HIPAA、PCI-DSS 和 GDPR 等法規。在容器中啟用稽核政策可確保您符合這些要求，即使在容器化環境中也是如此。

 **事件調查：**
+ 鑑識和分析：如果容器化應用程式或服務遭到入侵，稽核日誌可以為事件後分析提供有價值的洞見。它們可協助安全團隊追蹤攻擊者採取的動作，或識別違規的發生方式。
+ 即時偵測：稽核日誌可讓管理員設定關鍵事件的即時提醒 （例如，失敗的登入嘗試、權限提升）。此主動監控有助於及早偵測攻擊，並加快回應時間。

 **跨環境的一致性：**
+ 統一安全狀態：透過登錄在容器中套用稽核政策，您可以確保容器化和非容器化環境的安全實務一致。這可避免容器成為安全監控的盲點。
+ 混合環境中的可見性：對於同時執行傳統 Windows 伺服器和容器的組織，稽核政策在所有平台上提供類似的可見性和控制，讓管理更容易且更有效率。

 **追蹤特殊權限操作：**
+ 權限使用稽核：在以更高權限執行應用程式或執行管理任務的容器環境中，稽核權限操作可確保責任。您可以記錄存取敏感資源或在容器內執行關鍵任務的人員。
+ 防止濫用權限：透過監控權限使用，您可以偵測未經授權的使用者何時嘗試提升其權限或存取容器中的限制區域，這有助於防止內部或外部攻擊。

 **偵測未經授權的存取嘗試：**
+ 失敗的登入嘗試：為失敗的登入嘗試啟用稽核政策有助於識別暴力攻擊或未經授權嘗試存取容器化應用程式。這可讓您了解誰嘗試存取系統，以及存取系統的頻率。
+ 帳戶鎖定監控：稽核帳戶鎖定事件可讓管理員偵測和調查由可疑或惡意活動引起的潛在鎖定。

 **即使在偶發環境中，持久性安全：**
+ 暫時性但安全：雖然容器是暫時性的，這表示可以經常刪除並重新建立，但稽核仍然扮演關鍵角色，以確保在容器執行時擷取安全事件。這可確保在容器生命週期期間記錄關鍵安全事件。

 **集中式記錄：**
+ 將日誌轉送至集中式系統：容器可與集中式記錄系統 （例如 ELK 堆疊、AWS CloudWatch) 整合，以從多個容器執行個體擷取稽核日誌。這可讓您在基礎設施間更好地分析和相互關聯安全事件。

Dockerfile：

```
# Configure audit policies for logging security events
RUN powershell -Command \
    "Write-Host 'Configuring Audit Policy..'; \
    Set-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Lsa' -Name 'SCENoApplyLegacyAuditPolicy' -Value 0; \
    auditpol /set /category:"Logon/Logoff" /subcategory:"Logon" /failure:enable

# Creates STDOUT on Windows Containers (check GitHub LogMonitor:: https://github.com/microsoft/windows-container-tools/blob/main/LogMonitor/README.md)
COPY LogMonitor.exe LogMonitorConfig.json 'C:\\LogMonitor\\'
WORKDIR /LogMonitor
```

 **說明：**

本節使用登錄檔修改來設定稽核政策。稽核政策會控制 Windows 記錄的安全事件，這有助於監控和偵測未經授權的存取嘗試。

1.  **SCENoApplyLegacyAuditPolicy = 0** 這會停用舊版稽核政策格式，讓較新版本的 Windows 引入更精細的稽核政策。這對現代稽核組態很重要。

1.  **Auditpol 子類別：「登入」 ** 此設定可同時稽核成功和失敗登入事件。值 3 表示 Windows 將記錄成功和失敗的登入嘗試。這有助於監控誰正在存取系統並擷取失敗的登入嘗試。

這些稽核政策對於安全監控和合規至關重要，因為它們提供重要安全事件的詳細日誌，例如登入嘗試和使用特殊權限操作。

## 3. Windows 容器的 IIS 安全最佳實務
<a name="_3_iis_security_best_practices_for_windows_containers"></a>

在 Windows Containers 中實作 IIS 最佳實務非常重要，原因有幾個，可確保您的應用程式安全、高效能且可擴展。雖然容器提供隔離和輕量型環境，但它們仍需要適當的組態，以避免漏洞和操作問題。以下是為什麼在 Windows Containers 中遵循 IIS 的最佳實務至關重要：

 **安全性** 
+ 防止常見漏洞：IIS 通常是跨網站指令碼 (XSS)、點擊劫持和資訊揭露等攻擊的目標。實作安全標頭 （例如 X-Content-Type-Options、X-Frame-Options 和 Strict-Transport-Security) 有助於保護您的應用程式免受這些威脅。
+ 隔離不足：容器已隔離，但設定錯誤的 IIS 執行個體可能會公開敏感資訊，例如伺服器版本詳細資訊、目錄清單或未加密的通訊。透過停用目錄瀏覽和移除 IIS 版本標頭等功能，您可以將攻擊面降至最低。
+ 加密和 HTTPS：最佳實務，例如強制執行僅限 HTTPS 的連線，確保傳輸中的資料已加密，防止敏感資訊遭到攔截。

 **效能** 
+ 高效率資源使用：IIS 最佳實務，例如啟用動態和靜態壓縮，可減少頻寬使用量並縮短載入時間。這些最佳化在容器化環境中特別重要，其中資源會跨容器和主機系統共用。
+ 最佳化記錄：正確設定記錄 （例如，包括 X-Forwarded-For 標頭） 可確保您可以追蹤用戶端活動，同時將不必要的記錄開銷降至最低。這可協助您收集相關資料進行故障診斷，而不會降低效能。

 **可擴展性和可維護性** 
+ 跨環境一致性：透過遵循最佳實務，您可以確保 IIS 組態在多個容器執行個體之間保持一致。這可簡化擴展，並確保在部署新容器時，它們遵循相同的安全性和效能準則。
+ 自動化組態：Dockerfiles 中的最佳實務，例如設定資料夾許可和停用不必要的功能，確保每個新容器都已正確設定。這可降低手動介入並降低人為錯誤的風險。

 **合規** 
+ 符合法規要求：許多產業都有嚴格的法規要求 （例如 PCI-DSS、HIPAA)，要求特定的安全措施，例如加密通訊 (HTTPS) 和用戶端請求的記錄。遵循容器中的 IIS 最佳實務有助於確保符合這些標準。
+ 可稽核性：實作稽核政策和安全記錄允許事件的可追蹤性，這在稽核中至關重要。例如，記錄 X-Forwarded-For 標頭可確保用戶端 IP 地址正確記錄在以代理為基礎的架構中。

 **將共用環境中的風險降至最低** 
+ 避免設定錯誤：容器共用主機的核心，當它們彼此隔離時，設定不良的 IIS 執行個體可能會公開漏洞或造成效能瓶頸。最佳實務可確保每個 IIS 執行個體以最佳方式執行，降低跨容器問題的風險。
+ 最低權限存取：為容器內的資料夾和檔案設定適當的許可 （例如，在 PowerShell 中使用 Set-Acl)，可確保容器內的使用者和程序只有必要的存取權，進而降低權限提升或資料竄改的風險。

 **暫時性環境中的彈性** 
+ 容器的嚴重性：容器通常短暫且經常重建。套用 IIS 最佳實務可確保安全且一致地設定每個容器，無論重新部署多少次。這可防止隨著時間的推移引入錯誤組態。
+ 緩解潛在的設定錯誤：透過自動強制執行最佳實務 （例如停用較弱的通訊協定或標頭），容器重新啟動或更新期間設定錯誤的風險將降至最低。

Dockerfile：

```
# Enforce HTTPS (disable HTTP) -- Only if container is target for SSL termination
RUN powershell -Command \
    "$httpBinding = Get-WebBinding -Name 'Default Web Site' -Protocol http | Where-Object { $_.bindingInformation -eq '*:80:' }; \
    if ($httpBinding) { Remove-WebBinding -Name 'Default Web Site' -Protocol http -Port 80; } \
    $httpsBinding = Get-WebBinding -Name 'Default Web Site' -Protocol https | Where-Object { $_.bindingInformation -eq '*:443:' }; \
    if (-not $httpsBinding) { New-WebBinding -Name 'Default Web Site' -Protocol https -Port 443 -IPAddress '*'; }"

# Use secure headers
RUN powershell -Command \
    "Write-Host 'Adding security headers...'; \
    Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.applicationHost/sites/siteDefaults/logFile/customFields' -name "." -value @{logFieldName='X-Forwarded-For';sourceName='X-Forwarded-For';sourceType='RequestHeader'}; \
    Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='Strict-Transport-Security';value='max-age=31536000; includeSubDomains'}; \
    Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='X-Content-Type-Options';value='nosniff'}; \
    Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='X-XSS-Protection';value='1; mode=block'}; \
    Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpProtocol/customHeaders" -name "." -value @{name='X-Frame-Options';value='DENY'};"

# Disable IIS version disclosure
RUN powershell -Command \
    "Write-Host 'Disabling IIS version disclosure...'; \
    Import-Module WebAdministration; \
    Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/security/requestFiltering" -name "removeServerHeader" -value "true";"

# Set IIS Logging Best Practices
RUN powershell -Command \
    Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/directoryBrowse" -name "enabled" -value "false"; \
    Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/httpErrors" -name "existingResponse" -value "PassThrough"; \

# Enable IIS dynamic and static compression to optimize performance
RUN powershell -Command \
    "Write-Host 'Enabling IIS compression...'; \
    Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpCompressionDynamic; \
    Import-Module WebAdministration; \
    Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/urlCompression" -name "doDynamicCompression" -value "true"; \
    Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/urlCompression" -name "doStaticCompression" -value "true"

# Ensure proper folder permissions using PowerShell's Set-Acl

RUN powershell -Command \
    "Write-Host 'Setting folder permissions for IIS...'; \
    $path = 'C:\\inetpub\\wwwroot'; \
    $acl = Get-Acl $path; \
    $iusr = New-Object System.Security.Principal.NTAccount('IIS_IUSRS'); \
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($iusr, 'ReadAndExecute', 'ContainerInherit, ObjectInherit', 'None', 'Allow'); \
    $acl.SetAccessRule($rule); \
    $users = New-Object System.Security.Principal.NTAccount('Users'); \
    $rule2 = New-Object System.Security.AccessControl.FileSystemAccessRule($users, 'ReadAndExecute', 'ContainerInherit, ObjectInherit', 'None', 'Allow'); \
    $acl.SetAccessRule($rule2); \
    Set-Acl -Path $path -AclObject $acl"
```

說明：

此命令會將 IIS 設定為記錄 X-Forwarded-For 標頭，該標頭通常用於在請求通過代理或負載平衡器時擷取原始用戶端 IP 地址。根據預設，IIS 只會記錄負載平衡器或反向代理的 IP 地址，因此新增此自訂日誌欄位有助於追蹤真正的用戶端 IP 以進行安全稽核、分析和故障診斷。

1.  **X-Forwarded-For 標頭**，通常用於在請求通過代理或負載平衡器時擷取原始用戶端 IP 地址。根據預設，IIS 只會記錄負載平衡器或反向代理的 IP 地址，因此新增此自訂日誌欄位有助於追蹤真正的用戶端 IP 以進行安全稽核、分析和故障診斷。

1.  **Strict-Transport-Security (HSTS)** 確保瀏覽器僅透過 HTTPS 進行通訊。max-age=31536000 指定此政策強制執行 1 年，且 includeSubDomains 會將政策套用至所有子網域。

1.  **X-Content-Type-Options** 防止瀏覽器「MIME-sniffing」遠離宣告之 Content-Type 的回應。這有助於防止某些類型的攻擊。

1.  **X-XSS-Protection** 在瀏覽器中啟用跨網站指令碼 (XSS) 保護。

1.  **X-Frame-Options** 防止頁面內嵌在 iframe 中，防止點擊劫持攻擊。

1.  **停用 IIS 版本揭露** 此命令會在 HTTP 回應中停用伺服器標頭，預設會顯示正在使用的 IIS 版本。隱藏此資訊有助於降低攻擊者識別和鎖定 IIS 版本特定漏洞的風險。

1.  **啟用僅限 HTTPS 的連線** 此 （註解） 區段會強制執行 HTTPS 連線並停用 HTTP。如果未註解，Dockerfile 會將 IIS 設定為僅在連接埠 443 (HTTPS) 上接聽，並移除連接埠 80 上的預設 HTTP 繫結。這在終止容器內的 SSL 時非常有用，並確保所有流量都已加密。

1.  **停用目錄瀏覽** 在沒有預設文件時，防止 IIS 顯示目錄清單。這可避免將內部檔案結構公開給使用者。

1.  **傳遞自訂錯誤頁面** 確保如果應用程式有自己的錯誤處理，IIS 會讓應用程式的錯誤頁面傳遞，而不是顯示預設的 IIS 錯誤頁面。

1.  **詳細錯誤模式** 設定 IIS 僅顯示本機請求的詳細錯誤訊息，協助開發人員診斷問題，而不會向外部使用者公開敏感資訊。

1.  **確保適當的資料夾許可** 此區塊會設定 IIS Web 根目錄 (C：\\inetpub\\wwwroot) 的資料夾許可。它會設定 IIS\_IUSRS 和使用者群組的讀取和執行許可，確保這些使用者可以存取 資料夾，但不能修改檔案。設定正確的許可可將未經授權的存取或竄改 Web 伺服器託管的檔案的風險降至最低。

遵循 Windows Containers 中的 IIS 最佳實務可確保容器化應用程式安全、高效能且可擴展。這些實務有助於防止漏洞、最佳化資源用量、確保合規性，以及維持跨容器執行個體的一致性。即使容器設計為隔離，仍需要適當的組態，才能將風險降至最低，並確保應用程式在生產環境中的可靠性。

## 4. 最低權限準則
<a name="_4_principle_of_least_privilege"></a>

最低權限原則 (PoLP) 對 Windows 容器至關重要，原因有幾個，尤其是在增強安全性和最大限度地降低容器化環境中的風險。此原則指示系統或應用程式應以正常運作所需的最低許可層級運作。以下是為什麼它在 Windows 容器中很重要：

 **將攻擊面降至最低** 
+ 容器通常會執行與各種系統元件互動的應用程式，以及應用程式擁有的更多權限，對這些元件的存取越廣泛。透過將容器的許可限制為僅必要，PoLP 可大幅減少攻擊面，讓攻擊者在容器遭到入侵時更難利用容器。

 **限制遭入侵容器的影響** 
+ 如果 Windows 容器遭到入侵，執行具有過多權限的應用程式 （例如，管理員或根層級存取） 可能會允許攻擊者控制關鍵系統檔案或提升容器主機的權限。透過強制執行 PoLP，即使容器遭到入侵，攻擊者仍會限制他們可以執行的動作，以防止進一步升級和存取敏感資源或其他容器。

 **多租戶環境中的保護** 
+ 在雲端或企業環境中，多個容器可以在相同的實體或虛擬基礎設施上執行。PoLP 可確保遭入侵的容器無法存取屬於其他租用戶的資源或資料。此隔離對於在共用的多租用戶環境中維護安全性至關重要，可防止容器之間的橫向移動。

 **緩解權限提升** 
+ 攻擊者可以使用具有高權限的容器來提升系統內的權限。PoLP 透過限制容器對系統資源的存取來降低此風險，從而防止未經授權的動作或權限在容器環境之外升級。

 **合規與稽核** 
+ 許多法規標準和安全架構 （例如 PCI DSS、HIPAA、GDPR) 要求系統遵守 PoLP，以限制對敏感資料的存取。執行具有受限權限的 Windows 容器有助於組織遵守這些法規，並確保應用程式只能存取他們特別需要的資源。

 **降低組態錯誤的風險** 
+ 當容器以不必要的權限執行時，即使是輕微的錯誤設定也可能導致嚴重的安全漏洞。例如，如果以管理員身分執行的容器意外暴露到網際網路，攻擊者可能會取得系統的控制權。PoLP 透過預設為有限權限，使設定錯誤較不危險，協助防止此類風險。

 **改善容器安全狀態** 
+ 藉由遵循 PoLP，容器與基礎主機系統和彼此隔離更佳。這可確保容器化應用程式不太可能在定義的範圍之外存取或修改系統檔案或程序，從而保持主機作業系統和其他工作負載的完整性。

Dockerfile：

```
# Strongly recommended that when deploying a Windows server container to any multi-tenant environment that your application runs via the ContainerUser account
USER ContainerUser
```

 **說明：**

在本節中，USER ContainerUser 命令指定 Windows 容器內的應用程式應該在 ContainerUser 帳戶下執行，而不是預設的管理員帳戶。

以下是為什麼這很重要，特別是在多租戶環境中：

1.  **最低權限原則**：ContainerUser 帳戶是具有有限權限的非管理使用者。在此帳戶下執行應用程式會遵守最低權限原則，這有助於將利用風險降至最低。如果攻擊者入侵應用程式，他們對系統的存取將有限，從而減少潛在的損害。

1.  **增強安全性**：在多租戶環境中，容器可以共用相同的基礎基礎設施。以 ContainerUser 執行可確保即使一個容器遭到入侵，它也不會具有存取或修改重要系統檔案或其他容器的管理權限。這可大幅減少攻擊面。

1.  **避免根存取**：根據預設，容器可能會以更高的許可執行 （類似於 Linux 容器中的根存取），如果遭到利用，則可能很危險。使用 ContainerUser 可確保應用程式不會以不必要的管理權限執行，讓攻擊者更難提升權限。

1.  **多租戶環境的最佳實務**：在多個使用者或組織共用相同基礎設施 （例如雲端） 的環境中，安全性至關重要。執行具有限制許可的應用程式可防止一個租用戶的應用程式影響其他人，保護整個平台的敏感資料和資源。

**USER ContainerUser** 命令可確保應用程式以最低權限執行，藉由限制容器遭到入侵時可能造成的損壞來增強多租戶環境中的安全性。這是防止容器化環境中未經授權的存取或權限提升的最佳實務。

最低權限原則對於 Windows 容器至關重要，因為它會限制安全漏洞的潛在影響、減少攻擊面，並防止未經授權存取關鍵系統元件。透過執行僅具有必要許可的容器化應用程式，組織可以大幅增強其容器環境的安全性和穩定性，尤其是在多租戶和共用基礎設施中。

## 最終想法：為什麼保護您的 Windows 容器是現今威脅環境中的必要項目
<a name="_final_thoughts_why_securing_your_windows_containers_is_a_must_have_in_todays_threat_landscape"></a>

在現今快速發展的數位世界中，威脅越來越複雜和豐富，保護您的 Windows 容器不僅是建議，也是絕對必要的。容器提供輕量、彈性的方式來封裝和部署應用程式，但不受安全漏洞影響。隨著越來越多的企業採用容器來簡化基礎設施，如果未適當保護，它們也會成為網路攻擊的潛在目標。

網際網路充滿各種威脅，從針對未修補漏洞的惡意執行者，到自動機器人掃描組態錯誤。如果沒有適當的安全措施，可以利用容器來公開敏感資料、提升權限，或做為攻擊的進入點，這些攻擊可能會危害更廣泛的基礎設施。這使得容器的安全性與保護您環境的任何其他部分一樣重要。

使用 Windows 容器時，許多傳統的安全最佳實務仍然適用。實作強大的帳戶政策、保護 IIS 組態、強制執行 HTTPS、使用嚴格的防火牆規則，以及對關鍵檔案套用最低權限存取，都是確保容器對攻擊保持彈性的關鍵措施。此外，定期稽核和記錄可讓您了解容器內發生的情況，讓您在可疑活動變成完全爆發的事件之前，先加以捕捉。

保護 Windows 容器也符合法規要求，要求保護敏感資料並確保應用程式的完整性。隨著雲端原生和容器化架構越來越普遍，從基礎映像到執行中的容器，確保每一層的安全性，將有助於保護您的操作和維護客戶信任。

總而言之，容器化應用程式的崛起，加上越來越多的網路威脅，使得容器安全成為現代基礎設施管理不可轉移的層面。透過遵守最佳實務並持續監控漏洞，企業可以享受 Windows 容器的靈活性和效率，而不會犧牲安全性。在這個威脅豐富的環境中，保護您的 Windows 容器不只是一個選項，也是必要項目。