Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Tout code exécuté par un serveur de rapports doit faire partie d’une stratégie de sécurité d’accès au code spécifique. Ces stratégies de sécurité se composent de groupes de code qui mappent des preuves à un ensemble de jeux d’autorisations nommés. Souvent, les groupes de codes sont associés à un jeu d’autorisations nommé qui spécifie les autorisations autorisées pour le code de ce groupe. Le runtime utilise des preuves fournies par un hôte approuvé ou par le chargeur pour déterminer les groupes de code auxquels appartient le code et, par conséquent, quelles autorisations accorder au code. Reporting Services respecte cette architecture de stratégie de sécurité telle que définie par le Common Language Runtime (CLR) de Microsoft .NET Framework. Les sections suivantes décrivent les différents types de code dans Reporting Services et les règles de stratégie associées.
Assemblys du serveur de rapports
Les assemblys du serveur de rapports sont ceux qui contiennent du code qui fait partie du produit Reporting Services. Reporting Services est écrit à l’aide d’assemblys de code managé ; tous ces assemblys sont nommés de manière forte (c’est-à-dire signés numériquement). Les groupes de code pour ces assemblys sont définis à l’aide de StrongNameMembershipCondition, qui fournit des preuves basées sur des informations de clé publique pour le nom fort de l’assembly. Le groupe de codes reçoit le jeu d’autorisations FullTrust .
Extensions du serveur de rapports (rendu, données, remise et sécurité)
Les extensions de serveur de rapports sont des données personnalisées, la remise, le rendu et les extensions de sécurité que vous ou d’autres tiers créez pour étendre les fonctionnalités de Reporting Services. Vous devez accorder FullTrust à ces extensions ou code d’assembly dans les fichiers de configuration de stratégie associés au composant Reporting Services que vous étendez. Les extensions fournies dans le cadre de Reporting Services sont signées avec la clé publique du serveur de rapports et reçoivent le jeu d’autorisations FullTrust .
Important
Vous devez modifier les fichiers de configuration de stratégie Reporting Services pour autoriser FullTrust pour toutes les extensions tierces. Si vous n’ajoutez pas de groupe de code avec FullTrust pour vos extensions personnalisées, ils ne peuvent pas être utilisés par le serveur de rapports.
Pour plus d’informations sur les fichiers de configuration de stratégie dans Reporting Services, consultez Utilisation des fichiers de stratégie de sécurité Reporting Services.
Expressions utilisées dans les rapports
Les expressions de rapport sont des expressions de code inline ou des méthodes définies par l’utilisateur contenues dans l’élément Code d’un fichier de langage de définition de rapport. Il existe un groupe de codes déjà configuré dans les fichiers de stratégie qui accorde ces expressions au jeu d’autorisations d’exécution par défaut. Le groupe de codes ressemble à ce qui suit :
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="Execution"
Name="Report_Expressions_Default_Permissions"
Description="This code group grants default permissions for code in report expressions and Code element. ">
<IMembershipCondition
class="StrongNameMembershipCondition"
version="1"
PublicKeyBlob="002400..."
/>
</CodeGroup>
L’autorisation d’exécution permet au code d’exécuter (exécuter), mais pas d’utiliser des ressources protégées. Toutes les expressions trouvées dans un rapport sont compilées dans un assembly (appelé assembly « hôte d’expression ») stocké dans le cadre du rapport compilé. Lorsque le rapport est exécuté, le serveur de rapports charge l’assembly hôte d’expression et effectue des appels dans cet assembly pour exécuter des expressions. Les assemblys hôtes d’expression sont signés avec une clé spécifique utilisée pour définir le groupe de codes pour tous les hôtes d’expression.
Les expressions de rapport font référence à des collections de modèles objet de rapport (champs, paramètres, etc.) et effectuent des tâches simples telles que les opérations arithmétiques et de chaînes. Le code qui effectue ces opérations simples nécessite uniquement l’autorisation d’exécution . Par défaut, les méthodes définies par l’utilisateur dans l’élément Code et tous les assemblys personnalisés reçoivent l’autorisation d’exécution dans Reporting Services. Par conséquent, pour la plupart des expressions, la configuration actuelle ne nécessite pas de modifier les fichiers de stratégie de sécurité. Pour accorder des autorisations supplémentaires aux assemblys hôtes d’expression, un administrateur doit modifier les fichiers de configuration de stratégie du serveur de rapports et du Concepteur de rapports, et modifier le groupe de codes d’expressions de rapport. Étant donné qu’il s’agit d’un paramètre global, la modification des autorisations par défaut pour les hôtes d’expression affecte tous les rapports. Pour cette raison, il est vivement recommandé de placer tout le code qui nécessite une sécurité supplémentaire dans un assembly personnalisé. Seul cet assembly reçoit les autorisations dont vous avez besoin.
Important
Le code qui appelle des assemblys externes ou des ressources protégées doit être incorporé dans un assembly personnalisé à utiliser dans les rapports. Cela vous donne plus de contrôle sur les autorisations demandées et déclarées par votre code. Vous ne devez pas appeler des méthodes sécurisées dans l’élément Code . Cela vous oblige à accorder FullTrust à l’hôte d’expression de rapport et à accorder à tout le code personnalisé un accès complet au CLR.
Avertissement
N’accordez pas FullTrust au groupe de code d’un hôte d’expression de rapport. Si vous le faites, vous activez toutes les expressions de rapport pour effectuer des appels système protégés.
Assemblys personnalisés référencés dans les rapports
Certaines expressions de rapport peuvent appeler des assemblys de code tiers, également appelés assemblys personnalisés dans Reporting Services. Le serveur de rapports s’attend à ce que ces assemblys aient au moins l’autorisation d’exécution dans les fichiers de configuration de stratégie. Par défaut, les fichiers de stratégie fournis avec Reporting Services accordent l’autorisation d’exécution à tous les assemblys à partir de la zone « Mon ordinateur ». Vous pouvez accorder des autorisations supplémentaires aux assemblys personnalisés en fonction des besoins.
Dans certains cas, vous devrez peut-être effectuer une opération qui nécessite des autorisations de code spécifiques dans une expression de rapport. En règle générale, cela signifie qu’une expression de rapport doit effectuer un appel à une méthode de bibliothèque CLR sécurisée (telle qu’une expression qui accède aux fichiers ou au registre système). La documentation .NET Framework décrit les autorisations de code requises pour effectuer cet appel sécurisé ; pour exécuter l’appel, le code appelant doit recevoir ces autorisations spécifiques et sécurisées. Si vous effectuez l’appel à partir d’une expression de rapport ou de l’élément Code , l’assembly hôte d’expression doit recevoir les autorisations appropriées. Toutefois, une fois que vous accordez à l’expression les autorisations, tout le code qui s’exécute dans n’importe quelle expression d’un rapport reçoit désormais cette autorisation spécifique. Il est beaucoup plus sécurisé d’effectuer l’appel à partir d’un assembly personnalisé et d’accorder à cet assembly personnalisé les autorisations spécifiques.
Voir aussi
Sécurité d'accès du code dans Reporting Services
Développement sécurisé (Reporting Services)