拡張保護のトラブルシューティング (Reporting Services)

このトピックでは、SQL Server 2008 R2 Reporting Services で拡張保護を使用するときに発生する問題のトラブルシューティングを行います。認証に関する一般的な問題も根本的な原因は拡張保護の構成にある場合が多く、トラブルシューティングにはこのトピックが参考になります。 拡張保護の最新情報については、こちらを参照してください。

Common issues and support scenarios

Error messages

Error states

一般的な問題とサポート シナリオ

現在の拡張保護の設定を確認するにはどうすればよいですか

  • RSWindowsExtendedProtectionLevel と RSWindowsExtendedProtectionScenario の設定は rsreportserver.config ファイルに保存されています。構成設定の詳細については、「Reporting Services での認証の拡張保護」を参照してください。

  • WMI API を使用します。詳細については、「SetExtendedProtectionSettings メソッド (WMI MSReportServer_ConfigurationSetting)」を参照してください。

  • reportserverservice トレース ログ ファイルに、現在の設定を示すエントリが記録されています。このトレース ログ エントリは、レポート サーバー サービスの開始時に書き込まれます。実際のエントリの例を次に示します。

library!DefaultDomain!698!12/29/2009-10:14:49:: i 情報: 構成ファイルの指定に従って RSWindowsExtendedProtectionLevel を 'Off' に初期化しています。

library!DefaultDomain!698!12/29/2009-10:14:49:: i 情報: 構成ファイルの指定に従って RSWindowsExtendedProtectionScenario を 'Proxy' に初期化しています。

認証の失敗の原因が拡張保護にあることはどのようにして判別できますか

レポート サーバーのサービス トレース ログ ファイルには、次のようなエントリが記録されています。

http!rshost!ec0!12/29/2009-11:01:37:: i 情報: 次のエラー状態で認証に失敗しました: 46

エラー状態番号と詳しい情報については、このトピックの最後にある「error states」の一覧を参照してください。

拡張保護のチェックが実行中であるかどうかはどのようにして確認できますか

構成ファイル reportingservicesservice.exe.config を更新して、詳細ログを有効にします。<RStrace> セクションで、次のように設定します。

<add name=”Components” value=”all:4” /> 
  • サービスを再起動します。

  • 詳細ログを有効にすると、認証時にチャネル バインド、サービス バインド、またはその両方の検証が実行されたことを示す行が出力されます。その例を次に示します。

http!rshost!ec0!12/29/2009-11:01:37:: v 詳細: チャネル バインド チェックをプロキシとして実行しています。

http!rshost!7b0!12/29/2009-11:26:23:: v 詳細: サービス バインド チェックを実行しています。

詳細については、「ReportingServicesService 構成ファイル」を参照してください。

レポート サーバー カタログ

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 が使用されます。

SSL を構成せずに拡張保護を有効にするとどうなりますか

rsreportserver.config 構成ファイル内の RSWindowsExtendedProtectionScenario の設定によって動作が異なります。

RSWindowsExtendedProtectionScenario が Direct に設定され、SSL が欠落している場合

RSWindowsExtendedProtectionScenario が Direct に設定されているとき、レポート サーバーまたはレポート マネージャーの SSL URL 予約が存在しない場合、レポート サーバーまたはレポート マネージャーを閲覧しているユーザーには通常、空のレポート マネージャー ウィンドウが表示されます。

これは、SSL が欠落しており、なおかつ、RSWindowsExtendedProtectionScenario が Direct に設定された場合、レポート サーバーによって認証の種類 <RSWindowsNTLM >、<RSWindowsNegotiate >、および <RSWindowsKerberos /> が無効にされるためです。そのため、有効な認証の種類が存在せず、レポート サーバーが要求に応答しなくなります。結果として、空のウィンドウが表示されます。

トレース ログ ファイルには、次のようなエラー メッセージが記録されます。

configmanager!DefaultDomain!938!12/29/2009-11:39:39:: e エラー: ExtendedProtectionScenario が Direct に設定されている場合、レポート サーバー接続に SSL が必要です

configmanager!DefaultDomain!938!12/29/2009-11:39:39:: e エラー: ExtendedProtectionScenario が Direct に設定されている場合、レポート マネージャー接続に SSL が必要です

RSWindowsExtendedProtectionScenario が Proxy に設定され、SSL が欠落している場合

RSWindowsExtendedProtectionScenario が Proxy に設定され、なおかつ SSL がその環境から欠落している場合、レポート サーバーまたはレポート マネージャーを閲覧しているユーザーには通常、資格情報の入力を求めるページが表示されますが、この認証は決して成功しません。SSL がレポート サーバーで構成されている場合、レポート サーバーまたはレポート マネージャーのブラウザーで URL に 's' を追加すると、問題が解決されます。たとえば、RSWindowsExtendedProtectionSscenario が proxy に設定されていることが原因である場合は、「https://<uri>」とすると、認証ダイアログが表示される問題は解決されます。

レポート サーバーのトレース ログ ファイルには、次のようなメッセージが記録されます。

http!rshost!ec0!12/29/2009-11:01:37:: i 情報: チャネル バインド チェックをプロキシとして実行しています

http!rshost!76c!12/29/2009-10:26:12:: i 情報: 次のエラー状態で認証に失敗しました: 45

http!rshost!ec0!12/29/2009-11:01:37:: i 情報: チャネル バインド チェックをプロキシとして実行しています

http!rshost!ec0!12/29/2009-11:01:37:: i 情報: 次のエラー状態で認証に失敗しました: 46

拡張保護を有効にしたところ、Internet Explorer では接続できるのですが、レポート ビルダー、Management Studio、.NET クライアントでは一切接続できません

このシナリオは、Windows 7 および Windows 2008 R2 より前のオペレーティング システムにのみ該当します。以前のバージョンの Windows リリースには、拡張保護機能が付属していませんでした。そのため、古いバージョンのオペレーティング システムが使用されているコンピューターには、.NET framework 用の拡張保護更新プログラムを含め、拡張保護の更新が一部適用されていない可能性があります。

RSWindowsExtendedProtectionLevel が Allow または Require の場合、拡張保護対応のオペレーティング システム上で動作するクライアント アプリケーションが、必ずチャネル バインドを (場合によってはサービス バインドも) 提供する必要があります。この例では、次の点に注意してください。

  • Internet Explorer には、Windows 拡張保護更新プログラムの一部として、拡張保護のための更新がなされました。

  • ただし、.NET Framework には更新プログラムが適用されていません。レポート ビルダーや Management Studio といった .NET クライアントには、.NET Framework が必須です。

この問題を診断するには、拡張保護を無効にして、.NET クライアント アプリケーションが接続できるかどうかを確認します。拡張保護を無効にするには、次の手順に従います。

  1. RSReportServer.config ファイルで RSWindowsExtendedProtectionLevel を Off に設定します。

  2. レポート サーバー サービスを再起動します。

解決するには、.NET Framework の更新プログラムをすべてダウンロードします。

拡張保護が有効な場合、ローカル接続では認証に成功するのに、リモート接続では失敗するのはなぜですか

ループバック認証の実行中、オペレーティング システムは認証メカニズムをスキップし、チャネル バインドを適用しません。

したがって、HTTP 接続を使用しているとき、構成設定が次のようになっている場合、

  • RSWindowsExtendedProtectionLevel = Require

    および

  • RSWindowsExtendedProtectionScenario = Proxy

ローカル接続では成功し、リモート接続では失敗するという結果が生じます。

ローカル接続に使用された URL や、レポート サーバーで構成されている URL 予約によっては、ローカル接続であっても、URL 予約から作成された SPN が有効な SPN リスト内のいずれの SPN にも一致しないために、サービス バインド エラーで失敗する可能性があります。

HTTP 接続を確立しようとしているとき、クライアントとレポート サーバー間に、SSL 接続を確立するように構成されたゲートウェイが存在しない場合は常に、リモート接続が失敗します。

ホスト ヘッダーの使用中に "401 権限がありません" というエラーが発生する

これは、Reporting Services のスケールアウト配置に固有の状況です。レポート マネージャーとレポート サーバーとが同じコンピューター上に存在し、どちらもホスト ヘッダーを使用し、なおかつ Windows 認証を使用している場合に発生します。たとえば、http://<thename>/reports のレポート マネージャーにアクセスを試みた場合、リスト レポートもフォルダーも正しく表示されず、"HTTP 401 (権限がありません)" というエラー メッセージが表示されます。

<thename> で参照されている部分は、コンピューターの物理名ではなく、"ホスト ヘッダー" と見なされます。これは Reporting Services がインストールされているコンピューターの代替名です。ホスト ヘッダーは、Reporting Services が拡張保護の有効な SPN のリストを計算する際の、有効な SPN のソースとしても使用されます。

401 (権限がありません) エラーを防ぐには、Windows レジストリに格納されている BackConnectionHostNames のリストに、<thename> の完全修飾ドメイン名 (FQDN) および NetBIOS 名を追加する必要があります。レジストリに変更を加えた後はコンピューターを再起動してください。

レジストリの変更方法の詳細については、Microsoft サポート技術情報の記事 896861 の「IIS 5.1 または以降のバージョンでホストされ、統合認証を使用する Web サイトを参照するとエラー 401.1 が表示される」の「方法 2: ホスト名を指定する」を参照してください。

エラー メッセージ

次の表は、レポート サーバーのサービス トレース ログ ファイルに記録される可能性のあるメッセージの一覧です。

エラー メッセージ

種類

原因

トラブルシューティング手順

ExtendedProtectionScenario 設定がないか、または無効です

エラー

  • RSWindowsExtendedProtectionScenario が rsreportserver.config ファイルに存在しません。

  • 構成ファイルを既定値に更新します。

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

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

ExtendedProtectionScenario が Direct に設定されている場合、レポート サーバー接続には SSL が必要です

エラー

  • RSWindowsExtendedProtectionScenario が Direct に設定されています。

  • Direct オプションには SSL 接続が必要です。

  • SSL 証明書を取得し、レポート サーバーおよびレポート マネージャーの SSL URL を構成します。SharePoint 統合モードで Reporting Services を使用している場合は、SharePoint サーバーの全体管理で同じ設定が必要となります。

  • SSL 証明書の取得と構成が済むまでは、RSWindowsExtendedProtectionLevel を Off に設定します。

  • 今後も SSL 証明書を構成する予定はないが、何らかの保護が必要な場合は、RSWindowsExtendedProtectionScenario を Any に設定します。

レポート サーバーへの HTTP トラフィックは NTLM、Kerberos、ネゴシエート認証に失敗します

警告

  • RSWindowsExtendedProtectionScenario が Direct に設定されています。

  • Direct には SSL が必要です。

  • HTTP URl 予約が構成されています。この URL 予約での認証は失敗します。

  • レポート サーバーとの通信に HTTPS を使用します。

  • Reporting Services 構成マネージャーを使用して HTTP URL 予約を削除します。

ExtendedProtectionScenario が Direct に設定されている場合、レポート マネージャー接続には SSL が必要です

エラー

  • RSWindowsExtendedProtectionScenario が Direct に設定されています。

  • Direct には SSL が必要です。

  • レポート マネージャーに SSL URl が構成されていません。

  • SSL 証明書を取得し、レポート サーバーおよびレポート マネージャーの SSL URL を構成します。SharePoint 統合モードで Reporting Services を使用している場合は、SharePoint サーバーの全体管理で同じ設定が必要となります。

  • SSL 証明書の取得と構成が済むまでは、RSWindowsExtendedProtectionLevel を Off に設定します。

  • 今後も SSL 証明書を構成する予定はないが、何らかの保護が必要な場合は、RSWindowsExtendedProtectionScenario を Any に設定します。

レポート サーバーへの直接接続は NTLM、Kerberos、ネゴシエート認証に失敗します

警告

  • RSWindowsExtendedProtectionScenario は Proxy ですが、レポート マネージャーの SSL URl が構成されていません。

  • このように構成されている場合、ユーザーは必ず SSL チャネル上にプロキシへの接続を確立する必要があります。接続はプロキシ デバイスによって終了される場合があります。SSL チャネルを使用せずに SSRS サーバーへの直接接続を行った場合は、認証に失敗します。

  • クライアントが HTTPS のみを使用していることを確認します。

  • SSL ターミネーション構成済みのプロキシが構成されていることを確認します。

  • レポート サーバーおよびレポート マネージャーへの接続にプロキシを使用するように、すべてのコンピューター (ローカルとリモート) が構成されていることを確認します。DNS の更新、ブラウザー プロキシの更新、または、ローカル コンピューターのカスタム HOSTS ファイル エントリが必要になる場合があります。

  • レポート サーバーおよびレポート マネージャーの Reporting Services サーバー、または、Reporting Services を SharePoint 統合モードで使用する場合は SharePoint サーバーの全体管理で SSL URL を構成します。 すべてのローカル接続は SSL URL を使用する必要があります。 これは、いずれのプロキシもターミネーションで構成されていないことを前提としています。

  • プロキシの URL を SSL で使用するように、レポート マネージャーの URL を明示的に設定します。

レポート マネージャーへの HTTP トラフィックは NTLM、Kerberos、ネゴシエート認証に失敗する場合があります

警告

  • ExtendedProtectionScenario が Proxy に設定され、レポート マネージャーに対して SSL URl が構成されています。

  • このように構成されている場合、プロキシからレポート マネージャーへの接続に SSL チャネルが使用されていなくても、プロキシ経由でアクセスしているユーザーは認証に成功するものと期待します。

  • レポート マネージャーへのローカル接続には SSL を使用する必要があります。

  • クライアントが HTTPS (SSL チャネル) のみを使用していることを確認します。

  • SSL ターミネーション構成済みのプロキシが構成されていることを確認します。

  • レポート サーバーおよびレポート マネージャーへの接続にプロキシを使用するように、すべてのコンピューター (ローカルとリモート) が構成されていることを確認します。DNS の更新、ブラウザー プロキシの更新、または、ローカル コンピューターのカスタム HOSTS ファイル エントリが必要になる場合があります。

  • Reporting Services サーバー上で、レポート サーバーおよびレポート マネージャーの SSL URL を構成します。すべてのローカル接続は SSL URL を使用する必要があります。これは、いずれのプロキシもターミネーションで構成されていないことを前提としています。

  • プロキシの URL を SSL で使用するように、レポート マネージャーの URL を明示的に設定します。

エラーの状態

このセクションでは、拡張保護に関連してレポート サーバーのサービス トレース ログに記録される可能性のあるエラー コードの名前と説明を記載しています。詳細については、「レポート サーバー サービスのトレース ログ」を参照してください。

コード

エラー状態の名前

説明

44

SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_NOTSUPPORTED

オペレーティング システムはチャネル バインドをサポートしていませんが、レポート サーバーの構成で拡張保護が必須になっています。オペレーティング システムを更新するか、拡張保護を無効にしてください。

45

SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_EMPTYORWRONG

クライアントからのチャネル バインドが、確立されているトランスポート層セキュリティ チャネルと一致しません。サービスが攻撃を受けているか、データ プロバイダーが拡張保護をサポートしていません。後者の場合は、データ プロバイダーのアップグレードが必要です。接続はクローズされました。

46

SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_NULLOREMPTYORWRONG

このクライアントからのチャネル バインドが欠落しているか、確立されているトランスポート層セキュリティ チャネルと一致しません。サービスが攻撃を受けているか、データ プロバイダーまたはクライアント オペレーティング システムが拡張保護をサポートしていません。後者の場合は、データ プロバイダーのアップグレードが必要です。接続はクローズされました。

48

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_UNSUPPORTED

オペレーティング システムはサービス バインドをサポートしていませんが、サーバーの構成で拡張保護が必須になっています。オペレーティング システムを更新するか、拡張保護を無効にしてください。

49

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_QUERYCONTEXTATTRIBUTES

QueryContextAttributes がサービス バインドを取得できませんでした。Windows エラー コードは、エラーの原因を示しています。

51

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_NULL

サーバーの拡張保護レベルが Allowed または Required に設定されていますが、サービス プリンシパル名 (SPN) がクライアントから提供されませんでした。接続するためには、このクライアントが拡張保護をサポートしている必要があります。サービス バインドおよびチャネル バインドに対応したオペレーティング システムのサービス パックをインストールする必要があります。

52

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_EMPTY

サーバーの拡張保護レベルが Allowed または Required に設定されていますが、SPN がクライアントから提供されませんでした。接続するためには、このクライアントが拡張保護をサポートしている必要があります。

53

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_SERVICECLASSMISMATCH

受信した SPN の Service Class 要素が無効です。

54

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_IPADDRESSMISMATCH

受信した SPN の IP Address 要素が無効です。

55

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_HOSTNAMEMISMATCH

受信した SPN の Host 要素が無効です。

56

SNIAUTH_ERRST_SSPIHANDSHAKE_OOM

受信した SPN を検証しているときにメモリの割り当てに失敗しました。

57

SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_WSASTRINGTOADDRESSFAILEDFORIPV6

WSAStringToAddress が、受信した SPN の IP Address 要素をアドレス構造に変換できませんでした。Windows エラー コードは、エラーの原因を示しています。