共用方式為


將應用程式設定為使用 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 來執行下列動作:

如果您在設定期間遇到任何問題,請參閱我們的疑難排解指南以找到可能的解決方案。