統合セキュリティと高度な権限

高度な権限を持ったアカウントによるレポートの実行を可能にしておくと、SQL Server をセキュリティの脅威にさらすことになります。これは、たとえばレポート クエリに悪意のある Transact-SQL ステートメント (たとえば、認証されていないログオンを作成したり、データを変更または削除したり、誤ったデータを生成するようなステートメント) が含まれていた場合に、そのレポートは、データ ソースをホストするサーバーに対する高度な権限を持ったユーザーによって実行されてしまうためです。たとえば、攻撃者が悪意のあるクエリを含むレポートをパブリッシュすると、次の条件のいずれかに当てはまる場合に、クエリは管理者の資格情報を使用して処理されます。

  • レポート データ ソースが統合セキュリティを使用するように構成されていて、レポートを実行しているユーザーが管理者としてログオンしている。

  • レポート データ ソースが資格情報を要求するように構成されていて、ユーザーが管理者の資格情報を入力してレポートを実行している。

特権の昇格による攻撃を緩和するための推奨事項

この脅威を緩和するには、次の 1 つまたは複数の推奨されているセキュリティの実践方法に従います。

  • レポートにデータを提供する外部データ ソースにアクセスする際に、最低限の特権しか持たないアカウントを使用します。最低限の権限しか持たないアカウントの格納済みの資格情報を常に使用するように、レポート データ ソースを構成できます。

  • データ ソースの接続情報を指定する際に、共有データ ソースを使用します。共有データ ソースにロールの割り当てを使用して、接続文字列へのアクセスや資格情報を実行時に取得する方法を定義する設定へのアクセスを制御できます。

  • ロールの割り当てとワークフロー プロセスを使用して、信頼できるレポートのみがレポート サーバーにパブリッシュされるようにします。ロールの割り当てを使用して、レポートのパブリケーションを特定のフォルダに制限します。その後、新しくパブリッシュされたレポートの RDL ファイル (およびクエリ) を調査した後で最終的な場所に移動するよう管理者に要求します。Reporting Services では、ユーザーの組織に標準の操作手順を強制するように定義する方法は用意されていないことに注意してください。パブリッシュする前に調査を必須とする機能はありません。

  • レポート データ ソースの資格情報オプションとして統合セキュリティを無効にします。統合セキュリティを使ったデータ ソース接続を無効にするには、EnableIntegratedSecurity を false に設定します。Management Studio の [サーバーのプロパティ] ページでこのプロパティを設定する方法の詳細については、「レポート サーバーのプロパティを設定する方法 (Management Studio)」を参照してください。

外部データ ソースへのアクセスに統合セキュリティを使用する場合、セキュリティ トークンが外部データ ソースに渡されていることを認識していないレポート ユーザーに対して特別な配慮が必要です (ユーザーは、統合セキュリティを使用するように構成されているレポートを実行する前に警告されません)。さらに、ユーザーは、不明な送信者からの電子メールに添付されているファイルを開く場合に抱くような懸念を、レポートを開くときには抱かないかもしれません。しかし、セキュリティ上のリスクはどちらのシナリオでも同じです。ハイパーリンクを経由して公開されたり、電子メールの添付ファイルに隠されていたりする悪意のあるスクリプトによって、ワークステーションが破損または破壊されるのと同様に、悪意のあるクエリによって、サーバーが破損または破壊されることがあります。

統合セキュリティを無効にすると、統合セキュリティを使用するように現在構成されている (または統合セキュリティ機能が無効になった後で統合セキュリティを使用するように構成された) レポート データ ソースは実行できなくなることに注意してください。レポート サーバーで統合セキュリティがサポートされない場合には、"このデータ ソースは Windows 統合セキュリティを使用するように構成されています。このレポート サーバーでは、Windows 統合セキュリティが無効になっています" というエラーが返されます。