レポートとリソースの保護
各レポートおよびリソースのセキュリティを設定して、これらのアイテムへのユーザーのアクセスのレベルを制御できます。既定では、組み込みの 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 を探してください。
パラメータ化されたレポート内の SQL インジェクション攻撃の緩和
String 型のパラメータが含まれるレポートでは、使用可能な値の一覧 (有効な値の一覧とも呼ばれています) を必ず使用してください。また、レポートを実行するすべてのユーザーに対して、レポート表示に必要な権限のみを与えてください。String 型のパラメータを定義する際には、任意の値が許容されるテキスト ボックスが表示されます。使用可能な値の一覧を使用すると、入力できる値が制限されます。クエリ パラメータにレポート パラメータが関連付けられている場合に、使用可能な値の一覧を使用しなければ、レポート ユーザーはテキスト ボックスに SQL 構文を入力できるので、レポートとサーバーが SQL インジェクション攻撃を受ける危険性が生じます。さらに、ユーザーが新しい SQL ステートメントを実行するための十分な権限を持っている場合は、サーバーで予想外の結果が生じる可能性もあります。
クエリ パラメータと関連付けられていないレポート パラメータがあり、このパラメータ値がレポートに含まれていると、レポート ユーザーが、式の構文または URL をパラメータ値に入力して、このレポートを Excel または HTML に変換することも可能になります。別のユーザーがこのレポートを表示して、表示されたパラメータ コンテンツをクリックすると、悪意のあるスクリプトまたはリンクが意図せず実行されてしまう可能性があります。
悪意のあるスクリプトを誤って実行するリスクを軽減するためには、信頼されたソースのレポートしか開かないようにする必要があります。
注意 |
---|
前のリリースのドキュメントでは、式として動的クエリを作成する例が記載されていました。この種類のクエリは、SQL インジェクション攻撃への脆弱性が生じるので、推奨されていません。 |
機密レポートの保護
機密情報を含むレポートは、重要なデータにアクセスするための資格情報の入力をユーザーに要求することによって、データアクセス レベルのセキュリティで保護する必要があります。詳細については、「レポート データ ソースに関する資格情報と接続情報の指定」を参照してください。また、未承認のユーザーがアクセスできないように、フォルダをセキュリティで保護することもできます。詳細については、「フォルダのセキュリティ保護」を参照してください。