Reporting Services での認証の拡張保護

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

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

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

重要

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

Reporting Services の拡張保護の概要

SSRS では、オペレーティング システムで有効になっている拡張保護がサポートされ、適用されます。 オペレーティング システムが拡張保護をサポートしていないか、拡張保護機能がオペレーティング システムで有効化されていない場合、Reporting Services の拡張保護機能を使用した認証は失敗します。 Reporting Services の拡張保護では、TLS/SSL 証明書も必要になります。 詳細については、「ネイティブ モードのレポート サーバーでの TLS 接続の構成」をご覧ください

重要

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

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

重要

一部のデータ アクセス テクノロジでは、拡張保護がサポートされないことがあります。 データ アクセス テクノロジは、SQL Server データ ソースおよび Reporting Services カタログ データベースへの接続に使用されます。 データ アクセス テクノロジで拡張保護がサポートされない場合、Reporting Services に次のような影響が生じます。

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

データ アクセス テクノロジのドキュメントには、拡張保護のサポートに関する情報が記載されています。

アップグレード

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

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

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

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

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

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

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

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

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

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

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

直接

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

シナリオ シナリオを表した図 セキュリティ保護の方法
直接的な TLS 通信を使用します。

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

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

2) レポート サーバー
RSWindowsExtendedProtectionLevelAllow または Require に設定します。

RSWindowsExtendedProtectionScenarioDirect に設定します。



-チャネル バインドには TLS チャネルが使用されるため、サービス バインドは不要です。
直接的な HTTP 通信を使用します。 レポート サーバーにより、クライアントからレポート サーバーへのサービス バインドが適用されます。 Diagram that shows HTTP communication.

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

2) レポート サーバー
RSWindowsExtendedProtectionLevelAllow または Require に設定します。

RSWindowsExtendedProtectionScenarioAny に設定します。



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

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

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

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

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

シナリオ シナリオを表した図 セキュリティ保護の方法
HTTP 通信を使用します。 レポート サーバーにより、クライアントからレポート サーバーへのサービス バインドが適用されます。 Diagram that shows indirect HTTP communication.

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

2) レポート サーバー

3) プロキシ
RSWindowsExtendedProtectionLevelAllow または Require に設定します。

RSWindowsExtendedProtectionScenarioAny に設定します。



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

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

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

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

2) レポート サーバー

3) プロキシ
以下のとおり設定します
RSWindowsExtendedProtectionLevelAllow または Require に。

RSWindowsExtendedProtectionScenarioProxy に設定します。



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

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

-レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。
セキュリティで保護されたプロキシとの間接的な HTTPS 通信を使用します。 レポート サーバーによって、クライアントからプロキシへのチャネル バインドと、クライアントからレポート サーバーへのサービス バインドが適用されます。 Diagram that shows indirect HTTPS communication with a secure proxy.

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

2) レポート サーバー

3) プロキシ
以下のとおり設定します
RSWindowsExtendedProtectionLevelAllow または Require に。

RSWindowsExtendedProtectionScenarioProxy に設定します。



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

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

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

Gateway

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

シナリオ シナリオを表した図 セキュリティ保護の方法
間接的な HTTP 通信を使用します。

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

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

2) レポート サーバー

3) ゲートウェイ デバイス
RSWindowsExtendedProtectionLevelAllow または Require に設定します。

RSWindowsExtendedProtectionScenarioAny に設定します。



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

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

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

- 管理者は、チャネル バインドを適用するようにゲートウェイ デバイスを構成する必要があります。
セキュリティで保護されたゲートウェイとの間接的な HTTPS 通信を使用します。 ゲートウェイによってクライアントからゲートウェイへのチャネル バインドが適用され、レポート サーバーによってゲートウェイからレポート サーバーへのチャネル バインドが適用されます。 Diagram that shows indirect HTTPS communication with a Secure Gateway.

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

2) レポート サーバー

3) ゲートウェイ デバイス
RSWindowsExtendedProtectionLevelAllow または Require に設定します。

RSWindowsExtendedProtectionScenarioDirect に設定します。



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

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

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

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

組み合わせ

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

シナリオ シナリオを表した図 セキュリティ保護の方法
クライアントからレポート サーバー サービスへの間接的なアクセスと直接的なアクセスを行います。クライアントからプロキシ、またはクライアントからレポート サーバーへの接続で TLS を使用しません。 1) クライアント アプリケーション

2) レポート サーバー

3) プロキシ

4) クライアント アプリケーション
RSWindowsExtendedProtectionLevelAllow または Require に設定します。

RSWindowsExtendedProtectionScenarioAny に設定します。



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

-レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。
クライアントからレポート サーバーへの間接的なアクセスと直接的なアクセスを行います。その際、クライアントからプロキシまたはレポート サーバーへの TLS 接続を確立します。 Diagram that shows indirect and direct access from client to report server.

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

2) レポート サーバー

3) プロキシ

4) クライアント アプリケーション
RSWindowsExtendedProtectionLevelAllow または Require に設定します。

RSWindowsExtendedProtectionScenarioProxy に設定します。



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

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

Reporting Services の拡張保護の構成

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

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

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

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

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

設定 説明
RSWindowsExtendedProtectionLevel 拡張保護の適用レベルを指定します。 有効な値は次のとおりです。

Off: 既定値。 チャネル バインドまたはサービス バインドの検証は行われません。

Allow は拡張保護をサポートしますが、要求しません。 以下を指定します。

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

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

Require は以下を指定します。

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

- 拡張保護がサポートされていないオペレーティング システムで実行中のアプリケーションに対し、認証は許可 されません
RsWindowsExtendedProtectionScenario 検証する拡張保護の形式を指定します。チャネル バインド、サービス バインド、またはその両方を指定します。 有効な値は次のとおりです。

Proxy: 既定値。 以下を指定します。

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

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

Any は以下を指定します。

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

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

Direct は以下を指定します。

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

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



注: RsWindowsExtendedProtectionScenarioRsWindowsExtendedProtectionLevel に設定されている場合、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) の登録」および「URL の予約と登録について (レポート サーバーの構成マネージャー)」を参照してください。

拡張保護を使用したデータベース エンジンへの接続
認証の拡張保護の概要
統合 Windows 認証と拡張保護
マイクロソフト セキュリティ アドバイザリ:認証の拡張保護
レポート サーバー サービスのトレース ログ
RsReportServer.config 構成ファイル
SetExtendedProtectionSettings メソッド (WMI MSReportServer_ConfigurationSetting)

その他の質問 Reporting Services のフォーラムに質問してみてください