Reporting Services で基本認証を構成する方法

Reporting Services は、既定では、ネゴシエート認証および NTLM 認証を指定する要求を受け入れます。基本認証を使用するクライアント アプリケーションやブラウザが配置に含まれる場合は、サポートされる種類の一覧に基本認証を追加する必要があります。また、レポート ビルダを使用する場合は、レポート ビルダのファイルへの匿名アクセスを有効にする必要もあります。

レポート サーバーで基本認証を構成するには、RSReportServer.config ファイルの XML 要素と値を編集する必要があります。既定値を置き換える際に、このトピックの例をコピーして貼り付けることもできます。

基本認証を有効にする前に、セキュリティ インフラストラクチャで基本認証がサポートされていることを確認します。基本認証では、レポート サーバー Web サービスがローカル セキュリティ機関に資格情報を渡します。資格情報でローカル ユーザー アカウントが指定されていた場合は、ユーザーはレポート サーバー コンピュータ上のローカル セキュリティ機関によって認証されて、ローカル リソースに対して有効なセキュリティ トークンを受け取ります。ドメイン ユーザー アカウントの資格情報は、ドメイン コントローラに転送されて認証されます。この場合は、認証が完了すると、ネットワーク リソースに対して有効なチケットが渡されます。

資格情報がネットワークのドメイン コントローラに転送される間に傍受されるリスクを軽減するには、チャネルの暗号化 (Secure Sockets Layer (SSL) など) を使用する必要があります。基本認証のみを使用した場合、ユーザー名はクリア テキストで転送され、パスワードは Base64 エンコード形式で転送されます。チャネルの暗号化を追加すると、パケットが読み取り不可能になります。詳細については、「Secure Socket Layer (SSL) 接続用レポート サーバーの構成」を参照してください。

基本認証を有効にすると、レポートにデータを提供する外部データ ソースへの接続のプロパティをユーザーが設定するときに [Windows 統合セキュリティ] オプションを選択できなくなることに注意してください。このオプションは、データ ソース プロパティ ページでグレー表示されます。

注意注意

次に示す手順は、ネイティブ モードのレポート サーバーを対象としています。レポート サーバーを SharePoint 統合モードで配置する場合は、Windows 統合セキュリティを指定する既定の認証設定を使用する必要があります。レポート サーバーでは、既定の Windows 認証拡張機能の内部機能を使用して、SharePoint 統合モードのレポート サーバーがサポートされます。

レポート サーバーを構成して基本認証を使用するには

  1. テキスト エディタで RSReportServer.config を開きます。

  2. <Authentication> を探します。

  3. 次に示す XML 構造の中でニーズに最も合うものをコピーします。最初の XML 構造には、次のセクションで説明するすべての要素を指定するためのプレースホルダが含まれています。

    <Authentication>
          <AuthenticationTypes>
                 <RSWindowsBasic>
                       <LogonMethod>3</LogonMethod>
                       <Realm></Realm>
                       <DefaultDomain></DefaultDomain>
                 </RSWindowsBasic>
          </AuthenticationTypes>
          <EnableAuthPersistence>true</EnableAuthPersistence>
    </Authentication>
    

    既定値を使用する場合は、次に示す最小限の要素構造をコピーしてください。

          <AuthenticationTypes>
                 <RSWindowsBasic/>
          </AuthenticationTypes>
    
  4. これを <Authentication> の既存のエントリ上に貼り付けます。

    複数の認証の種類を使用する場合は、RSWindowsBasic 要素を追加するだけにして、RSWindowsNegotiate、RSWindowsNTLM、および RSWindowsKerberos の各エントリは削除しないでください。

    Safari ブラウザをサポートする場合は、複数の認証の種類を使用できるようにレポート サーバーを構成することはできません。RSWindowsBasic のみを指定して、その他のエントリを削除する必要があります。

    Custom は他の認証の種類と併用できないので注意してください。

  5. <Realm> または <DefaultDomain> の空の値を、現在の環境で有効な値に置き換えます。

  6. ファイルを保存します。

  7. スケールアウト配置を構成した場合は、配置内の他のレポート サーバーに対して上記の手順を繰り返します。

  8. レポート サーバーを再起動して、現在開いているセッションを消去します。

RSWindowsBasic リファレンス

基本認証を構成するときには次の要素を指定できます。

要素

必須/オプション

有効な値

LogonMethod

必須

値を指定しない場合は 3 が使用されます。

2 = ネットワーク ログオン。プレーン テキスト パスワードを認証する高パフォーマンス サーバー向けです。

3 = クリア テキスト ログオン。各 HTTP 要求と一緒に送信される認証パッケージにログオン資格情報が保持されます。これにより、ネットワーク内の他のサーバーに接続する際に、サーバーがユーザーの権限を借用できます。(既定値)。

注意注意
値 0 (対話型ログオン) と値 1 (バッチ ログオン) は、SQL Server 2008Reporting 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 ファイルにそのアカウントを追加します。

レポート ビルダのプログラム ファイルへの匿名アクセスを有効にする場合は、レポート サーバーが基本認証用に構成されている必要があります。レポート サーバーが基本認証用に構成されていない場合、匿名アクセスを有効にしようとするとエラーが発生します。

レポート ビルダと認証の問題の詳細については、「レポート ビルダ 1.0 およびレポート ビルダ 2.0 へのアクセスを構成する方法」を参照してください。

基本認証用に構成されたレポート サーバーでレポート ビルダへのアクセスを構成するには

  1. RSReportServer.config ファイルの認証設定をチェックして、レポート サーバーが基本認証用に構成されていることを確認します。

  2. ReportBuilder フォルダの下に BIN フォルダを作成します。既定では、このフォルダは \Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\ReportBuilder にあります。

  3. ReportServer\Bin フォルダから ReportBuilder\BIN フォルダに次のアセンブリをコピーします。

    Microsoft.ReportingServices.Diagnostics.dll

    Microsoft.ReportingServices.Interfaces.dll

    ReportingServicesAppDomainManager.dll

    RSHttpRuntime.dll

  4. 必要に応じて、レポート ビルダの要求を匿名アカウントで処理するための 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 を指定して匿名アカウントを指定する必要もあります。指定する資格情報により、要求が発行されるセキュリティ コンテキストが決まります。

  5. Web.config ファイルを ReportBuilder\bin フォルダに保存します。

  6. RSReportServer.config ファイルを開き、Services セクションで IsReportManagerEnabled を見つけて、その下に次の設定を追加します。

    <IsReportBuilderAnonymousAccessEnabled>True</IsReportBuilderAnonymousAccessEnabled>
    
  7. RSReportServer.config ファイルを保存して閉じます。

  8. レポート サーバーを再起動します。