Reporting Services で基本認証を構成する方法
Reporting Services は、既定では、ネゴシエート認証および NTLM 認証を指定する要求を受け入れます。基本認証を使用するクライアント アプリケーションやブラウザーが配置に含まれる場合は、サポートされる種類の一覧に基本認証を追加する必要があります。また、レポート ビルダーを使用する場合は、レポート ビルダーのファイルへの匿名アクセスを有効にする必要もあります。
レポート サーバーで基本認証を構成するには、RSReportServer.config ファイルの XML 要素と値を編集する必要があります。既定値を置き換える際に、このトピックの例をコピーして貼り付けることもできます。
基本認証を有効にする前に、セキュリティ インフラストラクチャで基本認証がサポートされていることを確認します。基本認証では、レポート サーバー Web サービスがローカル セキュリティ機関に資格情報を渡します。資格情報でローカル ユーザー アカウントが指定されていた場合は、ユーザーはレポート サーバー コンピューター上のローカル セキュリティ機関によって認証されて、ローカル リソースに対して有効なセキュリティ トークンを受け取ります。ドメイン ユーザー アカウントの資格情報は、ドメイン コントローラーに転送されて認証されます。この場合は、認証が完了すると、ネットワーク リソースに対して有効なチケットが渡されます。
資格情報がネットワークのドメイン コントローラーに転送される間に傍受されるリスクを軽減するには、チャネルの暗号化 (Secure Sockets Layer (SSL) など) を使用する必要があります。基本認証のみを使用した場合、ユーザー名はクリア テキストで転送され、パスワードは Base64 エンコード形式で転送されます。チャネルの暗号化を追加すると、パケットが読み取り不可能になります。詳細については、「Secure Sockets Layer (SSL) 接続用レポート サーバーの構成」を参照してください。
基本認証を有効にすると、レポートにデータを提供する外部データ ソースへの接続のプロパティをユーザーが設定するときに [Windows 統合セキュリティ] オプションを選択できなくなることに注意してください。このオプションは、データ ソース プロパティ ページでグレー表示されます。
注 |
---|
次に示す手順は、ネイティブ モードのレポート サーバーを対象としています。レポート サーバーを SharePoint 統合モードで配置する場合は、Windows 統合セキュリティを指定する既定の認証設定を使用する必要があります。レポート サーバーでは、既定の Windows 認証拡張機能の内部機能を使用して、SharePoint 統合モードのレポート サーバーがサポートされます。 |
レポート サーバーを構成して基本認証を使用するには
テキスト エディターで RSReportServer.config を開きます。
<Authentication> を探します。
次に示す XML 構造の中でニーズに最も合うものをコピーします。最初の XML 構造には、次のセクションで説明するすべての要素を指定するためのプレースホルダーが含まれています。
<Authentication> <AuthenticationTypes> <RSWindowsBasic> <LogonMethod>3</LogonMethod> <Realm></Realm> <DefaultDomain></DefaultDomain> </RSWindowsBasic> </AuthenticationTypes> <EnableAuthPersistence>true</EnableAuthPersistence> </Authentication>
既定値を使用する場合は、次に示す最小限の要素構造をコピーしてください。
<AuthenticationTypes> <RSWindowsBasic/> </AuthenticationTypes>
これを <Authentication> の既存のエントリ上に貼り付けます。
複数の認証の種類を使用する場合は、RSWindowsBasic 要素を追加するだけにして、RSWindowsNegotiate、RSWindowsNTLM、および RSWindowsKerberos の各エントリは削除しないでください。
Safari ブラウザーをサポートする場合は、複数の認証の種類を使用できるようにレポート サーバーを構成することはできません。RSWindowsBasic のみを指定して、その他のエントリを削除する必要があります。
Custom は他の認証の種類と併用できないので注意してください。
<Realm> または <DefaultDomain> の空の値を、現在の環境で有効な値に置き換えます。
ファイルを保存します。
スケールアウト配置を構成した場合は、配置内の他のレポート サーバーに対して上記の手順を繰り返します。
レポート サーバーを再起動して、現在開いているセッションを消去します。
RSWindowsBasic リファレンス
基本認証を構成するときには次の要素を指定できます。
要素 |
必須/オプション |
有効な値 |
---|---|---|
LogonMethod |
必須 値を指定しない場合は 3 が使用されます。 |
2 = ネットワーク ログオン。プレーン テキスト パスワードを認証する高パフォーマンス サーバー向けです。 3 = クリア テキスト ログオン。各 HTTP 要求と一緒に送信される認証パッケージにログオン資格情報が保持されます。これにより、ネットワーク内の他のサーバーに接続する際に、サーバーがユーザーの権限を借用できます。(既定値)。
注
値 0 (対話型ログオン) と 値 1 (バッチ ログオン) は、SQL Server 2008 Reporting Services ではサポートされません。
|
Realm |
オプション |
組織内の保護されたリソースへのアクセスを制御するための承認機能や認証機能を含んだリソース パーティションを指定します。 |
DefaultDomain |
オプション |
サーバーがユーザーを認証する際のドメインを指定します。この値はオプションです。ただし、省略した場合、レポート サーバーでは、コンピューター名がドメインとして使用されます。コンピューターがドメインのメンバーになっている場合は、そのドメインが既定のドメインです。レポート サーバーをドメイン コントローラーにインストールした場合、そのコンピューターによって制御されるドメインを指定します。 |
レポート ビルダー アプリケーション ファイルへの匿名アクセスの有効化
レポート ビルダーは、ClickOnce テクノロジを使用して、アプリケーション ファイルをクライアント コンピューターにダウンロードおよびインストールします。クライアント コンピューターでレポート ビルダーを起動すると、ClickOnce アプリケーション ランチャーがレポート サーバー コンピューター上の追加のアプリケーション ファイルを要求します。レポート サーバーが基本認証用に構成されている場合、ClickOnce アプリケーション ランチャーは基本認証をサポートしていないため、認証チェックが失敗します。
この問題を回避するには、レポート ビルダーのプログラム ファイルへの匿名アクセスを構成します。これにより、ClickOnce がファイルを取得するときに認証チェックを省略できるようになります。匿名アクセスを有効にするには、次の操作を行います。
レポート サーバーが基本認証用に構成されていることを確認します。
ReportBuilder フォルダーの下に bin フォルダーを作成し、そのフォルダーに 4 つのアセンブリをコピーします。
RSReportServer.config に IsReportBuilderAnonymousAccessEnabled 要素を追加して、True に設定します。ファイルを保存すると、レポート ビルダーへの新しいエンドポイントがレポート サーバーによって作成されます。このエンドポイントは、プログラム ファイルにアクセスするために内部で使用されるものであり、コードで使用できるプログラマティック インターフェイスはありません。別のエンドポイントを使用することにより、レポート サーバー サービス プロセス境界内の独自のアプリケーション ドメインでレポート ビルダーを実行することが可能になります。
必要に応じて最小特権のアカウントを指定して、レポート サーバーとは別のセキュリティ コンテキストで要求を処理することもできます。このアカウントは、レポート サーバー上のレポート ビルダー ファイルにアクセスするための匿名アカウントになります。このアカウントによって ASP.NET ワーカー プロセスのスレッドの ID が設定され、そのスレッドで実行される要求は認証チェックなしでレポート サーバーに渡されます。このアカウントは、インターネット インフォメーション サービス (IIS) の IUSR_<machine> アカウントに相当します。IUSR_<machine> アカウントは、匿名アクセスと権限借用が有効になっている場合に、ASP.NET ワーカー プロセスのセキュリティ コンテキストを設定するために使用されます。アカウントを指定するには、レポート ビルダーの Web.config ファイルにそのアカウントを追加します。
レポート ビルダーのプログラム ファイルへの匿名アクセスを有効にする場合は、レポート サーバーが基本認証用に構成されている必要があります。レポート サーバーが基本認証用に構成されていない場合、匿名アクセスを有効にしようとするとエラーが発生します。
レポート ビルダーと認証の問題の詳細については、「レポート ビルダーへのアクセスを構成する方法」を参照してください。
基本認証用に構成されたレポート サーバーでレポート ビルダーへのアクセスを構成するには
RSReportServer.config ファイルの認証設定をチェックして、レポート サーバーが基本認証用に構成されていることを確認します。
ReportBuilder フォルダーの下に BIN フォルダーを作成します。既定では、このフォルダーは \Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\ReportBuilder にあります。
ReportServer\Bin フォルダーから ReportBuilder\BIN フォルダーに次のアセンブリをコピーします。
Microsoft.ReportingServices.Diagnostics.dll
Microsoft.ReportingServices.Interfaces.dll
ReportingServicesAppDomainManager.dll
RSHttpRuntime.dll
必要に応じて、レポート ビルダーの要求を匿名アカウントで処理するための Web.config ファイルを作成します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <authentication mode="Windows" /> <identity impersonate="true " userName="username" password="password"/> </system.web> </configuration>
Web.config ファイルを含める場合は、認証モードを Windows に設定する必要があります。
Identity impersonate は、True に設定することも、False に設定することもできます。
ASP.NET がセキュリティ トークンを読み取らないようにする場合は、False に設定します。この場合、要求はレポート サーバー サービスのセキュリティ コンテキストで実行されます。
ASP.NET がホスト層からセキュリティ トークンを読み取るようにする場合は、True に設定します。True に設定した場合は、userName と password を指定して匿名アカウントを指定する必要もあります。指定する資格情報により、要求が発行されるセキュリティ コンテキストが決まります。
Web.config ファイルを ReportBuilder\bin フォルダーに保存します。
RSReportServer.config ファイルを開き、Services セクションで IsReportManagerEnabled を見つけて、その下に次の設定を追加します。
<IsReportBuilderAnonymousAccessEnabled>True</IsReportBuilderAnonymousAccessEnabled>
RSReportServer.config ファイルを保存して閉じます。
レポート サーバーを再起動します。