ADFSトレーニングテキスト全文公開チャレンジ(6) – ADFSのインストール(後編)

皆さんこんにちは。国井です。
ADFSトレーニングテキスト全文公開チャレンジの第6回目はADFSサーバーのインストールについてです。
前回は前提条件の話でしたが、今回はインストールそのものの話が登場します。
早速どうぞ!
■ ■ ■

スライド34

ADFS サーバーのコンポーネントは Windows Server 2016 の役割として提供されます。そのため、役割を追加し、初期構成を行うことで、追加でコンポーネントをダウンロードすることなく、ADFS サーバーを利用するために必要な設定は完了します。

一方、マイクロソフトでは Office 365 (Azure AD) との ID 連携を簡単に実装できるようにするため、Azure Active Directory Connect (Azure AD Connect) と呼ばれるツールを提供し、Azure AD Connect のウィザードに沿ってインストールすることもできます。Azure AD Connect を利用する場合、1 回のウィザードで複数台のADFS サーバーを同時にインストールできるだけでなく、後述する Web アプリケーションプロキシも同時にインストールできるため、Azure AD との組み合わせで ADFS サーバーを利用するときは有効なツールといえます。

Azure AD Connect のウィザードで ADFS サーバーや Web アプリケーションプロキシをインストールする場合、遠隔からインストール操作を行うことになります。そのため、遠隔からインストールするために必要な権限を割り当てておく必要があります。ドメイン管理者としての権限があれば ADFS サーバーをインストールすることができますが、Web アプリケーションプロキシとなるサーバーはワークグループのサーバーであるケースがあるため、その場合には次の設定を行ってください。

■Azure AD Connect を実行するサーバーで次のコマンドレットを実行します

Set-Item WSMan:\localhost\Client\TrustedHosts `
-Value <Web アプリケーションプロキシサーバー> -Force

■Web アプリケーションプロキシとなるサーバーで次のコマンドレットを実行します

Enable-PSRemoting -force

なお、2 台以上の ADFS サーバーを設置して運用する場合、クライアントからのアクセスを受け付けるためにハードウェアの負荷分散装置またはネットワーク負荷分散 (NLB) を利用します。このとき、クライアントからの ADFS サーバーへのアクセス要求は機械的に分散されるため、どちらの ADFS サーバーに接続しても同じような STS としての処理ができるよう、サーバーファーム内の各サーバーには同じ証明書を実装してください。


スライド35

ADFS をインストールすると、フェデレーションサービスの名前が設定され、既定では ADFS サーバーの FQDN がフェデレーションサービスの名前として設定されます。ところが 2台以上のサーバーで ADFS を構成する場合、2 台で 1 つのフェデレーション サービス名を構成しなければならないため、既定の名前から変更する必要があります。フェデレーション サービスに関する設定は ADFS 管理ツールの [ADFS] を右クリックし、[フェデレーション サービスのプロパティ] を開いて設定します。

■フェデレーションサービスの表示名
レルムを選択する画面や、Web アプリケーション プロキシを経由してアクセスするときの画面に表示される名前がフェデレーション サービスの表示名です。表示名は単なるラベルなので、ユーザーにとってわかりやすい名前を設定すると良いでしょう。

■フェデレーションサービス名
1 台以上の ADFS サーバーで構成されるフェデレーション サービスに対して設定する、システム上の名前です。この名前は SSL 証明書に設定された FQDN と一致している必要があります。つまり、クライアントコンピューターから ADFS サーバーにアクセスするときの FQDN にはフェデレーションサービス名を利用します。そのため、フェデレーションサービス名は名前解決ができるように、DNSサーバーにレコードを登録しておく必要があります

■フェデレーションサービスの識別子
他のサーバー/サービスからフェデレーションサービスを識別するために使用する識別子です。この名前は ID 連携を行う相手から見て一意である必要があります。一般には SSL 証明書の FQDN を含む URL (http://<FQDN>/adfs/services/trust) に設定します (URL は一意であればよく、実在する必要はありません)。


スライド37

ADFS を利用してクレームベース認証を行う場合、組織内から認証を要求される場合と、組織外 (インターネット上) から認証を要求される場合があります。そのいずれの要求にも応えられるようにするためには、ADFS サーバーにインターネットからアクセスできるようにする必要があります。

ただし、ADFS サーバーはトークンを発行する STS としての役割を持つため、インターネットからの直接アクセスを許可すると、攻撃者からの攻撃によってサービスを乗っ取られる可能性があります。そのため、インターネットからのアクセスを実現するためには、ADFS サーバーへの代理アクセスを実現する Web アプリケーション プロキシを DMZ に設置し、Web アプリケーション プロキシ経由で ADFS サーバーにアクセスさせるような運用を行います。

Web アプリケーションプロキシを利用してインターネットからのクレーム ベース認証を受け付けるように構成した場合、これまでのバージョンの ADFS で提供していた ADFS プロキシとは異なり、ADFS サーバーに対する単なる代理接続だけでなく、認証・認可に関わる、すべての通信に対するプロキシとして動作します。その結果、イントラネットのアクセスに対する認証が集約され、一度の認証で、ADFS に関連するアクセスはもちろんのこと、イントラネット内のすべてのリソースにアクセスできるようになります。


スライド38

ADFS サーバーとともに組織内に ADFS プロキシを実装することによって、インターネットからの安全なクレーム ベース認証が実装できます。ただし、クライアントからのアクセスを受け付ける場合、ADFS サーバーにアクセスしても Web アプリケーション プロキシにアクセスしても、同じサーバーに接続しているかのように見せる必要があるため、次の点に注意する必要があります。

■Web アプリケーション プロキシと ADFS サーバーで同じ FQDN で名前解決できるようにする
Web アプリケーション プロキシと ADFS サーバーを同じサーバーであるように見せるためには、同じ FQDN で名前解決できるようにします。

■Web アプリケーション プロキシと ADFS サーバーで同じ証明書を利用する
Web アプリケーション プロキシと ADFS サーバーのどちらにアクセスしても、同じサーバーと通信しているように見せるためには、同じ SSL 証明書を使って通信を行います。なお、Web アプリケーション プロキシは STS として動作しないため、トークン署名証明書の実装は不要です。

■Web アプリケーション プロキシと Web サーバーで同じ証明書を利用する
SSL 通信を行う Web サーバーを Web アプリケーション プロキシ経由で公開している場合、Web アプリケーションプロキシを Web サーバーのように見せる必要があるため、Web サーバーと同じ証明書を Web アプリケーション プロキシに実装します。


スライド39

Web アプリケーションプロキシと ADFS サーバーで同じ FQDN を設定した場合、外部からのアクセスには Web アプリケーション プロキシへ、Web アプリケーション プロキシからのアクセスには ADFS サーバーへ、それぞれアクセスできるように名前解決を行う必要があります。このような名前解決を実現する場合、次のいずれかの名前解決方法を実装します。

■Web アプリケーション プロキシの DNS サーバーアドレスとして内部の DNSサーバーを指定

■Web アプリケーション プロキシで Hosts ファイルを構成

Hosts ファイルを使用する場合、Hosts ファイルに ADFS サーバーのコンピューター名 (FQDN) と IP アドレスを登録しておくことで、ADFS サーバーへ要求の転送ができるようになります。一方、DNSサーバーで名前解決を行う場合、イントラネットと DMZ で別々の DNSサーバーを用意し、外部からのユーザーは DMZ の DNSサーバー、Web アプリケーションプロキシはイントラネットの DNS サーバーを利用するように構成します。


スライド40

Web アプリケーションプロキシの役割を利用する場合、サーバー マネージャーの [役割と機能の追加] から [リモート アクセス] の役割を追加します。役割を追加すると、Web アプリケーション プロキシの構成ウィザードを実行することができるため、ウィザード内で利用する ADFS サーバーや証明書を指定します。ADFS サーバーに追加された Web アプリケーション プロキシは [リモート アクセス管理ツール] 画面のほか、
Get-AdfsWebApplicationProxyRelyingPartyTrust コマンドレットを利用して確認することができます。

Web アプリケーションプロキシを通じてインターネットに公開する社内のアプリケーションは、[リモート アクセス管理ツール] から登録します。公開の設定を行う際、公開された社内アプリケーションにアクセスする場合、Web アプリケーション プロキシによる認証 (事前認証) を行ってから社内アプリケーションへのアクセスを許可する方法と、Web アプリケーションプロキシによる認証を行わないで (パススルー) 社内アプリケーションへのアクセスを許可する方法のうち、いずれかを選択することができます。このうち、事前認証を選択すると、ADFS を活用したクレームベース認証と、トークンを利用した社内アプリケーションへのアクセスが実現します。

編集後記

今さらADFSサーバーをインストールする手順の解説って、どれだけ需要があるんだろう?と思いながら載せてみました。証明書の実装だったり、名前解決の設定であったり、結構な落とし穴があることを改めて振り返ってみて思い出しました。これから構築する人がどれだけいるかわかりませんが、今さらこんな落とし穴にはまらないよう、誰かの役に立てば幸いです。