デフォルトでは、Reporting ServicesはNegotiateまたはNTLM認証を指定するリクエストを受け付けます。 もしあなたのデプロイメントにこれらのセキュリティプロバイダーを使用するクライアントアプリケーションやブラウザが含まれている場合、他の設定なしでデフォルト値を使用できます。 例えば、Windowsの統合セキュリティで別のセキュリティプロバイダーを使いたい場合や、デフォルト値を修正して元の設定を復元したい場合などです。 この記事の情報をもとにレポートサーバーの認証設定を指定できます。
Windows統合セキュリティを使用するには、レポートサーバーへのアクセスを必要とする各ユーザーは有効なWindowsローカルまたはドメインユーザーアカウントを持っている必要があります。 または、Windowsのローカルまたはドメイングループアカウントのメンバーでなければなりません。 信頼できるドメインであれば、他のドメインのアカウントも含めることができます。 アカウントはレポートサーバーのコンピュータにアクセスでき、特定のレポートサーバー操作にアクセスするために役割を割り当てる必要があります。
以下の要件も満たしなければなりません。
RSReportServer.config ファイルは
AuthenticationTypeRSWindowsNegotiate、RSWindowsKerberos、またはRSWindowsNTLMに設定されている必要があります。 デフォルトでは、レポートサーバーサービスアカウントがNetworkServiceまたはLocalSystemであれば、RSReportServer.config ファイルにはRSWindowsNegotiate設定が含まれています。そうでなければRSWindowsNTLM設定が使用されます。 Kerberos認証のみを使うアプリケーションがあればRSWindowsKerberosを追加できます。Important
RSWindowsNegotiateを使うと、Report Serverサービスをドメインユーザーアカウントで実行するように設定し、そのアカウントのService Principal Name(SPN)を登録しなかった場合、Kerberos認証エラーが発生します。 詳細については、このトピックの 「レポートサーバーに接続時のKerberos認証エラーの解決 」を参照してください。ASP.NETはWindows認証用に設定する必要があります。 デフォルトでは、レポートサーバーWebサービスの Web.config ファイルには
<authentication mode="Windows">設定が含まれています。<authentication mode="Forms">に変えると、Reporting ServicesのWindows認証が失敗します。レポートサーバーのWebサービスの Web.config ファイルには
<identity impersonate= "true" />が必要です。クライアントアプリケーションまたはブラウザはWindows統合セキュリティをサポートしなければなりません。
ウェブポータルは追加の設定を必要としません。
レポートサーバーの認証設定を変更するには、RSReportServer.config ファイルのXML要素と値を編集してください。 この記事の例をコピー&ペーストして、特定の組み合わせを実装できます。
デフォルト設定は、すべてのクライアントとサーバーのコンピュータが同じドメイン内か信頼できるドメインにある場合に最も効果的です。 また、レポートサーバーは企業のファイアウォールの背後でイントラネットアクセスのために展開されています。 信頼ドメインと単一ドメインはWindows認証情報を渡すための必須条件です。 サーバーでKerberosバージョン5プロトコルを有効にすると、認証情報を複数回渡すことができます。 それ以外の場合、資格は一度だけ合格でき、その後失効します。 複数のコンピュータ接続に対する認証情報の設定についての詳細は、「 レポートデータソースの認証情報および接続情報を指定する」をご覧ください。
次に示す手順は、ネイティブ モードのレポート サーバーを対象としています。 レポート サーバーを SharePoint 統合モードで配置する場合は、Windows 統合セキュリティを指定する既定の認証設定を使用する必要があります。 レポートサーバーは、デフォルトのWindows認証拡張機能の内部機能を使い、SharePoint統合モードでレポートサーバーをサポートしています。
認証のための拡張保護
SQL Server 2008 R2 (10.50.x) 以降では、認証の拡張保護がサポートされています。 SQL Server 機能により、認証の拡張保護に対するチャネル バインドとサービス バインドの使用がサポートされます。 Reporting Servicesの機能は、拡張保護(Extended Protection)をサポートするオペレーティングシステムで使用する必要があります。 RSReportServer.config ファイルの特定の設定で拡張保護のReporting Services設定を決めることができます。 ファイルを編集するか、WMI APIを使って更新できます。 詳細は「Reporting Servicesによる認証のための拡張保護」を参照してください。
レポートサーバーをWindows統合セキュリティを使用するように設定してください
テキストエディタで RSReportServer.config を開きます。
<Authentication>を探します。ご自身のニーズに最も合ったXML構造のいずれかをコピーしてください。
RSWindowsNegotiate、RSWindowsNTLM、RSWindowsKerberosはどの順番でも指定できます。 個別のリクエストではなく、接続を認証したい場合は認証の永続性を有効にしてください。 認証永続化の下では、認証を必要とするすべてのリクエストが接続中に許可されます。最初のXML構造は、レポートサーバーサービスアカウントがNetworkServiceまたはLocalSystemである場合のデフォルト構成です。
<Authentication> <AuthenticationTypes> <RSWindowsNegotiate /> </AuthenticationTypes> <EnableAuthPersistence>true</EnableAuthPersistence> </Authentication>2つ目のXML構造は、レポートサーバーサービスアカウントがNetworkServiceやLocalSystemでない場合のデフォルト構成です。
<Authentication> <AuthenticationTypes> <RSWindowsNTLM /> </AuthenticationTypes> <EnableAuthPersistence>true</EnableAuthPersistence> </Authentication>3つ目のXML構造は、Windows統合セキュリティで使用されるすべてのセキュリティパッケージを指定しています。
<AuthenticationTypes> <RSWindowsNegotiate /> <RSWindowsKerberos /> <RSWindowsNTLM /> </AuthenticationTypes>4つ目のXML構造は、Kerberosをサポートしない展開やKerberos認証エラーを回避するためのNTLMのみを指定しています。
<AuthenticationTypes> <RSWindowsNTLM /> </AuthenticationTypes><Authentication>の既存のエントリに上書きするように貼り付けます。RSWindowsタイプではCustomは使えません。必要に応じて設定を変更して、拡張保護を行ってください。 拡張保護はデフォルトで無効化されています。 これらのエントリーがなければ、現在のコンピュータは拡張保護をサポートするReporting Servicesのバージョンを実行していない可能性があります。 詳細については、「Reporting Servicesによる認証の拡張保護」をご覧ください。
<RSWindowsExtendedProtectionLevel>Allow</RSWindowsExtendedProtectionLevel> <RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>ファイルを保存します。
スケールアウト展開を設定した場合は、同じ手順を他のレポートサーバーでも繰り返してください。
現在開いているセッションをクリアするためにレポートサーバーを再起動してください。
レポートサーバーに接続時のKerberos認証エラーを解決する
NegotiateやKerberos認証で設定されているレポートサーバーでは、Kerberos認証エラーが発生するとクライアント接続が失敗します。 Kerberos認証エラーは以下の時に発生することが知られています:
レポートサーバーサービスはWindowsドメインユーザーアカウントとして動作しており、アカウントのサービスプリンシパル名(SPN)を登録していません。
レポートサーバーは
RSWindowsNegotiate設定で設定されています。ブラウザはレポートサーバーに送るリクエストの認証ヘッダーでNTLMよりKerberosを選択します。
Kerberosのログ機能を有効にしていればエラーを検出できます。 エラーのもう一つの症状は、認証情報の入力を何度も求められた後、空のブラウザウィンドウが表示されることです。
設定ファイルから <RSWindowsNegotiate> を削除し、再度接続を試みることで、Kerberos認証エラーが発生しているかどうかを確認できます。
問題を確認した後は、以下の方法で対処できます。
ドメインユーザーアカウントでレポートサーバーサービスのSPNを登録します。 詳細については、「レポート サーバーのサービス プリンシパル名 (SPN) の登録」を参照してください。
サービスアカウントをNetwork Serviceのような組み込みアカウントで動作するように変更してください。 組み込みアカウントはHTTP SPNをホストSPNにマッピングし、ホストSPNはコンピュータをネットワークに接続した際に定義されます。 詳細については、サービス アカウントの構成 (レポート サーバーの構成マネージャー) に関する記事を参照してください。
NTLMを使いましょう。 NTLMは一般的にKerberos認証が失敗した場合に機能します。 NTLMを使用するには、RSReportServer.config ファイルから
RSWindowsNegotiateを削除し、RSWindowsNTLMのみが指定されているか確認してください。 この方法を選ぶ場合、SPNを定義しなくても、レポートサーバーサービスのドメインユーザーアカウントを使い続けることができます。
まとめると、以下の例のようなコマンドを実行するべきです。 値も適切に置き換えてください。
setspn -S HTTP/<SSRS Server FDQN> <SSRS Service Account>
setspn -S HTTP/<host header for Report server web site> <SSRS Service Account>
setspn -S HTTP/<SharePoint Server FDQN> <SharePoint Application Pool Account>
setspn -S HTTP/<host header for SharePoint site> <SharePoint Application Pool Account>
setspn -S HTTP/Dummy <Claims to Windows Taken Service Account>
ログ情報
Kerberos関連の問題を解決できるログ情報源はいくつかあります。
User-Account-Control 属性
Reporting ServicesサービスアカウントにActive Directoryで設定された十分な属性があるかどうかを確認しましょう。 Reporting Servicesのサービストレースログファイルを確認し、UserAccountControl属性のログ値を確認してください。 記録される値は小数点形で記されています。 小数点の数値を16進数に変換し、その値をMSDNのUser-Account-Control 属性の記事で見つける必要があります。
Reporting Servicesのサービストレースログエントリは、以下の例に似ています。
appdomainmanager!DefaultDomain!8f8!01/14/2010-14:42:28:: i INFO: The UserAccountControl value for the service account is 59033610進数の値を16進数に変換する一つの方法が、私たちにとってMicrosoft Windows計算機です。 Windows計算機は、
DecオプションとHexオプションを表示する複数のモードをサポートしています。Decオプションを選択し、ログファイルで見つけた小数点の値を貼り付けるか入力し、その後「Hex」オプションを選択してください。次に、サービスアカウントの属性を導き出すために 「User-Account-Control Attribute 」という記事を参照してください。
Reporting ServicesサービスアカウントのためにActive Directoryで設定されたSPN
Reporting ServicesのサービストレースログファイルにSPNをログアップするには、一時的にReporting Services Extended Protection機能を有効にできます。
以下を設定することで設定ファイル rsreportserver.config を変更してください:
<RSWindowsExtendedProtectionLevel>Allow</RSWindowsExtendedProtectionLevel> <RSWindowsExtendedProtectionScenario>Any</RSWindowsExtendedProtectionScenario>Reporting Services サービスを再開します。
拡張保護を使い続けたくない場合は、設定値をデフォルトに戻し、Reporting Services Serviceアカウントを再起動してください。
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
詳細は「Reporting Servicesによる認証のための拡張保護」を参照してください。
ブラウザーがネゴシエート Kerberos とネゴシエート NTLM のどちらを選択するか
Internet Explorerを使ってレポートサーバーに接続すると、認証ヘッダーにNegotiated KerberosかNTLMのいずれかを指定します。 NTLMは以下の場合にケルベロスの代わりに使用されます:
リクエストはローカルのレポートサーバーに送信されます。
リクエストはホストヘッダーやサーバー名ではなく、レポートサーバーコンピュータのIPアドレスに送信されます。
ファイアウォールソフトウェアはKerberos認証に使われるポートをブロックします。
特定のサーバーのオペレーティングシステムはKerberosを有効にしていません。
このドメインには、Kerberos認証機能をサポートしていない古いバージョンのWindowsクライアントおよびサーバーOSが含まれています。
さらに、Internet ExplorerはURL、LAN、プロキシ設定の設定によってはNegotiated KerberosかNTLMのいずれかを選択することがあります。
[レポート サーバー URL]
URLに完全限定ドメイン名が含まれている場合、Internet ExplorerはNTLMを選択します。 URLにlocalhostが指定されている場合、Internet ExplorerはNTLMを選択します。 URLにコンピュータのネットワーク名が指定されている場合、Internet Explorerは「Negotiate」を選択し、これはReport ServerサービスアカウントにSPNが存在するかどうかで成功または失敗します。
クライアントのLANおよびプロキシ設定
Internet Explorerで設定したLANやプロキシ設定によって、NTLMがKerberosより選ばれるかどうかが判別されます。 しかし、組織によってLANやプロキシの設定が異なるため、Kerberos認証エラーの原因となる正確な設定を特定することは不可能です。 例えば、組織はプロキシ設定を強制し、イントラネットのURLからインターネット接続を通じて解決される完全限定ドメイン名のURLに変換することがあります。 異なる種類のURLに対して異なる認証プロバイダーを使う場合、失敗すると予想していた接続が成功することがあります。
認証の失敗が原因だと思う接続エラーに遭遇するかもしれません。 もしそうなら、LANとプロキシの設定をいろいろ試して問題を特定してみてください。 Internet Explorerでは、LANおよびプロキシの設定は「ローカルエリアネットワーク(LAN)設定」ダイアログボックスにあり、インターネットオプションの「接続」タブでLAN設定を選択して開きます。
ケルベロスおよびレポートサーバーに関する追加情報
- Kerberosおよびレポートサーバーに関する詳細は、「SharePoint、Reporting Services、PerformancePoint Monitoring Server with Kerberosを用いたビジネスインテリジェンスソリューションの展開」をご覧ください。