將應用程式設定為使用 gMSA
適用于:Windows Server 2022、Windows Server 2019
在一般設定中,容器只會取得一個群組受控服務帳戶 (gMSA),每當容器電腦帳戶嘗試向網路資源進行驗證時就會使用該帳戶。 這表示您的應用程式必須以本機系統或網路服務的形式執行 (如果需要使用 gMSA 身分識別的話)。 如果您想要以不同於容器電腦帳戶的身分識別,在容器中執行服務或應用程式,也可以對容器設定其他 gMSA。
以網路服務的形式執行 IIS 應用程式集區
如果要在容器中裝載 IIS 網站,您只需要將應用程式集區身分識別設定為 [網路服務],即可充分利用 gMSA。 您可新增下列命令以在 Dockerfile 中執行此作業:
RUN %windir%\system32\inetsrv\appcmd.exe set AppPool DefaultAppPool -'processModel.identityType':NetworkService
如果您先前針對 IIS 應用程式集區使用靜態使用者認證,請將 gMSA 視為這些認證的代替項目。 您可變更開發、測試與生產環境之間的 gMSA,而 IIS 會自動挑選目前的身分識別,而不需變更容器映像。
以網路服務的形式執行 Windows 服務
如果容器化應用程式以 Windows 服務的形式執行,您可將此服務設定為在 Dockerfile 中以 [網路服務] 的形式執行:
RUN sc.exe config "YourServiceName" obj= "NT AUTHORITY\NETWORK SERVICE" password= ""
以網路服務的形式執行任意主控台應用程式
對於未裝載於 IIS 或 Service Manager 的一般主控台應用程式而言,以 [網路服務] 的形式執行容器通常最簡單,因此應用程式會自動繼承 gMSA 內容。 這項功能會在 Windows Server 版本 1709 中提供。
將以下這行新增至 Dockerfile,使其依預設以網路服務的形式執行:
USER "NT AUTHORITY\NETWORK SERVICE"
您也可以使用 docker exec
以網路服務的形式連線到容器一次。 當容器通常不是以網路服務的形式執行時,如果您要針對執行中容器的連線問題進行疑難排解,這種做法特別有用。
# Opens an interactive PowerShell console in the container (id = 85d) as the Network Service account
docker exec -it --user "NT AUTHORITY\NETWORK SERVICE" 85d powershell
接下來的步驟
除了設定應用程式之外,您也可以使用 gMSA 來執行下列動作:
如果您在設定期間遇到任何問題,請參閱我們的疑難排解指南以找到可能的解決方案。