拡張保護を使用したデータベース エンジンへの接続

適用対象: SQL Server

SQL Server では、SQL Server 2008 R2 (10.50.x) 以降の拡張保護がサポートされています。 認証の拡張保護 とは、オペレーティング システムで実装されているネットワーク コンポーネントの機能です。 拡張保護 は、Windows 7 および Windows Server 2008 R2 でサポートされており、 以前の Microsoft オペレーティング システムでは、拡張保護 がサービス パックに含まれています。 SQL Server の接続を 拡張保護を使用して確立することで、安全性を高めることができます。

重要

既定では、Windows の 拡張保護 は有効になっていません。 Windows で 拡張保護 を有効にする方法の詳細については、「 認証に対する保護の強化」を参照してください。

拡張保護の説明

拡張保護 では、認証リレー攻撃を防止するために、サービス バインドとチャネル バインドが使用されます。 認証リレー攻撃では、NTLM 認証を実行できるクライアント (Windows エクスプローラー、Microsoft Outlook、.NET SqlClient アプリケーションなど) が攻撃者のサーバー (悪意のある CIFS ファイル サーバーなど) に接続します。 攻撃者は、そのクライアントの資格情報を使用してクライアントになりすまし、サービス (データベース エンジン サービスのインスタンスなど) への認証を行います。

この攻撃には次の 2 つのバリエーションがあります。

  • おびき寄せによる攻撃。クライアントが自ら攻撃者のサーバーに接続するようにおびき寄せられます。

  • なりすましによる攻撃。正当なサービスに接続しているつもりのクライアントが、汚染された DNS ルーティングや IP ルーティングによって、知らない間に攻撃者のサーバーにリダイレクトされます。

SQL Server では、SQL Server インスタンスに対するこれらの攻撃を減らすために、サービス バインドとチャネル バインドがサポートされています。

サービス バインド

サービス バインドでは、接続しようとしている SQL Server サービスの署名付きサービス プリンシパル名 (SPN) を送信するようにクライアントに要求することで、おびき寄せによる攻撃に対処します。 サービスでは、認証応答の一部として、パケットで受信した SPN がサービス自身の SPN と一致するかどうかの確認が行われます。 クライアントが攻撃者のサーバーに接続するようにおびき寄せられている場合は、パケットに攻撃者の署名付き SPN が含まれます。 攻撃者の SPN が含まれているため、攻撃者がパケットをリレーして本物の SQL Server サービスにクライアントとして認証を受けることはできません。 サービス バインドのコストはごく小さく、1 回しか発生しませんが、サービス バインドではなりすましによる攻撃には対処できません。 サービス バインドが発生するのは、クライアント アプリケーションが SQL Server への接続に暗号化を使用しない場合です。

チャネル バインド

チャネル バインドでは、クライアントと SQL Server サービス インスタンスとの間に、セキュリティで保護されたチャネル (Schannel) を確立します。 サービスでは、クライアントとサービス自身のチャネル固有のチャネル バインド トークン (CBT) を比較することにより、クライアントが本物かどうかが確認されます。 チャネル バインドでは、おびき寄せによる攻撃となりすましによる攻撃の両方に対処できますが、 すべてのセッション トラフィックのトランスポート層セキュリティ (TLS) 暗号化が必要になるため、実行時のコストが大きくなります。 チャネル バインドが発生するのは、暗号化がクライアントとサーバーのどちらで強制されているかにかかわらず、クライアント アプリケーションが暗号化を使用して SQL Server に接続する場合です。

警告

SQL Server および SQL Server 向けの Microsoft データ プロバイダーは、TLS 1.0 および SSL 3.0 のみをサポートしています。 オペレーティング システムの SChannel 層を変更して別のプロトコル (TLS 1.1、TLS 1.2 など) を適用すると、SQL Server への接続に失敗する可能性があります。 TLS 1.1 または TLS 1.2 がサポートされるよう、SQL Server の最新ビルドを必ずインストールしておきます。 詳細については、「https://support.microsoft.com/topic/kb3135244-tls-1-2-support-for-microsoft-sql-server-e4472ef8-90a9-13c1-e4d8-44aad198cdbe」を参照してください。

オペレーティング システムのサポート

Windows による 拡張保護のサポートの詳細については、以下のリンク先を参照してください。

設定

サービス バインドとチャネル バインドに影響する SQL Server の接続設定は 3 つあります。 これらの設定を構成するには、SQL Server 構成マネージャーまたは WMI を使用します。これらの設定を表示するには、ポリシー ベースの管理の [サーバー プロトコル設定] ファセットを使用します。

  • [強制的に暗号化]

    選択できる値は、 [オン][オフ] です。 チャネル バインドを使用する場合は、 [強制的に暗号化][オン] に設定して、すべてのクライアントで暗号化が強制されるようにする必要があります。 この設定を [オフ] にした場合、保証されるのはサービス バインドだけになります。 [強制的に暗号化] は、SQL Server 構成マネージャーの [MSSQLSERVER のプロトコルのプロパティ] ([フラグ] タブ) にあります。

  • 拡張保護

    選択できる値は、 [オフ][許可] 、および [必須] です。 拡張保護 変数を使用すると、各 SQL Server インスタンスの拡張保護レベルを構成できます。 [拡張保護] は、SQL Server 構成マネージャーの [MSSQLSERVER のプロトコルのプロパティ] ([詳細設定] タブ) にあります。

    • [オフ] に設定すると、 [拡張保護] は無効になります。 SQL Server のインスタンスは、クライアントが保護されているかどうかに関係なく、任意のクライアントからの接続を許可します。 [オフ] は、古いオペレーティング システムや修正プログラムの適用が解除されたオペレーティング システムと互換性がありますが、安全性は低くなります。 この設定は、クライアント オペレーティング システムで拡張保護がサポートされていないことがわかっている場合に使用してください。

    • [許可] に設定すると、 拡張保護 をサポートするオペレーティング システムからの接続に 拡張保護が必要になります。 拡張保護 をサポートしないオペレーティング システムからの接続では 拡張保護が無視されます。 保護されたクライアント オペレーティング システムで実行されている保護されていないクライアント アプリケーションからの接続は拒否されます。 この設定は、 [オフ] よりも安全性が高いですが、最も安全な設定ではありません。 この設定は、 拡張保護 をサポートするオペレーティング システムとサポートしないオペレーティング システムが混在する環境で使用します。

    • [必須] に設定すると、保護されたクライアント オペレーティング システム上の保護されているアプリケーションからの接続のみが許可されます。 この設定は最も安全ですが、拡張保護をサポートしないオペレーティング システムやアプリケーションからの接続では、SQL Server に接続することができません。

  • [承認された NTLM SPN]

    [承認された NTLM SPN] の変数は、サーバーに複数の SPN がある場合に必要です。 クライアントがサーバーへの接続に使用した有効な SPN がサーバーで認識されないと、サービス バインドが失敗します。 この問題を回避するには、 [承認された NTLM SPN] を使用して、サーバーを表す複数の SPN を指定します。 [承認された NTLM SPN] には、一連の SPN をセミコロンで区切って指定します。 たとえば、 MSSQLSvc/ HostName1.Contoso.com および MSSQLSvc/ HostName2.Contoso.comという SPN を許可するには、 [承認された NTLM SPN] ボックスに「 MSSQLSvc/HostName1.Contoso.com;MSSQLSvc/HostName2.Contoso.com 」と入力します。 変数の最大長は 2048 文字です。 [承認された NTLM SPN] は、SQL Server 構成マネージャーの [MSSQLSERVER のプロトコルのプロパティ] ([詳細設定] タブ) にあります。

データベース エンジンでの拡張保護の有効化

拡張保護を使用するには、サーバーとクライアントの両方のオペレーティング システムで 拡張保護がサポートされていて、オペレーティング システムで 拡張保護 が有効になっている必要があります。 オペレーティング システムで 拡張保護 を有効にする方法の詳細については、「 認証に対する保護の強化」を参照してください。

SQL Server では、SQL Server 2008 R2 (10.50.x) 以降の拡張保護がサポートされています。 以前のバージョンの SQL Server については、今後の更新によって一部で拡張保護を使用できるようになります。 サーバー コンピューターで 拡張保護 を有効にした後、次の手順に従って 拡張保護を有効にします。

  1. [スタート] ボタンをクリックし、 [すべてのプログラム][Microsoft SQL Server] の順にポイントして、 [SQL Server 構成マネージャー] をクリックします。

  2. [SQL Server ネットワークの構成] を展開し、[_<_InstanceName*>* のプロトコル] を右クリックして、[プロパティ] をクリックします。

  3. チャネル バインドとサービス バインドの両方について、 [詳細設定] タブで [拡張保護] を適切な値に設定します。

  4. サーバーに複数の SPN がある場合は、 [詳細設定] タブで [承認された NTLM SPN] フィールドを構成します。詳細については、「設定」セクションを参照してください。

  5. チャネル バインドを使用する場合は、 [フラグ] タブで [強制的に暗号化][オン] に設定します。

  6. データベース エンジン サービスを再起動します。

その他の SQL Server コンポーネントの構成

Reporting Services の構成方法の詳細については、「Reporting Services での認証の拡張保護」を参照してください。

IIS を使用して HTTP 接続または HTTPS 接続経由で Analysis Services データにアクセスする場合は、Analysis Services で IIS によって提供される拡張保護を利用できます。 拡張保護を使用するように IIS を構成する方法の詳細については、「 IIS 7.5 における拡張保護の構成」を参照してください。

参照

サーバー ネットワークの構成
クライアント ネットワーク構成
認証の拡張保護の概要
拡張保護付き統合 Windows 認証