MENU

L4ロードバランサー環境で、IISの統合Windows認証を成功させるためのIIS設定

목차

개요

以下の記事でL4ロードバランサー + SSL終端環境で、IISにおける統合Windows認証(Integrated Windows Authentication, IWA)を構成する方法を解説しました。

この方法を構成する際にSPN(Service Principal Name)の設定ミスや重複により認証が失敗するケースが多々あります。

本記事では、SPNの登録や必要な作業を網羅的に解説します。

本記事での構成例

   [Client Browser] 
          |
          | HTTPS Access
          v
  [L4 Load Balancer (TCP 443)]
       |                |
       v                v
  [Server1 (IIS)]   [Server2 (IIS)]
  • FQDN: sso.chat-messenger.com
  • IISのホスト名: Server1, Server2
  • 共有サービスアカウント:CAMTEST\cam-svc

問題点:SPN重複エラー

統合Windows認証では、クライアントがアクセス先のFQDNに対してSPNを検索し、該当するサービスアカウントに対してKerberosチケットを取得します。

setspn -S HTTP/sso.chat-messenger.com Server1$
setspn -S HTTP/sso.chat-messenger.com Server2$

上記のように、同一FQDN (sso.chat-messenger.com) を異なるホスト(Server1, Server2)に対してSPN登録すると、次のようなエラーが発生:

Duplicate SPN found, aborting operation.

解決方法:SPNを共有サービスアカウントに登録

複数ホストで同一FQDNを使う場合、SPNは共有サービスアカウントに1つだけ登録する必要があります。

共有サービスアカウントの作成

IIS のアプリケーションプールで動作させるサービスアカウントは、ドメインユーザーであれば可能ですが(Domain Users に属していればOK)、通常ユーザーとサービスアカウントを分離し、誤操作やパスワードポリシーの適用範囲を明確にするため、OU=ServiceAccounts のように、OUを Users と区別してActive Directory ドメインコントローラーで、cam-svc を作成します。

サービスアカウントでSPN登録

上記で作成したサービスアカウントでSPN登録を行います。

setspn -S HTTP/sso.chat-messenger.com CAMTEST\cam-svc

・ドメインに参加している任意の端末でOK。ただし、ドメイン管理者権限が必要です。
・HTTPS通信においてもSPNはHTTP/ホスト名の形式で登録する必要があります。

IISアプリケーションプールの設定

Server1, Server2 両サーバのアプリケーションプールの実行ユーザーを、作成したサービスアカウント CAMTEST\cam-svc に設定

IISマネージャーの「構成エディター」

IISアプリケーションプールをサービスアカウントに変更し、Windows認証を正しくKerberosで動作させるためには、IISマネージャーの「構成エディター」機能で次の設定を行う必要があります:

  • system.webServer/security/authentication/windowsAuthentication セクション
  • useAppPoolCredentialsTrue に設定
  • useKernelModeFalse に設定

ドメインコントローラー上でIISが動作している場合は、この設定が不要な場合があります。

共有サービスアカウントに「バッチ ジョブとしてログオン」権限の設定

アプリケーションプールは Web リクエストに応じて w3wp.exe(ワーカープロセス)を起動する。この際、共有サービスアカウントで実行する場合、「バッチ ジョブとしてログオン」権限がないとプロセスの起動が拒否され、HTTP 503 エラーになるため、. 共有サービスアカウントに「バッチ ジョブとしてログオン」権限の設定(GPOベース)が必要です。

以降の設定は各IIS端末のローカルセキュリティポリシーでも制御可能ですが、Active Directory ドメインコントローラー上のGPO(グループポリシーオブジェクト)で、組織ポリシーで制限が掛かっている場合があります。 その場合は GPO 自体で制御が必要で、その方法を解説しています。

ドメインコントローラー上でIISが動作している場合は、「バッチ ジョブとしてログオン」が不要な場合があります。

OU=ServiceAccounts に GPO をリンクする手順

サービスアカウントCAMTEST\cam-svcOU=ServiceAccountsに作成した場合、
このOUにグループポリシー(例:IIS-BatchLogon-GPO)をリンクしなければ、cam-svcにポリシーが適用されません。GPOは「どのOUにリンクされているか」によって適用対象が決まるため、アカウントの存在場所とGPOのリンク先を一致させることが重要です。

  1. gpmc.msc を実行し、「グループポリシー管理エディタ」を起動
  2. 左ペインでcamtest.com/ServiceAccounts OU を右クリック → 「このドメインに GPO を作成し、このコンテナーにリンクする」→ 任意の名前を入力(例IIS-BatchLogon-GPO)
  3. 作成したIIS-BatchLogon-GPOで編集
  4. コンピュータの構成 → Windows の設定 → セキュリティの設定 → ローカル ポリシー → ユーザー権利の割り当て→ バッチ ジョブとしてログオン(Log on as a batch job)
  5. ダブルクリックしてダイアログを開き、CAMTEST\cam-svc ユーザを追加

GPO設定の反映について

GPOの適用を正しく反映させるには、対象の IIS サーバ上で gpupdate /force を実行することが重要です。これにより、GPOの設定が即座に有効になります。特に「バッチ ジョブとしてログオン」権限を付与する際には、ポリシーの反映が遅れると w3wp.exe の起動失敗につながることがあります。

  • URL을(를) 확인했습니다!
목차