次の方法で共有


AD FS の安全な計画と展開に関するベスト プラクティス

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

AD FS のコア セキュリティのベスト プラクティス

次の主要なベスト プラクティスは、設計または展開のセキュリティを強化または拡張するすべての AD FS インストールに共通です。

  • "階層 0" システムとして AD FS をセキュリティで保護する

    AD FS は基本的に認証システムであるため、ネットワーク上の他の ID システムと同様に、"階層 0" システムとして扱う必要があります。 詳細については、「 Active Directory 管理層モデル」を参照してください。

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

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

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

    インストールされている各役割拡張ファイルは、各コンピューターが構成されている役割とサブロールの種類を表します。 C:WindowsADFSScw ディレクトリには、次のロール拡張ファイルがインストールされます。

    • Farm.xml

    • SQLFarm.xml

    • StandAlone.xml

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

    SCW で AD FS ロール拡張機能を適用するには、次の手順を順番に実行します。

    1. AD FS をインストールし、そのコンピューターに適したサーバーの役割を選択します。 詳細については、「AD FS 展開ガイド 」の「フェデレーション サービス プロキシ役割サービスのインストール 」を参照してください。

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

    3. WindowssecurityMsscwLogs ディレクトリにある SCWRegister_log.xml ファイルを調べて、コマンドが正常に完了したことを確認します。

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

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

    AD FS サーバーの役割 使用される AD FS 構成データベース コマンド プロンプトで次のコマンドを入力してください。
    スタンドアロン フェデレーション サーバー Windows 内部データベース scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwStandAlone.xml"
    ファームに加わったフェデレーション サーバー Windows 内部データベース scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwFarm.xml"
    ファームに加わったフェデレーション サーバー SQL Server scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwSQLFarm.xml"
    フェデレーション サーバー プロキシ なし scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwProxy.xml"

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

  • キオスクを使用する場合など、セキュリティが非常に重要な懸念事項である状況では、トークン再生検出を使用します。 トークンの再生検出は、フェデレーション サービスに対して行われたトークン要求の再生が確実に検出され、要求が破棄されることを保証する AD FS の機能です。 トークン再生の検出は、既定で有効になっています。 これは、同じトークンが複数回使用されないようにすることで、WS-Federation パッシブ プロファイルとセキュリティ アサーション マークアップ言語 (SAML) WebSSO プロファイルの両方で機能します。

    フェデレーション サービスは、開始すると、満たすトークン要求のキャッシュの構築を開始します。 時間の経過と同時に、後続のトークン要求がキャッシュに追加されると、フェデレーション サービスに対してトークン要求を複数回再生しようとする試みを検出する機能が増加します。 トークン再生の検出を無効にした後で再度有効にした場合、再生キャッシュがコンテンツの再構築に十分な時間を許可されるまで、フェデレーション サービスは以前に使用した可能性のある期間、トークンを引き続き受け入れることに注意してください。 詳細については、「 AD FS 構成データベースの役割」を参照してください。

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

    トークンの暗号化は、AD FS の展開に対して試行される可能性がある潜在的な man-in-the-middle (MITM) 攻撃に対するセキュリティと保護を強化することを強くお勧めします。 使用暗号化を使用すると、全体に若干の影響を与える可能性がありますが、一般に、通常は気付くべきではありません。また、多くの展開では、セキュリティを強化するための利点は、サーバーのパフォーマンスに関するコストを超えています。

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

  • 認証に拡張保護を利用する

    デプロイをセキュリティで保護するために、AD FS での認証機能の拡張保護を設定して使用できます。 この設定では、フェデレーション サーバーでサポートされる認証の拡張保護のレベルを指定します。

    認証の拡張保護は、中間者 (MITM) 攻撃から保護するのに役立ちます。この攻撃では、攻撃者がクライアントの資格情報を傍受してサーバーに転送します。 このような攻撃に対する保護は、チャネル バインディング トークン (CBT) を介して可能になります。これは、クライアントとの通信を確立するときにサーバーによって必須、許可、または不要になる可能性があります。

    拡張保護機能を有効にするには、Set-ADFSProperties コマンドレットで ExtendedProtectionTokenCheck パラメーターを使用します。 この設定で使用できる値と、値が提供するセキュリティレベルを次の表に示します。

    パラメーター値 セキュリティ レベル 保護の設定
    必須 サーバーが完全に強化されました。 拡張保護は適用され、常に必要です。
    許可する サーバーが部分的に強化されています。 拡張保護は、関連するシステムが修正プログラムを適用してサポートされている場合に適用されます。
    なし サーバーは脆弱です。 拡張保護は適用されません。
  • ログ記録とトレースを使用している場合は、機密情報のプライバシーを確保してください。

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

    そのため、AD FS 構成とそのログ ファイルに対してアクセス制御を適用することを強くお勧めします。 このような情報を表示しない場合は、ログインを無効にするか、他のユーザーと共有する前に、ログ内の PII または機密データを除外する必要があります。

    次のヒントは、ログ ファイルの内容が意図せずに公開されないようにするのに役立ちます。

    • AD FS イベント ログとトレース ログ ファイルが、アクセスを必要とする信頼された管理者のみにアクセスを制限するアクセス制御リスト (ACL) によって保護されていることを確認します。

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

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

  • AD FS エクストラネット ソフト ロックアウトと AD FS エクストラネット スマート ロックアウト保護

    Web アプリケーション プロキシを経由する無効な (無効な) パスワードによる認証要求の形式で攻撃が発生した場合、AD FS エクストラネット ロックアウトを使用すると、AD FS アカウントロックアウトからユーザーを保護できます。 AD FS エクストラネット ロックアウトは、ユーザーを AD FS アカウントロックアウトから保護するだけでなく、ブルート フォース パスワード推測攻撃からも保護します。

    Windows Server 2012 R2 での AD FS のエクストラネット ソフト ロックアウトについては、「 AD FS エクストラネット ソフト ロックアウト保護」を参照してください。

    Windows Server 2016 での AD FS のエクストラネット スマート ロックアウトについては、「 AD FS エクストラネット スマート ロックアウト保護」を参照してください。

AD FS の SQL Server 固有のセキュリティのベスト プラクティス

次のセキュリティのベスト プラクティスは、これらのデータベース テクノロジを使用して AD FS の設計と展開のデータを管理する場合の Microsoft SQL Server® または Windows Internal Database (WID) の使用に固有です。

これらの推奨事項は、SQL Server 製品のセキュリティ ガイダンスを拡張することを目的としていますが、置き換えるものではありません。 セキュリティで保護された SQL Server インストールの計画の詳細については、「セキュリティで 保護された SQL インストールのセキュリティに関する考慮事項 (https://go.microsoft.com/fwlink/?LinkID=139831)」を参照してください。

  • 物理的にセキュリティで保護されたネットワーク環境のファイアウォールの内側に SQL Server を常にデプロイします。

    SQL Server のインストールをインターネットに直接公開しないでください。 データセンター内にあるコンピューターのみが、AD FS をサポートする SQL Server のインストールにアクセスできる必要があります。 詳細については、「 セキュリティのベスト プラクティスチェックリスト (https://go.microsoft.com/fwlink/?LinkID=189229)」を参照してください。

  • 組み込みの既定のシステム サービス アカウントを使用する代わりに、サービス アカウントで SQL Server を実行します。

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

  • SQL Server のサーフェス領域を最小限に抑えます。

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

  • SQL ベースの認証は使用しないでください。

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

  • SQL インストールでの追加のチャネル セキュリティの必要性を慎重に評価します。

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

    暗号化はセキュリティを確保するのに役立つ貴重なツールですが、すべてのデータまたは接続について考慮する必要はありません。 暗号化を実装するかどうかを決定するときは、ユーザーがデータにアクセスする方法を検討してください。 ユーザーがパブリック ネットワーク経由でデータにアクセスする場合、セキュリティを強化するためにデータ暗号化が必要になる場合があります。 ただし、AD FS による SQL データのすべてのアクセスにセキュリティで保護されたイントラネット構成が含まれている場合は、暗号化が必要ではない可能性があります。 暗号化の使用には、パスワード、キー、証明書のメンテナンス戦略も含める必要があります。

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

    詳細については、SQL Server への接続の暗号化またはSQL Server の暗号化を参照してください。

  • ストアド プロシージャを使用して安全に設計されたアクセスを構成し、SQL ストアド データの AD FS によるすべての SQL ベースの参照を実行します。

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

こちらもご覧ください

Windows Server 2012 の AD FS 設計ガイド