次の方法で共有


拡張保護を使用してデータベース エンジンに接続する

適用対象:SQL Server

SQL Server では、SQL Server 2008 R2 (10.50.x) 以降の拡張保護がサポートされています。

拡張保護 は、クライアントが接続先のサービスを認識できるようにすることで、認証リレー攻撃を防ぐのに役立ちます。

拡張保護 とは、オペレーティング システムで実装されているネットワーク コンポーネントの機能です。 拡張保護 は、Windows 7 および Windows Server 2008 R2 でサポートされており、 以前の Microsoft オペレーティング システムでは、拡張保護 がサービス パックに含まれています。

SQL Server の接続を 拡張保護を使用して確立することで、安全性を高めることができます。

拡張保護の説明

拡張保護 では、認証リレー攻撃を防止するために、サービス バインドとチャネル バインドが使用されます。 認証リレー攻撃では、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) を独自の 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 の最新ビルドを必ずインストールしておきます。 詳細については、 Microsoft SQL Server の TLS 1.2 サポートを参照してください。

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

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

設定

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

[強制的に暗号化]

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

拡張保護

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

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

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

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

承認された NTLM SPN

複数の SPN がサーバーを認識している場合は、 Accepted NTLM SPNs 変数が必要です。 クライアントがサーバーが認識していない有効な SPN を使用してサーバーに接続しようとすると、サービス バインドは失敗します。 この問題を回避するために、ユーザーは Accepted 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 のプロトコルのプロパティ] ([詳細設定] タブ) にあります。

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

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

拡張保護NTLMv2 は、サポートされているすべてのバージョンの Windows で既定で有効になっていますが、SQL Server 接続では拡張保護は既定では有効になっていません。 ユーザーは 、SQL Server 構成マネージャーで手動で有効にする必要があります。

SQL Server 接続の 拡張保護 を有効にするには、管理者は SQL Server 構成マネージャーで設定を構成する必要があります。 これには、さまざまな種類の認証リレー攻撃を軽減するためのサービス バインドとチャネル バインドのオプションが含まれます。 詳細な手順については、 拡張保護の構成に関する SQL Server のドキュメントを参照してください。

サーバー コンピューターで 拡張保護 を有効にした後、次の手順に従って 拡張保護を有効にします。

  1. [スタート] メニューの [すべてのプログラム] を選択し、Microsoft SQL Server をポイントし、[SQL Server 構成マネージャー] を選択します。

  2. [SQL Server ネットワーク構成] を展開し、[__InstanceName*<* >] を右クリックし、[プロパティ] を選択します。

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

  4. 必要に応じて、複数の SPN がサーバーを認識している場合は、[詳細設定] タブで、「設定」セクションの説明に従って [Accepted NTLM SPN ] フィールドを構成します。

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

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

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

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

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