次の方法で共有


レポートとリソースの保護

各レポートおよびリソースのセキュリティを設定して、これらのアイテムへのユーザーのアクセスのレベルを制御できます。既定では、組み込みの Administrators グループのメンバーであるユーザーのみ、レポートの実行、リソースの表示、プロパティの変更、およびアイテムの削除を行うことができます。他のすべてのユーザーについては、レポートまたはリソースへのアクセスを許可するロール割り当てを作成する必要があります。

レポートおよびリソースへのロールベースのアクセス

レポートおよびリソースへのアクセスを許可するために、既存のロール割り当てを親フォルダーからユーザーに継承させることも、アイテム自体に新しいロール割り当てを作成することもできます。

多くの場合は、親フォルダーから継承した権限を使用します。個々のレポートやリソースにセキュリティを設定する必要が生じるのは、レポートまたはリソースの存在を知る必要がないユーザーからそのレポートまたはリソースを隠す場合や、レポートまたはアイテムへのアクセス レベルを上げる場合のみです。これらの目的は、共存することができます。レポートへのアクセスを少数のユーザーに制限し、そのユーザーのすべてまたは一部に、レポートを管理する追加の権限を与えることができます。

目的を達成するには、複数のロールの割り当てを作成する必要がある場合があります。たとえば、2 人のユーザー Ann と Fernando、および Human Resource Managers グループがアクセス権を持つレポートを作成するとします。Ann と Fernando はレポートを管理できる必要がありますが、Human Resource Managers のメンバーはレポートの実行だけが必要です。これらすべてのユーザーの要件を満たすには、Ann と Fernando をそれぞれレポートのコンテンツ マネージャーに設定し、Human Resource Managers グループに対して表示専用のタスクをサポートする、個別のロールの割り当てを 3 つ作成します。

レポートまたはリソースにセキュリティを設定すると、そのアイテムを新しい場所に移動しても、その設定は持続します。たとえば、少数のユーザーのみがアクセス権を与えられているレポートを移動する場合、比較的制限の少ないセキュリティ ポリシーを持つフォルダーに移動しても、引き続きその少数のユーザーのみがレポートにアクセスできます。

パブリッシュしたレポートまたはドキュメント内の HTML インジェクション攻撃の緩和

Reporting Services では、レポートとリソースは、レポートを実行しているユーザーのセキュリティ ID で処理されます。式、スクリプト、カスタム レポート アイテム、またはカスタム アセンブリがレポートに含まれる場合、ユーザーの資格情報でコードが実行されます。リソースがスクリプトを含む HTML ドキュメントである場合、ユーザーがレポート サーバーでドキュメントを開く際にスクリプトが実行されます。レポート内のスクリプトまたはコードの実行は、ある程度のリスクを伴う強力な機能です。悪意のあるコードの場合、レポート サーバーおよびレポートを実行しているユーザーは、攻撃に対して脆弱な状態になります。

HTML として処理されるレポートおよびリソースにアクセスする場合、レポートが完全信頼で処理され、悪意のあるスクリプトがクライアントに送信される可能性があることに注意してください。ブラウザー設定に応じて、ブラウザーで指定されている信頼のレベルで、クライアントは HTML を実行します。

次の予防策で、悪意のあるスクリプトを実行するリスクを緩和できます。

  • コンテンツをレポート サーバーにパブリッシュできるユーザーは、慎重に選択して決定します。悪意のあるコンテンツがパブリッシュされる可能性があるので、コンテンツをパブリッシュできるユーザーは、少数の信頼されたユーザーに限定する必要があります。

  • すべてのパブリッシャーは、不明なソースや信頼されていないソースのレポートおよびリソースのパブリッシュを避ける必要があります。必要に応じて、テキスト エディターでファイルを開き、疑わしいスクリプトや URL を探してください。

レポート パラメーターおよびスクリプト インジェクション

レポート パラメーターを使用すると、レポートの全体的なデザインと実行の柔軟性が高まります。その一方で、こうした柔軟性がおびき寄せによる攻撃に悪用されることもあります。悪意のあるスクリプトを誤って実行するリスクを軽減するためには、信頼されたソースのレポートだけを開くようにしてください。次に、HTML レンダラーのスクリプト インジェクション攻撃が行われる可能性のあるシナリオを紹介します。検討してみることをお勧めします。

  1. レポートにテキスト ボックスが含まれており、そのハイパーリンク アクションが、悪意のあるテキストが含まれている可能性のあるパラメーターの値に設定されている。

  2. レポート サーバーにパブリッシュされたレポートやその他の方法で公開されたレポートのレポート パラメーターの値が、Web ページの URL から制御できる状態になっている。

  3. 攻撃者が Web ページまたはレポート サーバーへのリンクを作成し、"javascript:<悪意のあるスクリプト>" という形式でパラメーターの値を指定したうえで、そのリンクをおびき寄せによる攻撃で他のユーザーに送信する。

パブリッシュされたレポートまたはドキュメント内のハイパーリンクによるスクリプト インジェクション攻撃の緩和

レポートには、レポート アイテムまたはレポート アイテムの一部の Action プロパティの値を使用して、ハイパーリンクが埋め込まれることがあります。ハイパーリンクは、レポートの処理時に外部データ ソースから取得されるデータにバインドできます。悪意のあるユーザーによって基になるデータが変更された場合、このハイパーリンクには、スクリプティング攻撃のリスクが生じます。パブリッシュまたはエクスポートされたレポート内のリンクをユーザーがクリックすると、悪意のあるスクリプトが実行される可能性があります。

レポート内のリンクによって悪意のあるスクリプトが誤って実行されるリスクを軽減するためには、信頼されたソースのデータにのみハイパーリンクをバインドします。悪用されるおそれのあるリンクがクエリ結果のデータやデータをハイパーリンクにバインドする式によって生成されないことを確認してください。たとえば、複数のデータセット フィールドのデータを連結する式に基づくハイパーリンクは使用しないことをお勧めします。必要に応じてレポートを参照し、[ソースの表示] を使用して疑わしいスクリプトや URL がないかどうかを確認してください。

パラメーター化されたレポート内の SQL インジェクション攻撃の緩和

String 型のパラメーターが含まれるレポートでは、使用可能な値の一覧 (有効な値の一覧とも呼ばれています) を必ず使用してください。また、レポートを実行するすべてのユーザーに対して、レポート表示に必要な権限のみを与えてください。String 型のパラメーターを定義する際には、任意の値が許容されるテキスト ボックスが表示されます。使用可能な値の一覧を使用すると、入力できる値が制限されます。クエリ パラメーターにレポート パラメーターが関連付けられている場合に、使用可能な値の一覧を使用しなければ、レポート ユーザーはテキスト ボックスに SQL 構文を入力できるので、レポートとサーバーが SQL インジェクション攻撃を受ける危険性が生じます。さらに、ユーザーが新しい SQL ステートメントを実行するための十分な権限を持っている場合は、サーバーで予想外の結果が生じる可能性もあります。

クエリ パラメーターと関連付けられていないレポート パラメーターがあり、このパラメーター値がレポートに含まれていると、レポート ユーザーが、式の構文または URL をパラメーター値に入力して、このレポートを Excel または HTML に変換することも可能になります。別のユーザーがこのレポートを表示して、表示されたパラメーター コンテンツをクリックすると、悪意のあるスクリプトまたはリンクが意図せず実行されてしまう可能性があります。

悪意のあるスクリプトを誤って実行するリスクを軽減するためには、信頼されたソースのレポートしか開かないようにする必要があります。

注意

前のリリースのドキュメントでは、式として動的クエリを作成する例が記載されていました。この種類のクエリは、SQL インジェクション攻撃への脆弱性が生じるので、推奨されていません。

機密レポートの保護

機密情報を含むレポートは、重要なデータにアクセスするための資格情報の入力をユーザーに要求することによって、データアクセス レベルのセキュリティで保護する必要があります。詳細については、「レポート データ ソースに関する資格情報と接続情報の指定」を参照してください。また、未承認のユーザーがアクセスできないように、フォルダーをセキュリティで保護することもできます。詳細については、「フォルダのセキュリティ保護」を参照してください。