Reporting Services での認証の拡張保護
拡張保護は、最新バージョンの Microsoft Windows オペレーティング システムに追加された一連の拡張機能です。 拡張保護により、アプリケーションで資格情報と認証を保護する方法の幅が広がります。 この機能自体は、資格情報の転送をはじめとする特定の攻撃を直接防ぐものではありませんが、Reporting Services などのアプリケーションに対し、認証の拡張保護を適用するためのインフラストラクチャを提供します。
拡張保護に含まれる認証の拡張機能を代表するのが、サービス バインドとチャネル バインドです。 チャネル バインドでは、チャネル バインド トークン (CBT) を使用して、2 つのエンド ポイント間に確立されたチャネルに問題が生じていないかどうかを確認します。 サービス バインドでは、サービス プリンシパル名 (SPN) を使用して認証トークンの目的の送信先を検証します。 拡張保護の詳細な背景情報については、「 拡張保護付き統合 Windows 認証」を参照してください。
SQL Server 2019 (15.x) Reporting Servicesでは、オペレーティング システムで有効にされ、Reporting Servicesで構成された拡張保護がサポートされ、適用されます。 既定では、Reporting Services はネゴシエート認証または NTLM 認証を指定する要求を受け入れるため、オペレーティング システムでの拡張保護のサポートと Reporting Services の拡張保護機能を活用できます。
重要
既定では、Windows の拡張保護は有効になっていません。 Windows で拡張保護を有効にする方法の詳細については、「 認証に対する保護の強化」を参照してください。 認証を成功させるためには、オペレーティング システムとクライアントの認証スタックが両方とも拡張保護をサポートしている必要があります。 旧バージョンのオペレーティング システムを使用している場合は、拡張保護に対応したコンピューターを準備するために、1 つ以上の更新プログラムのインストールが必要になることがあります。 拡張保護の最新情報については、 こちらを参照してください。
Reporting Services の拡張保護の概要
SQL Server 2019 (15.x) Reporting Servicesは、オペレーティング システムで有効になっている拡張保護をサポートし、適用します。 オペレーティング システムが拡張保護をサポートしていないか、拡張保護機能がオペレーティング システムで有効化されていない場合、Reporting Services の拡張保護機能を使用した認証は失敗します。 Reporting Services拡張保護には SSL 証明書も必要です。 詳細については、「ネイティブ モード レポート サーバーで SSL 接続を構成する」を参照してください。
重要
既定では、Reporting Services の拡張保護は有効になっていません。 この機能を有効にするには、rsreportserver.config
構成ファイルを変更するか、WMI API を使用して構成ファイルを更新します。 SQL Server 2019 (15.x)Reporting Servicesでは、拡張保護設定を変更または表示するためのユーザー インターフェイスは提供されません。 詳細については、このトピックの 構成設定に関するセクション を参照してください。
拡張保護の設定に加えた変更や設定の不適切な構成が原因で一般的な問題が発生しても、目に見えるエラー メッセージやダイアログ ウィンドウで示されることはありません。 拡張保護の構成や互換性に関係する問題が生じると、認証に失敗し、Reporting Services のトレース ログにエラーが記録されます。
重要
一部のデータ アクセス テクノロジでは、拡張保護がサポートされないことがあります。 データ アクセス テクノロジは、SQL Server データ ソースおよび Reporting Services カタログ データベースへの接続に使用されます。 データ アクセス テクノロジで拡張保護がサポートされない場合、Reporting Services に次のような影響が生じます。
- Reporting Services カタログ データベースを実行する SQL Server は拡張保護を有効にできません。つまり、レポート サーバーがカタログ データベースへの接続に失敗し、認証エラーが返されます。
- Reporting Services レポート データ ソースとして使用される SQL Server は拡張保護を有効にできません。つまり、レポート サーバーがレポート データ ソースへの接続に失敗し、認証エラーが返されます。
データ アクセス テクノロジのドキュメントには、拡張保護のサポートに関する情報が記載されています。
アップグレード
Reporting Services サーバーを SQL Server 2019 (15.x) にアップグレードすると、既定値を持つ構成設定がファイルに
rsreportserver.config
追加されます。 設定が既に存在する場合、SQL Server 2019 (15.x) のインストールではファイルにrsreportserver.config
保持されます。構成設定が構成ファイルに
rsreportserver.config
追加されると、既定の動作は、Reporting Services拡張保護機能をオフにするため、このトピックで説明するように機能を有効にする必要があります。 詳細については、このトピックの 構成設定に関するセクション を参照してください。RSWindowsExtendedProtectionLevel
設定の既定値はOff
です。RSWindowsExtendedProtectionScenario
設定の既定値はProxy
です。SQL Server 2019 (15.x) アップグレード アドバイザーでは、オペレーティング システムまたはReporting Servicesの現在のインストールで拡張保護サポートが有効になっていることを確認できません。
Reporting Services の拡張保護でサポートされない機能とシナリオ
Reporting Services の拡張保護機能では、次の機能領域とシナリオがサポートされません。
Reporting Services のカスタム セキュリティ拡張機能の作成者は、拡張保護のサポートをカスタム セキュリティ拡張機能に追加する必要があります。
Reporting Services のインストールで使用または追加されるコンポーネントを開発したサード パーティ ベンダーは、そのコンポーネントを更新して拡張保護をサポートする必要があります。 詳細については、サード パーティ ベンダーに問い合わせてください。
配置のシナリオと推奨事項
以下のシナリオでは、さまざまな配置とトポロジを紹介します。また、それらを Reporting Services の拡張保護でセキュリティ保護するにあたっての推奨構成も示します。
直接
このシナリオでは、イントラネット環境などでのレポート サーバーへの直接的な接続について説明します。
シナリオ | シナリオを表した図 | セキュリティ保護の方法 |
---|---|---|
直接的な SSL 通信を使用します。 レポート サーバーにより、クライアントからレポート サーバーへのチャネル バインドが適用されます。 |
1) クライアント アプリケーション 2) レポート サーバー |
チャネル バインドには SSL チャネルが使用されるため、サービス バインドは不要です。RSWindowsExtendedProtectionLevel を Allow または Require に設定します。RSWindowsExtendedProtectionScenario を Direct に設定します。 |
直接的な HTTP 通信を使用します。 レポート サーバーにより、クライアントからレポート サーバーへのサービス バインドが適用されます。 |
1) クライアント アプリケーション 2) レポート サーバー |
SSL チャネルが存在しないため、チャネル バインドは適用できません。 サービス バインドの検証は可能ですが、チャネル バインドがないため完全な保護は不可能です。サービス バインド自体で防ぐことができるのは、基本的な脅威のみです。 RSWindowsExtendedProtectionLevel を Allow または Require に設定します。RSWindowsExtendedProtectionScenario を Any に設定します。 |
プロキシとネットワーク負荷分散
クライアント アプリケーションは、エクストラネット、インターネット、セキュリティで保護されたイントラネットなどで、SSL を実行して認証のためにサーバーに資格情報を渡すデバイスまたはソフトウェアに接続します。 クライアントはプロキシに接続します。つまり、すべてのクライアントがプロキシを使用します。
この状況は、ネットワーク負荷分散 (NLB) デバイスを使用する場合と同じです。
シナリオ | シナリオを表した図 | セキュリティ保護の方法 |
---|---|---|
HTTP 通信を使用します。 レポート サーバーにより、クライアントからレポート サーバーへのサービス バインドが適用されます。 |
1) クライアント アプリケーション 2) レポート サーバー 3) プロキシ |
SSL チャネルが存在しないため、チャネル バインドは適用できません。RSWindowsExtendedProtectionLevel を Allow または Require に設定します。RSWindowsExtendedProtectionScenario を Any に設定します。サービス バインドが正しく適用されるように、プロキシ サーバーの名前を認識するようにレポート サーバーを構成する必要があることに注意してください。 |
HTTP 通信を使用します。 レポート サーバーによって、クライアントからプロキシへのチャネル バインドと、クライアントからレポート サーバーへのサービス バインドが適用されます。 |
1) クライアント アプリケーション 2) レポート サーバー 3) プロキシ |
プロキシへの SSL チャネルを利用できるため、プロキシへのチャネル バインドを適用できます。 サービス バインドも適用できます。 レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。RSWindowsExtendedProtectionLevel または にAllow 。Require RSWindowsExtendedProtectionScenario を Proxy に設定します。 |
セキュリティで保護されたプロキシとの間接的な HTTPS 通信を使用します。 レポート サーバーによって、クライアントからプロキシへのチャネル バインドと、クライアントからレポート サーバーへのサービス バインドが適用されます。 |
1) クライアント アプリケーション 2) レポート サーバー 3) プロキシ |
プロキシへの SSL チャネルを利用できるため、プロキシへのチャネル バインドを適用できます。 サービス バインドも適用できます。 レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。RSWindowsExtendedProtectionLevel または にAllow 。Require RSWindowsExtendedProtectionScenario を Proxy に設定します。 |
Gateway
このシナリオでは、SSL を実行してユーザーを認証するデバイスまたはソフトウェアに接続するクライアント アプリケーションについて説明します。 このデバイスまたはソフトウェアは、ユーザー コンテキストまたは別のユーザー コンテキストを偽装したうえで、レポート サーバーに対して要求を行います。
シナリオ | シナリオを表した図 | セキュリティ保護の方法 |
---|---|---|
間接的な HTTP 通信を使用します。 ゲートウェイによって、クライアントからゲートウェイへのチャネル バインドが適用されます。 ゲートウェイとレポート サーバーの間にはサービス バインドが確立されます。 |
1) クライアント アプリケーション 2) レポート サーバー 3) ゲートウェイ デバイス |
ゲートウェイがコンテキストを偽装し、新しい NTLM トークンを作成するため、クライアントからレポート サーバーへのチャネル バインドは確立できません。 ゲートウェイとレポート サーバーの間で SSL が使用されないため、チャネル バインドは適用できません。 サービス バインドを適用できます。 RSWindowsExtendedProtectionLevel を Allow または Require に設定します。RSWindowsExtendedProtectionScenario を Any に設定します。管理者は、チャネル バインドを適用するようにゲートウェイ デバイスを構成する必要があります。 |
セキュリティで保護されたゲートウェイとの間接的な HTTPS 通信を使用します。 ゲートウェイによってクライアントからゲートウェイへのチャネル バインドが適用され、レポート サーバーによってゲートウェイからレポート サーバーへのチャネル バインドが適用されます。 |
1) クライアント アプリケーション 2) レポート サーバー 3) ゲートウェイ デバイス |
ゲートウェイがコンテキストを偽装し、新しい NTLM トークンを作成するため、クライアントからレポート サーバーへのチャネル バインドは確立できません。 ゲートウェイからレポート サーバーへの SSL は、チャネル バインドを適用できることを意味します。 サービス バインドは不要です。 RSWindowsExtendedProtectionLevel を Allow または Require に設定します。RSWindowsExtendedProtectionScenario を Direct に設定します。管理者は、チャネル バインドを適用するようにゲートウェイ デバイスを構成する必要があります。 |
組み合わせ
このシナリオでは、クライアントがプロキシに接続するエクストラネット環境またはインターネット環境について説明します。 これは、クライアントがレポート サーバーに接続するイントラネット環境と組み合わせたシナリオです。
シナリオ | シナリオを表した図 | セキュリティ保護の方法 |
---|---|---|
クライアントからレポート サーバー サービスへの間接的なアクセスと直接的なアクセスを行います。クライアントからプロキシ、またはクライアントからレポート サーバーへの接続で SSL を使用しません。 | 1) クライアント アプリケーション 2) レポート サーバー 3) プロキシ 4) クライアント アプリケーション |
クライアントからレポート サーバーへのサービス バインドを適用できます。 レポート サーバーがプロキシ名を把握できなければなりません。レポート サーバーの管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。RSWindowsExtendedProtectionLevel を Allow または Require に設定します。RSWindowsExtendedProtectionScenario を Any に設定します。 |
クライアントからレポート サーバーへの間接的なアクセスと直接的なアクセスを行います。その際、クライアントからプロキシまたはレポート サーバーへの SSL 接続を確立します。 |
1) クライアント アプリケーション 2) レポート サーバー 3) プロキシ 4) クライアント アプリケーション |
チャネル バインドを適用できます。 プロキシ名はレポート サーバーに認識されている必要があり、レポート サーバー管理者は、ホスト ヘッダーを使用してプロキシの URL 予約を作成するか、Windows レジストリ エントリ BackConnectionHostNames でプロキシ名を構成する必要があります。RSWindowsExtendedProtectionLevel を Allow または Require に設定します。RSWindowsExtendedProtectionScenario を Proxy に設定します。 |
Reporting Services の拡張保護の構成
ファイルrsreportserver.config
には、拡張保護の動作を制御する構成値Reporting Services含まれています。
ファイルの使用と編集 rsreportserver.config
の詳細については、「 RSReportServer 構成ファイル」を参照してください。 拡張保護の設定は、WMI API を使用して変更および確認することもできます。 詳細については、「SetExtendedProtectionSettings メソッド (WMI MSReportServer_ConfigurationSetting)」を参照してください。
構成設定の検証が失敗した場合、RSWindowsNTLM
、RSWindowsKerberos
、および RSWindowsNegotiate
の各認証の種類がレポート サーバーで無効になります。
Reporting Services の拡張保護の構成設定
次の表では、拡張保護の rsreportserver.config
に含まれる構成設定について説明します。
設定 | 説明 |
---|---|
RSWindowsExtendedProtectionLevel |
拡張保護の適用レベルを指定します。 有効な値は Off 、Allow 、Require です。既定値は Off です。Off を指定した場合、チャネル バインドまたはサービス バインドの検証は行われません。Allow を指定した場合、拡張保護はサポートされますが、要求されません。 Allow を指定した場合、次の効果があります。拡張保護がサポートされているオペレーティング システムで実行中のクライアント アプリケーションに対し、拡張保護が適用されます。 保護の適用方法は、 RsWindowsExtendedProtectionScenario 設定によって決まります。拡張保護がサポートされていないオペレーティング システムで実行中のアプリケーションに対し、認証が許可されます。 Require を指定した場合、次の効果があります。拡張保護がサポートされているオペレーティング システムで実行中のクライアント アプリケーションに対し、拡張保護が適用されます。 拡張保護をサポートしていないオペレーティング システムで実行されているアプリケーションでは、認証は許可 されません 。 |
RsWindowsExtendedProtectionScenario |
検証する拡張保護の形式を指定します。チャネル バインド、サービス バインド、またはその両方を指定します。 有効な値は Any 、Proxy 、Direct です。既定値は Proxy です。Any を指定した場合、次の効果があります。\- Windows NTLM 認証、Kerberos 認証、およびネゴシエート認証とチャネル バインドは要求されません。 \- サービス バインドが適用されます。 Proxy を指定した場合、次の効果があります。\- チャネル バインド トークンが存在する場合は、Windows NTLM 認証、Kerberos 認証、およびネゴシエート認証が行われます。 \- サービス バインドが適用されます。 Direct を指定した場合、次の効果があります。- CBT と現在のサービスへの SSL 接続が存在し、SSL 接続の CBT が NTLM、Kerberos、またはネゴシエート トークンの CBT に一致する場合に、それぞれ Windows NTLM 認証、Kerberos 認証、またはネゴシート認証が行われます。 \- サービス バインドは適用されません。 注: が に OFF 設定されている場合RsWindowsExtendedProtectionLevel 、この設定は無視されます。 |
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 の予約と登録について (SSRS Configuration Manager)」を参照してください。
参照
拡張保護を使用してデータベース エンジンに接続する 認証のための拡張保護の概要拡張保護による統合 Windows 認証Microsoft セキュリティ アドバイザリ: 認証の拡張保護Report Server サービス トレース ログRSReportServer 構成ファイルSetExtendedProtectionSettings メソッド (WMI MSReportServer_ConfigurationSetting)