Microsoft/aspnetリポジトリからコンテナを作成しました。 ASP.NET 4.x WebアプリをIISここで、サイトにアクセスしているログインユーザーを取得できる)にコンテナ化したいしたいこれは内部アプリケーションであるため、統合Windows認証を活用できます。
コンテナーホストへの透過的なネットワークを作成しました。
さらに、コンテナ内のIIS=でWindows認証をセットアップしました。コンテナホストでのグループ管理サービスアカウントの作成について読みましたが、これはまだ行っていません。これで十分か、それとも私はさらに手順を踏む必要があるかを確認します。
グループ管理サービスアカウント(gMSA)の作成は、Windows認証をコンテナーで機能させるために実行する必要がある手順の1つにすぎません。また、作成したgMSAに関する情報が含まれているクレデンシャルスペックが必要です。これは、コンテナーがgMSAアカウントを、アプリケーションのアプリプールで使用される組み込みアカウント(LocalSystem、NetworkService、ApplicationPoolIdentity)と交換するために使用されます。
実際には、ステップの最小セットは次のようになります。
1)コンテナーのホストに使用するマシンを追加するために使用できるADグループを作成します。
PS> New-ADGroup "Container Hosts" -GroupScope Global
PS> $group = Get-ADGroup "Container Hosts"
PS> $Host = Get-ADComputer "mydockerhostmachine"
PS> Add-ADGroupMember $group -Members $Host
2)アプリで使用するgMSAアカウントを作成します。
PS> New-ADServiceAccount -name myapp -DNSHostName myapp.mydomain.local -ServicePrincipalNames http/myapp.mydomain.local -PrincipalsAllowedToRetrieveManagedPassword "Container Hosts"
PrincipalsAllowedToRetrieveManagePassword
の値は、手順1で作成したADグループの名前である必要があります。
3)次に、各コンテナのホストで:
a。 Powershell Active Directoryモジュールをインストールしてテストし、ホストからgMSAを使用できることを確認します。
PS> Add-WindowsFeature RSAT-AD-PowerShell
PS> Import-Module ActiveDirectory
PS> Install-AdServiceAccount myapp
PS> Test-AdServiceAccount myapp
b。資格情報仕様Powershellモジュールをインストールして、資格情報仕様を作成します。
PS> Invoke-WebRequest https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/live/windows-server-container-tools/ServiceAccounts/CredentialSpec.psm1 -OutFile CredentialSpec.psm1
PS> Import-Module .\CredentialSpec.psm1
PS> New-CredentialSpec -Name myapp -AccountName myapp
c。すべてが正しく構成されている場合は、この資格情報仕様でコンテナーを実行できます。
docker run --security-opt "credentialspec=file://myapp.json" -d -p
80:80 -h myapp.mydomain.local [my-image-name:tag]
上記の点に注意してください。gMSAの作成時に使用するサービスプリンシパル名がコンテナのホスト名(-h引数)と一致していることを確認してください。そうしないと、アプリケーションがWindows認証を使用して他のドメインリソースまたはサービス(SQL Serverなど)にアクセスする場合に問題が発生します。また、SQL Serverなどの他のリソースにアクセスする場合は、それらのサービスにgMSAアカウントへの適切な権限も付与してください。
最後に、Dockerfileを作成するときに、gMSAアカウントをアプリプールに直接割り当てないでください。ビルトインアカウントの1つを使用して、エンジンがコンテナー内のアカウントを交換できるようにします。つまり、Dockerfileでのアプリプールの作成は、次のようになります。
RUN Import-Module WebAdministration; `
New-Item -Path IIS:\AppPools\MyAppPool; `
Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'; `
Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name processModel -value @{identitytype='ApplicationPoolIdentity'}