Reporting Services での認証の拡張保護

拡張保護は、最新バージョンの Microsoft Windows オペレーティング システムに追加された一連の拡張機能です。拡張保護により、アプリケーションで資格情報と認証を保護する方法の幅が広がります。この機能自体は、資格情報の転送をはじめとする特定の攻撃を直接防ぐものではありませんが、Reporting Services などのアプリケーションに対し、認証の拡張保護を適用するためのインフラストラクチャを提供します。

拡張保護に含まれる認証の拡張機能を代表するのが、サービス バインドとチャネル バインドです。チャネル バインドでは、チャネル バインド トークン (CBT) を使用して、2 つのエンド ポイント間に確立されたチャネルに問題が生じていないかどうかを確認します。サービス バインドでは、サービス プリンシパル名 (SPN) を使用して認証トークンの目的の送信先を検証します。拡張保護の詳細な背景情報については、「拡張保護付き統合 Windows 認証」を参照してください。

SQL Server 2008 R2 Reporting Services でサポートおよび適用されるのは、オペレーティング システムで有効化し、Reporting Services で構成した拡張保護です。既定では、Reporting Services はネゴシエート認証または NTLM 認証を指定する要求を受け入れるため、オペレーティング システムでの拡張保護のサポートと Reporting Services の拡張保護機能を活用できます。

重要な注意事項重要

既定では、Windows の拡張保護は有効になっていません。Windows で拡張保護を有効にする方法の詳細については、「認証に対する保護の強化」を参照してください。認証を成功させるためには、オペレーティング システムとクライアントの認証スタックが両方とも拡張保護をサポートしている必要があります。旧バージョンのオペレーティング システムを使用している場合は、拡張保護に対応したコンピューターを準備するために、1 つ以上の更新プログラムのインストールが必要になることがあります。拡張保護の最新情報については、こちらを参照してください。

Reporting Services の拡張保護の概要

SQL Server 2008 R2 Reporting Services では、オペレーティング システムで有効になっている拡張保護がサポートされ、適用されます。 オペレーティング システムが拡張保護をサポートしていないか、拡張保護機能がオペレーティング システムで有効化されていない場合、Reporting Services の拡張保護機能を使用した認証は失敗します。 Reporting Services の拡張保護では、SSL 証明書も必要になります。詳細については、「Secure Sockets Layer (SSL) 接続用レポート サーバーの構成」を参照してください。

重要な注意事項重要

既定では、Reporting Services の拡張保護は有効になっていません。この機能を有効にするには、rsreportserver.config 構成ファイルを変更するか、WMI API を使用して構成ファイルを更新します。SQL Server 2008 R2 Reporting Services には、拡張保護の設定を変更または確認するためのユーザー インターフェイスが用意されていません。 詳細については、このトピックの構成設定に関するセクションを参照してください。

拡張保護の設定に加えた変更や設定の不適切な構成が原因で一般的な問題が発生しても、目に見えるエラー メッセージやダイアログ ウィンドウで示されることはありません。拡張保護の構成や互換性に関係する問題が生じると、認証に失敗し、Reporting Services のトレース ログにエラーが記録されます。Reporting Services での拡張保護のトラブルシューティングと検証の詳細については、「拡張保護のトラブルシューティング (Reporting Services)」を参照してください。

重要な注意事項重要

Microsoft SQL クライアントでは、SQL Server 2008 R2 がリリースされるまで、拡張保護はサポートされていませんでした。SQL クライアントは、SQL Server データ ソースおよび Reporting Services カタログ データベースへの接続に使用されます。Reporting Services には、この SQL クライアントの制限によって次のような影響が生じます。

Reporting Services カタログ データベースを実行する SQL Server は拡張保護を有効にできません。つまり、レポート サーバーがカタログ データベースへの接続に失敗し、認証エラーが返されます。

Reporting Services レポート データ ソースとして使用される SQL Server は拡張保護を有効にできません。つまり、レポート サーバーがレポート データ ソースへの接続に失敗し、認証エラーが返されます。回避策としては、(SQL クライアントではなく) ネイティブ プロバイダーを使用するように Reporting Services データ ソースを変更することが考えられます。たとえば、ODBC ドライバー用にデータ ソースを構成しておくと、拡張保護をサポートする SQL Native Client が使用されます。

アップグレード

  • Reporting Services サーバーを SQL Server 2008 R2 にアップグレードすると、既定値の設定された構成設定が rsreportserver.config ファイルに追加されます。既存の設定がある場合は、SQL Server 2008 R2 のインストールにより、その設定が rsreportserver.config ファイルで保持されます。

  • 構成設定が rsreportserver.config 構成ファイルに追加されると、既定の動作として Reporting Services の拡張保護機能が無効になるため、このトピックの説明に従って有効にする必要があります。 詳細については、このトピックの構成設定に関するセクションを参照してください。

  • RSWindowsExtendedProtectionLevel 設定の既定値は Off です。

  • RSWindowsExtendedProtectionScenario 設定の既定値は Proxy です。

  • SQL Server 2008 R2 アップグレード アドバイザーは、オペレーティング システムまたは Reporting Services の現在のインストールで拡張保護のサポートが有効かどうかを確認しません。

Reporting Services の拡張保護でサポートされない機能とシナリオ

Reporting Services の拡張保護機能では、次の機能領域とシナリオがサポートされません。

  • Reporting Services のカスタム セキュリティ拡張機能の作成者は、拡張保護のサポートをカスタム セキュリティ拡張機能に追加する必要があります。

  • Reporting Services のインストールで使用または追加されるコンポーネントを開発したサード パーティ ベンダーは、そのコンポーネントを更新して拡張保護をサポートする必要があります。詳細については、サード パーティ ベンダーに問い合わせてください。

配置のシナリオと推奨事項

以下のシナリオでは、さまざまな配置とトポロジを紹介します。また、それらを Reporting Services の拡張保護でセキュリティ保護するにあたっての推奨構成も示します。

直接的な通信

このシナリオでは、イントラネット環境などでのレポート サーバーへの直接的な接続について説明します。

シナリオ

シナリオを表した図

セキュリティ保護の方法

直接的な SSL 通信を使用します。

レポート サーバーにより、クライアントからレポート サーバーへのチャネル バインドが適用されます。

SSL での拡張保護直接アクセス

1) クライアント アプリケーション

2) レポート サーバー

  • チャネル バインドには SSL チャネルが使用されるため、サービス バインドは不要です。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Direct に設定します。

直接的な HTTP 通信を使用します。レポート サーバーにより、クライアントからレポート サーバーへのサービス バインドが適用されます。

拡張保護と直接アクセス

1) クライアント アプリケーション

2) レポート サーバー

  • SSL チャネルが存在しないため、チャネル バインドは適用できません。

  • サービス バインドの検証は可能ですが、チャネル バインドがないため完全な保護は不可能です。サービス バインド自体で防ぐことができるのは、基本的な脅威のみです。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Any に設定します。

プロキシとネットワーク負荷分散

クライアント アプリケーションは、エクストラネット、インターネット、セキュリティで保護されたイントラネットなどで、SSL を実行して認証のためにサーバーに資格情報を渡すデバイスまたはソフトウェアに接続します。クライアントはプロキシに接続します。つまり、すべてのクライアントがプロキシを使用します。

この状況は、ネットワーク負荷分散 (NLB) デバイスを使用する場合と同じです。

シナリオ

シナリオを表した図

セキュリティ保護の方法

HTTP 通信を使用します。レポート サーバーにより、クライアントからレポート サーバーへのサービス バインドが適用されます。

RS 拡張保護間接アクセス

1) クライアント アプリケーション

2) レポート サーバー

3) プロキシ

  • SSL チャネルが存在しないため、チャネル バインドは適用できません。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Any に設定します。

  • レポート サーバーは、サービス バインドが適切に適用されていることを確認するために、プロキシ サーバーの名前を把握できるように構成する必要があります。

HTTP 通信を使用します。

レポート サーバーによって、クライアントからプロキシへのチャネル バインドと、クライアントからレポート サーバーへのサービス バインドが適用されます。

SSL での RS 拡張保護間接アクセス

1) クライアント アプリケーション

2) レポート サーバー

3) プロキシ

  • プロキシへの SSL チャネルを利用できるため、プロキシへのチャネル バインドを適用できます。

  • サービス バインドも適用できます。

  • レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Proxy に設定します。

セキュリティで保護されたプロキシとの間接的な HTTPS 通信を使用します。レポート サーバーによって、クライアントからプロキシへのチャネル バインドと、クライアントからレポート サーバーへのサービス バインドが適用されます。

拡張保護間接アクセス SSL および HTTPS

1) クライアント アプリケーション

2) レポート サーバー

3) プロキシ

  • プロキシへの SSL チャネルを利用できるため、プロキシへのチャネル バインドを適用できます。

  • サービス バインドも適用できます。

  • レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Proxy に設定します。

ゲートウェイ

このシナリオでは、SSL を実行してユーザーを認証するデバイスまたはソフトウェアに接続するクライアント アプリケーションについて説明します。このデバイスまたはソフトウェアは、ユーザー コンテキストまたは別のユーザー コンテキストを偽装したうえで、レポート サーバーに対して要求を行います。

シナリオ

シナリオを表した図

セキュリティ保護の方法

間接的な HTTP 通信を使用します。

ゲートウェイによって、クライアントからゲートウェイへのチャネル バインドが適用されます。ゲートウェイとレポート サーバーの間にはサービス バインドが確立されます。

SSL での RS 拡張保護間接アクセス

1) クライアント アプリケーション

2) レポート サーバー

3) ゲートウェイ デバイス

  • ゲートウェイがコンテキストを偽装し、新しい NTLM トークンを作成するため、クライアントからレポート サーバーへのチャネル バインドは確立できません。

  • ゲートウェイとレポート サーバーの間で SSL が使用されないため、チャネル バインドは適用できません。

  • サービス バインドを適用できます。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Any に設定します。

  • 管理者は、チャネル バインドを適用するようにゲートウェイ デバイスを構成する必要があります。

セキュリティで保護されたゲートウェイとの間接的な HTTPS 通信を使用します。ゲートウェイによってクライアントからゲートウェイへのチャネル バインドが適用され、レポート サーバーによってゲートウェイからレポート サーバーへのチャネル バインドが適用されます。

拡張保護間接アクセス SSL および HTTPS

1) クライアント アプリケーション

2) レポート サーバー

3) ゲートウェイ デバイス

  • ゲートウェイがコンテキストを偽装し、新しい NTLM トークンを作成するため、クライアントからレポート サーバーへのチャネル バインドは確立できません。

  • ゲートウェイとレポート サーバーの間では SSL が使用されるため、チャネル バインドを適用できます。

  • サービス バインドは不要です。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Direct に設定します。

  • 管理者は、チャネル バインドを適用するようにゲートウェイ デバイスを構成する必要があります。

組み合わせ

このシナリオでは、クライアントがプロキシに接続するエクストラネット環境またはインターネット環境について説明します。これは、クライアントがレポート サーバーに接続するイントラネット環境と組み合わせたシナリオです。

シナリオ

シナリオを表した図

セキュリティ保護の方法

クライアントからレポート サーバー サービスへの間接的なアクセスと直接的なアクセスを行います。クライアントからプロキシ、またはクライアントからレポート サーバーへの接続で SSL を使用しません。

拡張保護の混合環境

1) クライアント アプリケーション

2) レポート サーバー

3) プロキシ

4) クライアント アプリケーション

  • クライアントからレポート サーバーへのサービス バインドを適用できます。

  • レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Any に設定します。

クライアントからレポート サーバーへの間接的なアクセスと直接的なアクセスを行います。その際、クライアントからプロキシまたはレポート サーバーへの SSL 接続を確立します。

SSL と組み合わせた拡張保護

1) クライアント アプリケーション

2) レポート サーバー

3) プロキシ

4) クライアント アプリケーション

  • チャネル バインドを適用できます。

  • レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。

RSWindowsExtendedProtectionLevel を Allow または Require に設定します。

RSWindowsExtendedProtectionScenario を Proxy に設定します。

Reporting Services の拡張保護の構成

rsreportserver.config ファイルには、Reporting Services の拡張保護の動作を制御する構成値が含まれています。

rsreportserver.config ファイルの使用と編集の詳細については、「RSReportServer 構成ファイル」を参照してください。拡張保護の設定は、WMI API を使用して変更および確認することもできます。詳細については、「SetExtendedProtectionSettings メソッド (WMI MSReportServer_ConfigurationSetting)」を参照してください。

構成設定の検証が失敗した場合、RSWindowsNTLM、RSWindowsKerberos、および RSWindowsNegotiate の各認証の種類がレポート サーバーで無効になります。

Reporting Services の拡張保護の構成設定

次の表では、拡張保護の rsreportserver.config に含まれる構成設定について説明します。

設定

説明

RSWindowsExtendedProtectionLevel

拡張保護の適用レベルを指定します。有効な値は、Off、Allow、および Require です。

既定値は Off です。

Off を指定した場合、チャネル バインドまたはサービス バインドの検証は行われません。

Allow を指定した場合、拡張保護はサポートされますが、要求されません。Allow を指定した場合、次の効果があります。

  • 拡張保護がサポートされているオペレーティング システムで実行中のクライアント アプリケーションに対し、拡張保護が適用されます。保護の適用方法は、RsWindowsExtendedProtectionScenario 設定によって決まります。

  • 拡張保護がサポートされていないオペレーティング システムで実行中のアプリケーションに対し、認証が許可されます。

Require を指定した場合、次の効果があります。

  • 拡張保護がサポートされているオペレーティング システムで実行中のクライアント アプリケーションに対し、拡張保護が適用されます。

  • 拡張保護がサポートされていないオペレーティング システムで実行中のアプリケーションに対し、認証は許可されません。

RsWindowsExtendedProtectionScenario

検証する拡張保護の形式を指定します (チャネル バインド、サービス バインド、またはその両方)。有効な値は、Any、Proxy および Direct です。

既定値は Proxy です。

Any を指定した場合、次の効果があります。

  • Windows NTLM 認証、Kerberos 認証、およびネゴシエート認証とチャネル バインドは要求されません。

  • サービス バインドが適用されます。

Proxy を指定した場合、次の効果があります。

  • チャネル バインド トークンが存在する場合は、Windows NTLM 認証、Kerberos 認証、およびネゴシエート認証が行われます。

  • サービス バインドが適用されます。

Direct を指定した場合、次の効果があります。

  • CBT と現在のサービスへの SSL 接続が存在し、SSL 接続の CBT が NTLM、Kerberos、またはネゴシエート トークンの CBT に一致する場合に、それぞれ Windows NTLM 認証、Kerberos 認証、またはネゴシート認証が行われます。

  • サービス バインドは適用されません。

注意
RsWindowsExtendedProtectionLevel を OFF に設定した場合、この設定は無視されます。

rsreportserver.config 構成ファイル内のエントリの例を次に示します。

<Authentication>
         <RSWindowsExtendedProtectionLevel>Allow</RSWindowsExtendedProtectionLevel>
         <RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionLevel>
</Authentication>

サービス バインドと含まれる SPN

サービス バインドでは、サービス プリンシパル名 (SPN) を使用して、認証トークンの目的の送信先を検証します。Reporting Services は、既存の URL 予約情報を使用して、有効と見なされる SPN のリストを作成します。SPN と URL 予約の両方の検証に URL 予約情報を使用することにより、システム管理者による一元管理が可能になります。

有効な SPN のリストが更新されるのは、レポート サーバーを起動したとき、拡張保護の構成設定を変更したとき、またはアプリケーション ドメインをリサイクルしたときです。

有効な SPN のリストは、各アプリケーションに固有です。たとえば、レポート マネージャーとレポート サーバーでは、有効な SPN のリストが別々に計算されます。

アプリケーションに対して計算される有効な SPN のリストは、次の要素によって決定されます。

  • 各 URL 予約。

  • Reporting Services サービス アカウント用にドメイン コントローラーから取得した各 SPN。

  • URL 予約にワイルドカード文字 (* または +) が含まれている場合は、レポート サーバーによってホスト コレクションから各エントリが追加されます。

ホスト コレクションのソース

次の表に、ホスト コレクションのソースとなり得るものを示します。

ソースの種類

説明

ComputerNameDnsDomain

ローカル コンピューターに割り当てられた DNS ドメインの名前。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの DNS ドメイン名が使用されます。

ComputerNameDnsFullyQualified

ローカル コンピューターを一意に識別する完全修飾 DNS 名。この名前は、HostName.DomainName という形式で DNS ホスト名と DNS ドメイン名を組み合わせたものです。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの完全修飾 DNS 名が使用されます。

ComputerNameDnsHostname

ローカル コンピューターの DNS ホスト名。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの DNS ホスト名が使用されます。

ComputerNameNetBIOS

ローカル コンピューターの NetBIOS 名。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの NetBIOS 名が使用されます。

ComputerNamePhysicalDnsDomain

ローカル コンピューターに割り当てられた DNS ドメインの名前。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの名前ではなく、ローカル コンピューターの DNS ドメイン名が使用されます。

ComputerNamePhysicalDnsFullyQualified

コンピューターを一意に識別する完全修飾 DNS 名。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの名前ではなく、ローカル コンピューターの完全修飾 DNS 名が使用されます。

この完全修飾 DNS 名は、HostName.DomainName という形式で DNS ホスト名と DNS ドメイン名を組み合わせたものです。

ComputerNamePhysicalDnsHostname

ローカル コンピューターの DNS ホスト名。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの名前ではなく、ローカル コンピューターの DNS ホスト名が使用されます。

ComputerNamePhysicalNetBIOS

ローカル コンピューターの NetBIOS 名。ローカル コンピューターがクラスター内のノードである場合、クラスターの仮想サーバーの名前ではなく、ローカル コンピューターの NetBIOS 名が使用されます。

SPN が追加されると、トレース ログに次のようなエントリが追加されます。

rshost!rshost!10a8!01/07/2010-19:29:38:: i 情報: SPN ホワイトリストに <ComputerNamePhysicalNetBIOS> - <サーバー名> が追加されました。

rshost!rshost!10a8!01/07/2010-19:29:38:: i 情報: SPN ホワイトリストに <ComputerNamePhysicalDnsHostname> - <サーバー名> が追加されました。

詳細については、「レポート サーバーのサービス プリンシパル名 (SPN) を登録する方法」および「URL の予約と登録について (Reporting Services)」を参照してください。