AD FS 2.0のセキュアな計画と展開のためのベスト プラクティス

このトピックでは、Active Directory フェデレーション サービス (AD FS) 2.0 の展開を設計する際のセキュリティの計画および評価に役立つベスト プラクティス情報を提供します。このトピックを開始点として、AD FS 2.0 を使用する際の全体的なセキュリティに影響する考慮事項を確認および評価することができます。このトピックの情報は、既存のセキュリティ計画や設計に関するその他のベスト プラクティスを補足および拡張するものです。

AD FS 2.0 のセキュリティに関するコア ベスト プラクティス

以下のコア ベスト プラクティスは、すべての AD FS 2.0 インストールに共通します。これらによって設計または展開のセキュリティを向上または拡張できます。

  • セキュリティ構成ウィザードを使用して、フェデレーション サーバーおよびフェデレーション サーバー プロキシ コンピューターに AD FS 固有のセキュリティ ベスト プラクティスを適用する

    セキュリティ構成ウィザード (SCW) は、すべての Windows Server 2008 および Windows Server 2008 R2 コンピューターにプレインストールされているツールです。このウィザードを使用することにより、インストールするサーバーの役割に基づいて、サーバーの攻撃対象領域の縮小に役立つセキュリティ ベスト プラクティスを適用できます。

    AD FS 2.0 をインストールすると、SCW で使用できる役割拡張ファイルがセットアップ プログラムによって作成されます。このファイルを使用して、セットアップ時に選択した特定の AD FS 2.0 サーバーの役割 (フェデレーション サーバーまたはフェデレーション サーバー プロキシ) に適用するセキュリティ ポリシーを作成することができます。

    インストールされる役割拡張の各ファイルは、各コンピューターが構成されている役割およびサブ役割の種類に対応しています。以下の役割拡張ファイルが %systemroot%\Active Directory Federation Services 2.0\Scw ディレクトリにインストールされます。

    • Farm.xml

    • SQLFarm.xml

    • StandAlone.xml

    • **Proxy.xml (**このファイルは、コンピューターをフェデレーション サーバー プロキシの役割で構成した場合にのみ提供されます。)

    SCWAD FS 2.0 の役割拡張を適用するには、以下のステップを順に実行します。

    1. AD FS 2.0 をインストールし、そのコンピューターに適したサーバーの役割を選択します。詳細については、「AD FS 2.0 展開ガイド」の「AD FS 2.0 ソフトウェアのインストール」(英語) を参照してください。

    2. Scwcmd コマンドライン ツールを使用して、適切な役割拡張ファイルを登録します。コンピューターが構成されている役割でこのツールを使用する方法については、次の表を参照してください。

    3. SCWRegister_log.xml ファイルを確認して、このコマンドが正常に完了したことを確認します。このファイルは、%systemroot%\security\Msscw\Logs ディレクトリにあります。

    AD FS 2.0 ベースの SCW セキュリティ ポリシーを適用するフェデレーション サーバーまたはフェデレーション サーバー プロキシ コンピューターごとに、これらすべてのステップを実行する必要があります。

    次の表に、AD FS 2.0 をインストールしたコンピューターで選択した AD FS 2.0 サーバーの役割に基づいて、適切な SCW 役割拡張を登録する方法を示します。

    AD FS 2.0 サーバーの役割 使用する AD FS 構成データベース コマンド プロンプトで入力するコマンド
    スタンドアロン フェデレーション サーバー Windows Internal Database scwcmd register /kbname:ADFS2Standalone /kbfile:"%programfiles%\Active Directory Federation Services 2.0\scw\StandAlone.xml"
    ファーム連結フェデレーション サーバー Windows Internal Database scwcmd register /kbname:ADFS2Standalone /kbfile:"%programfiles%\Active Directory Federation Services 2.0\scw\Farm.xml"
    ファーム連結フェデレーション サーバー SQL Server scwcmd register /kbname:ADFS2Standalone /kbfile:"%programfiles%\Active Directory Federation Services 2.0\scw\SQLFarm.xml"
    フェデレーション サーバー プロキシ 該当なし scwcmd register /kbname:ADFS2Standalone /kbfile:"%programfiles%\Active Directory Federation Services 2.0\scw\Proxy.xml"

    AD FS 2.0 で使用できるデータベースの詳細については、「AD FS 構成データベースの役割」を参照してください。

  • セキュリティが非常に重要な懸念事項になる場合 (キオスクが使用される場合など) に、トークン リプレイ検出を使用する
    トークン リプレイ検出は、フェデレーション サービスに対して行われたトークン要求を再生しようとするすべての試みを検出し、その要求を破棄する AD FS 2.0 の機能です。既定では、トークン リプレイ検出は有効化されています。この機能は、同じトークンが複数回使用されないようにすることで、WS フェデレーション パッシブ プロファイルと SAML (Security Assertion Markup Language) WebSSO プロファイルの両方に対して機能します。

    フェデレーション サービスが開始されると、処理されるトークン要求のキャッシュが構築されます。その後、トークン要求がキャッシュに追加されていくにつれて、トークン要求を複数回再生しようとする試みをフェデレーション サービスで検出する能力が向上します。トークン再生検出を無効にし、後から再度有効にすると、再生キャッシュがコンテンツを再構築するまでの一定の時間、フェデレーション サービスが受け入れるトークンの中には、以前に使用されたトークンが含まれている可能性があることに注意してください。詳細については、「AD FS 構成データベースの役割」を参照してください。

  • トークン暗号化を使用する (特に、サポートされている SAML アーティファクト解決を使用している場合)

    AD FS 2.0 の展開で実行される可能性のある MITM (man-in-the-middle) 攻撃に対するセキュリティおよび保護を強化するために、トークンの暗号化を使用することを強くお勧めします。暗号化を使用するとスループットに多少影響する可能性がありますが、通常は無視できます。多くの展開では、サーバーのパフォーマンスに関するどのようなマイナスよりも、セキュリティを強化することによる利点の方が上回ります。

    トークン暗号化を有効にするには、最初に、証明書利用者の信頼に暗号化証明書を追加します。暗号化証明書は、証明書利用者の信頼の作成時に作成することも、後から構成することもできます。暗号化証明書を後から既存の証明書利用者の信頼に追加するには、AD FS 2.0 スナップインの使用中に、信頼プロパティ内の [Encryption] タブで、使用する証明書を設定できます。wpsAD FS 2.0 コマンドレットを使用して既存の信頼の証明書を指定するには、Set-ClaimsProviderTrust または Set-RelyingPartyTrust コマンドレットのいずれかの EncryptionCertificate パラメーターを使用します。フェデレーション サービスがトークンを解読するときに使用する証明書を設定するには、Set-ADFSCertificate コマンドレットを使用して、CertificateType パラメーターに "Token-Encryption" を指定します。特定の証明書利用者の信頼の暗号化を有効または無効にするには、Set-RelyingPartyTrust コマンドレットの EncryptClaims パラメーターを使用します。

  • 認証の拡張保護を活用する

    展開のセキュリティを保護するために、AD FS 2.0 では、認証の拡張保護機能を設定および使用できます。この設定は、adfs2_fsがサポートする認証の拡張保護レベルを指定します。

    認証の拡張保護を使用することで、攻撃者がクライアントの資格情報を傍受してサーバーに転送する MITM (man-in-the-middle) 攻撃を防止できます。このような攻撃は、チャネル バインディング トークン (CBT) を使用して保護できます。CBT は、サーバーがクライアントとの通信を確立するときに、必須、許可、または不要のいずれかに指定できます。

    拡張保護機能を有効にするには、Set-ADFSProperties コマンドレットの ExtendedProtectionTokenCheck パラメーターを使用します。次の表に、この設定で使用可能な値、および各値によって実現されるセキュリティ レベルをまとめます。

    パラメーター値 セキュリティ レベル 保護設定
    Require サーバーは完全に強化されます。 拡張保護が適用され、常に必要とされます。
    Allow サーバーは部分的に強化されます。 関連するシステムが拡張保護をサポートするように設定されている場合に、拡張保護が適用されます。
    None サーバーは攻撃を受けやすくなります。 拡張保護は適用されません。
  • ログおよびトレースを使用している場合には、すべての機密情報のプライバシーを確保する

    AD FS 2.0 の既定では、個人を特定できる情報 (PII) がフェデレーション サービスまたは通常の操作の一部として直接、公開または追跡されることはありません。ただし、AD FS 2.0 でイベント ログおよびデバッグ トレース ログが有効化されている場合は、構成したクレーム ポリシーに基づいて、一部のクレームの種類およびそれらに関連付けられている値に、AD FS 2.0 のイベントまたはトレース ログに記録される可能性のある PII が含まれる可能性があります。

    したがって、AD FS 2.0 構成ファイルおよびログ ファイルには、アクセス制御を適用することを強くお勧めします。このような情報を表示しない場合は、他のユーザーと情報を共有する前に、ログを無効にするか、ログ内の PII または機密データをフィルター処理してください。

    以下のヒントは、ログ ファイルのコンテンツが意図せず公開されることを避けるために役立ちます。

    • AD FS 2.0 のイベント ログ ファイルおよびトレース ログ ファイルを確実に保護するため、アクセス制御リスト (ACL) を使用して、これらのファイルにアクセスする必要がある信頼できる管理者だけにアクセスを制限してください。

    • ログ ファイルをコピーまたはアーカイブする際に、Web 要求を使用して簡単に入手できるファイル拡張子またはパスを使用しないでください。たとえば、.xml ファイル拡張子は安全な選択ではありません。入手できる拡張子のリストについては、インターネット インフォメーション サービス (IIS) の管理者ガイドを確認してください。

    • ログ ファイルのパスを変更する場合は、ログ ファイルの場所への絶対パスを指定してください。この場所は、外部ユーザーが Web ブラウザーを使用してアクセスできないように、Web ホストの仮想ルート (vroot) のパブリック ディレクトリ以外の場所にする必要があります。

AD FS 2.0 のセキュリティに関するベスト プラクティス

以下のセキュリティ ベスト プラクティスは、AD FS 2.0 の設計および展開におけるデータ管理に、Microsoft SQL Server® または Windows Internal Database (WID) のデータベース技術が使用されている場合にのみ当てはまります。

これらの推奨事項は、SQL Server 製品のセキュリティ ガイダンスの代わりではなく、追加的な情報として提供されます。SQL Server インストールのセキュリティに関する計画の詳細については、「SQL インストールのセキュリティに関する注意点**https://go.microsoft.com/fwlink/?LinkID=139831**」(**https://go.microsoft.com/fwlink/?LinkID=139831**) を参照してください。

  • SQL Server は物理的に安全なネットワーク環境のファイアウォールの背後に展開する

    SQL Server インストールは、インターネットに直接公開しないでください。データセンター内にあるコンピューターだけが AD FS 2.0 をサポートする SQL Server インストールにアクセスできるようにする必要があります。詳細については、「SQL Server 2000 SP3 セキュリティ機能と推奨事例**https://go.microsoft.com/fwlink/?LinkID=189229**」(**https://go.microsoft.com/fwlink/?LinkID=189229**) を参照してください。

  • SQL Server は組み込みの既定のシステム サービス アカウントではなくサービス アカウントで実行する

    既定では、SQL Server は、LocalSystem アカウントや NetworkService アカウントなど、サポートされている組み込みシステム アカウントのいずれかを使用するようにインストールおよび構成されます。AD FS 2.0 に対する SQL Server インストールのセキュリティを強化するために、SQL Server サービスへのアクセスにはできるだけ独自のサービス アカウントを使用し、Active Directory 展開でこのアカウントのセキュリティ プリンシパル名 (SPN) を登録して、Kerberos 認証を有効にしてください。これにより、クライアントとサーバーの間で相互認証が可能になります。個別のサービス アカウントの SPN 登録が存在しない場合、SQL Server は、クライアントのみが認証される Windows ベースの認証の NTLM を使用します。

  • SQL Server の攻撃対象領域を最小にする

    必要な SQL Server エンドポイントのみを有効にします。SQL Server の既定では、削除できない組み込みの TCP エンドポイントが 1 つ提供されます。AD FS 2.0 では、この TCP エンドポイントを Kerberos 認証に対して有効にする必要があります。現在の TCP エンドポイントについて、SQL インストールに追加のユーザー定義 TCP ポートが追加されているかどうかを確認するには、Transact-SQL (T-SQL) セッションで "SELECT * FROM sys.tcp_endpoints" クエリ ステートメントを使用します。SQL Server エンドポイント構成の詳細については、「複数の TCP ポートでリッスンするようにデータベース エンジンを構成する方法**https://go.microsoft.com/fwlink/?LinkID=189231**」(**https://go.microsoft.com/fwlink/?LinkID=189231**) を参照してください。

  • SQL ベースの認証を使用しない

    パスワードがネットワークを介してクリア テキストとして転送されないように、または構成設定にパスワードが格納されないように、SQL Server インストールでは Windows 認証のみを使用してください。SQL Server 認証は、旧バージョンの認証モードです。SQL Server 認証を使用している場合、SQL (構造化照会言語) ログイン資格情報 (SQL ユーザー名とパスワード) を保存することはお勧めしません。詳細については、「認証モード**https://go.microsoft.com/fwlink/?LinkID=189232**」(英語) (https://go.microsoft.com/fwlink/?LinkID=189232) を参照してください。

  • SQL インストールにチャネル セキュリティを追加する必要があるかどうかを慎重に評価する

    Kerberos 認証を有効にしている場合でも、SQL Server セキュリティ サポート プロバイダー インターフェイス (SSPI) は、チャネルレベルのセキュリティを提供しません。ただし、ファイアウォールで保護されたネットワーク内にサーバーが安全に配置されているインストールでは、SQL 通信の暗号化が必須でない場合があります。

    暗号化は、セキュリティを確保するために役立つ貴重なツールですが、すべてのデータまたは接続に適していると見なすことは誤りです。暗号化を実装するかどうかを決定する場合は、ユーザーがどのようにデータにアクセスするかを考慮してください。ユーザーがパブリック ネットワークを介してデータにアクセスする場合は、セキュリティを強化するためにデータの暗号化が必要になる可能性があります。ただし、AD FS 2.0 による SQL データへのすべてのアクセスが安全なイントラネット構成の下で実行される場合には、暗号化は必須でない可能性があります。暗号化を使用する場合には、パスワード、キー、および証明書のメンテナンス方針も検討する必要があります。

    SQL データがネットワーク経由で表示または改ざんされるおそれがある場合は、SQL 接続を保護するために、インターネット プロトコル セキュリティ (IPsec) または SSL (Secure Sockets Layer) を使用してください。ただし、これは、SQL Server のパフォーマンスに悪影響を与える可能性があり、状況によっては、AD FS 2.0 のパフォーマンスに影響したり、パフォーマンスが制限される可能性があります。たとえば、トークン発行のために SQL ベースの属性ストアからの属性ルックアップが必須である場合に、トークン発行時の AD FS 2.0 のパフォーマンスが低下する可能性があります。ネットワーク境界のセキュリティ構成を強力にすることで、SQL が改ざんされる脅威を取り除くことができます。たとえば、SQL Server インストールを保護するための最適なソリューションは、インターネット ユーザーおよびコンピューターがインストールにアクセスできないようにし、データセンター環境内のユーザーまたはコンピューターのみがアクセスできるようにすることです。

    詳細については、「SQL Server への接続の暗号化https://go.microsoft.com/fwlink/?LinkID=189234**」(**https://go.microsoft.com/fwlink/?LinkID=189234**) または「SQL Server の暗号化https://go.microsoft.com/fwlink/?LinkID=189233**」(**https://go.microsoft.com/fwlink/?LinkID=189233**) を参照してください。

  • SQL で格納されているデータを AD FS 2.0 によって SQL ベースでルックアップする際に、ストアド プロシージャを使用してすべてのルックアップを実行することにより、安全に設計されたアクセスを構成する

    サービスの質を高め、データ分離を行うために、すべての属性ストア ルックアップ コマンドに対してストアド プロシージャを作成できます。データベースの役割を作成し、それに対してストアド プロシージャを実行するためのアクセス許可を付与できます。このデータベースの役割に、AD FS 2.0 Windows サービスのサービス ID を割り当てます。AD FS 2.0 Windows サービスでは、属性ルックアップに対して使用される適切なストアド プロシージャ以外のすべての SQL ステートメントを実行できないようにします。このように、SQL Server データベースへのアクセスをロック ダウンすることで、特権の昇格攻撃のリスクが軽減されます。