gMSA を使用するようにアプリを構成する

適用対象: Windows Server 2022、Windows Server 2019

一般的な構成では、コンテナーには 1 つのグループ管理サービス アカウント (gMSA) のみが与えられ、コンテナー コンピューター アカウントからネットワーク リソースへの認証が試行されるたびにそれが使用されます。 つまり、gMSA ID を使用する必要がある場合、Local System または Network Service としてアプリを実行する必要があります。 コンテナー コンピューター アカウントとは異なる ID としてコンテナーでサービスまたはアプリケーションを実行する場合に備えて、追加の gMSA を使用してコンテナーを構成することもできます。

IIS アプリ プールを Network Service として実行する

コンテナーで IIS Web サイトをホストしている場合、gMSA を利用するために必要なことは、アプリプール ID を Network Service に設定することだけです。 これを Dockerfile で実行するには、次のコマンドを追加します。

RUN %windir%\system32\inetsrv\appcmd.exe set AppPool DefaultAppPool -'processModel.identityType':NetworkService

以前に IIS アプリプールに静的ユーザー資格情報を使用したことがある場合は、それらの資格情報の代わりに gMSA を検討してください。 開発環境、テスト環境、運用環境で gMSA を変更できます。コンテナー イメージを変更することなく、IIS によって現在の ID が自動的に取得されます。

Windows サービスを Network Service として実行する

コンテナー化されたアプリを Windows サービスとして実行する場合は、Dockerfile で Network Service として実行するようにサービスを設定できます。

RUN sc.exe config "YourServiceName" obj= "NT AUTHORITY\NETWORK SERVICE" password= ""

任意のコンソール アプリを Network Service として実行する

IIS または Service Manager でホストされていない汎用コンソール アプリでは、多くの場合、コンテナーを Network Service として実行することが最も簡単です。アプリによって自動的に gMSA コンテキストが継承されるためです。 この機能は、Windows Server バージョン 1709 以降で使用できます。

次の行を Dockerfile に追加して、既定で Network Service として実行するようにします。

USER "NT AUTHORITY\NETWORK SERVICE"

docker exec を使用して、Network Service としてコンテナーに 1 回限り接続することもできます。 これは、通常はコンテナーが Network Service として実行されていないときに、実行中のコンテナーの接続の問題をトラブルシューティングする場合に特に役立ちます。

# 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 を使用すると、アプリの構成だけでなく、次のことを行うことができます。

設定中に問題が発生した場合は、トラブルシューティング ガイドで考えられる解決策をご確認ください。