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.
La fonctionnalité de bac à sable du Langage de définition de rapport (RDL) vous permet de détecter et de restreindre l'utilisation de types spécifiques de ressources, pour des locataires individuels, dans un environnement comportant plusieurs locataires utilisant une seule batterie de serveurs de rapports web. Par exemple, il s’agit d’un scénario de services d’hébergement dans lequel vous pouvez gérer une seule batterie web de serveurs de rapports qui sont utilisées par plusieurs locataires, et peut-être des sociétés différentes. En tant qu'administrateur de serveur de rapports, vous pouvez activer cette fonctionnalité pour aider à accomplir les objectifs suivants :
Restreindre la taille des ressources externes. Les ressources externes incluent les images, fichiers .xslt et données cartographiques.
Lors de la publication des rapports, limiter les types et membres utilisés dans le texte d'expression.
Lors du traitement des rapports, limiter la longueur du texte et la taille de la valeur de retour pour les expressions.
Lorsque le Sandboxing RDL est activé, les fonctionnalités suivantes sont désactivées :
Code personnalisé dans l’élément <Code> d’une définition de rapport.
Mode de compatibilité descendante RDL pour les éléments de rapport personnalisés SQL Server 2005 Reporting Services (SSRS).
Paramètres nommés dans les expressions
Cette rubrique décrit chaque élément de l’élément <RDLSandboxing> dans le fichier RSReportServer.Config. Pour plus d’informations sur la modification de ce fichier, consultez Modifier un fichier de configuration Reporting Services (RSreportserver.config). Un journal des traces de serveur enregistre l'activité liée à la fonctionnalité Sandboxing RDL. Pour plus d’informations sur les journaux des traces, consultez Journal des traces du service Report Server.
Exemple de configuration
L’exemple suivant montre les paramètres et les exemples de valeurs de l’élément <RDLSandboxing> dans le fichier RSReportServer.Config.
<RDLSandboxing>
<MaxExpressionLength>5000</MaxExpressionLength>
<MaxResourceSize>5000</MaxResourceSize>
<MaxStringResultLength>3000</MaxStringResultLength>
<MaxArrayResultLength>250</MaxArrayResultLength>
<Types>
<Allow Namespace="System.Drawing" AllowNew="True">Bitmap</Allow>
<Allow Namespace="TypeConverters.Custom" AllowNew="True">*</Allow>
</Types>
<Members>
<Deny>Format</Deny>
<Deny>StrDup</Deny>
</Members>
</RDLSandboxing>
Paramètres de configuration
Le tableau suivant contient des informations sur les paramètres de configuration. Les paramètres sont présentés dans l'ordre dans lequel ils apparaissent dans le fichier de configuration.
| Réglage | Descriptif |
|---|---|
| MaxExpressionLength | Quantité maximale de caractères autorisés dans les expressions RDL. Valeur par défaut : 1 000 |
| MaxResourceSize | Quantité maximale de Ko autorisés pour une ressource externe. Valeur par défaut : 100 |
| MaxStringResultLength | Quantité maximale de caractères autorisés dans une valeur de retour pour une expression RDL. Valeur par défaut : 1 000 |
| MaxArrayResultLength | Quantité maximale d'éléments autorisés dans un tableau de valeurs retourné pour une expression RDL. Valeur par défaut : 100 |
| Types | Liste des membres à autoriser dans les expressions RDL. |
| Permettre | Type ou jeu de types à autoriser dans les expressions RDL. |
| Namespace | Attribut pour Allow qui est l’espace de noms qui contient un ou plusieurs types qui s’appliquent à Value. Cette propriété n'est pas sensible à la casse. |
AllowNew |
Attribut booléen pour Allow qui contrôle si de nouvelles instances du type sont autorisées à être créées dans des expressions RDL ou dans un élément RDL< Class>. Remarque : Lorsqu’elle RDLSandboxing est activée, les nouveaux tableaux ne peuvent pas être créés dans les expressions RDL, quel que soit le paramètre de AllowNew. |
| Valeur | Valeur pour Allow, qui est le nom du type à autoriser dans les expressions RDL. La valeur * indique que tous les types dans l’espace de noms sont autorisés. Cette propriété n'est pas sensible à la casse. |
| Membres | Pour la liste des types inclus dans l’élément <Types> , la liste des noms de membres qui ne sont pas autorisés dans les expressions RDL. |
| Nier | Nom d’un membre qui n’est pas autorisé dans les expressions RDL. Cette propriété n'est pas sensible à la casse. Remarque : Lorsque le refus est spécifié pour un membre, tous les membres portant ce nom pour tous les types ne sont pas autorisés. |
Utilisation d’expressions lorsque le bac à sable RDL est activé
Vous pouvez modifier la fonctionnalité Sandboxing RDL afin d'aider à gérer les ressources utilisées par une expression des manières suivantes :
Limitez le nombre de caractères utilisés pour une expression.
Limitez la taille du résultat retourné par une expression.
Autorisez une liste spécifique de types qui peuvent être utilisés dans une expression.
Limitez la liste de membres par nom pour la liste des types autorisés qui peuvent être utilisés dans une expression.
La fonctionnalité de Sandboxing RDL vous permet de créer la liste des types approuvés et une liste des membres refusés. La liste des types approuvés est appelée liste verte. La liste des membres refusés est appelée liste de blocs.
Remarque
Dans la définition de rapport, un ordinateur ne peut pas connaître le type de chaque instance d'une référence d'expression. Lorsque vous ajoutez un membre à la liste de blocage, vous refusez tous les membres portant ce nom à travers tous les types présents dans la liste d'autorisation.
Les résultats d'expression RDL sont vérifiés au moment de l'exécution. Les expressions RDL sont vérifiées dans la définition de rapport lorsque le rapport est publié. Contrôlez le journal des traces du serveur de rapports afin de détecter toute violation. Pour plus d’informations, consultez Report Server Service Trace Log.
Travail avec les types
Lorsque vous ajoutez un type à la liste de permission, vous contrôlez les points d’entrée suivants pour accéder aux expressions RDL :
Membres statiques d'un type.
Méthode Visual Basic
New.Élément <Classes> dans la définition de rapport.
Membres que vous avez ajoutés à la liste de blocs pour un type dans la liste verte.
La liste d'autorisation ne contrôle pas les points d’entrée suivants :
Datasets du rapport. Les champs dans les datasets de rapport retournés à partir de requêtes peuvent contenir tout type RDL valide.
des paramètres de rapport ; Les valeurs de paramètres fournies par l'utilisateur peuvent contenir tout type RDL valide.
Membres d’un type activé qui ne figurent pas dans la liste de blocage. Par défaut, tous les types de membres de la liste d'autorisation sont activés. Lorsque vous ajoutez un nom de membre à la liste de blocage, vous refusez tous les membres portant ce nom pour tous les types figurant dans la liste d'autorisation.
Pour activer un membre d’un type, mais refuser un membre portant le même nom pour un autre type, vous devez effectuer les opérations suivantes :
Ajoutez un <élément "Deny"> pour le nom du membre.
Créer un membre de proxy avec un nom différent sur une classe dans un assembly personnalisé pour le membre que vous souhaitez activer.
Ajoutez cette nouvelle classe à la liste d'autorisation.
Pour ajouter des fonctions Visual Basic .NET Framework à la liste d'autorisation, ajoutez les types correspondants de l'espace de noms Microsoft.VisualBasic à la liste d'autorisation.
Pour ajouter des mots clés de type Visual Basic .NET Framework à la liste autorisée, ajoutez le type CLR correspondant à la liste autorisée. Par exemple, pour utiliser le mot clé IntegerVisual Basic .NET Framework, ajoutez le fragment XML suivant à l’élément <RDLSandboxing> :
<Allow Namespace="System">Int32</Allow>
Pour ajouter un type générique ou un type nullable Visual Basic .NET Framework à la liste d'autorisation, vous devez suivre les étapes suivantes :
Créer un type de proxy pour le type Nullable générique ou Visual Basic .NET Framework.
Ajoutez le type de proxy à la liste d'autorisation.
L’ajout d’un type à partir d’un assembly personnalisé à la liste autorisée n’accorde pas implicitement des droits d'exécution sur l’assembly. Vous devez modifier spécifiquement le fichier de sécurité d'accès du code et fournir l'autorisation Exécuter à votre assembly. Pour plus d’informations, consultez Sécurité d’accès du code dans Reporting Services.
Gestion de la <liste de refus> des membres
Lorsque vous ajoutez un nouveau type à la liste d'autorisation, utilisez la liste suivante pour déterminer à quel moment il pourrait être nécessaire de mettre à jour la liste de blocage des membres :
Lorsque vous mettez à jour un assembly personnalisé avec une version qui introduit de nouveaux types.
Lorsque vous ajoutez des membres aux types de la liste d'autorisation.
Quand vous mettez à jour .NET Framework sur le serveur de rapports.
Quand vous effectuez une mise à niveau du serveur de rapports vers une version ultérieure de Reporting Services.
Lorsque vous mettez à jour un serveur de rapports pour gérer un schéma RDL ultérieur, car de nouveaux membres ont pu être ajoutés aux types RDL.
Utilisation d’opérateurs et de nouveaux
Par défaut, les opérateurs de langage Visual Basic .NET Framework sont toujours autorisés, à l’exception de New. L’opérateur New est contrôlé par l’attribut AllowNew sur l’élément <Allow> . D’autres opérateurs de langage, tels que l’opérateur ! d’accesseur de collection par défaut et les macros de cast Visual Basic .NET Framework telles que CInt, sont toujours autorisés.
L’ajout d’opérateurs à une liste de blocs, y compris les opérateurs personnalisés, n’est pas pris en charge. Pour exclure les opérateurs d’un type, vous devez effectuer les opérations suivantes :
Créez un type de proxy qui n’implémente pas les opérateurs que vous souhaitez exclure.
Ajoutez le type de proxy à la liste d'autorisation.
Pour créer un nouveau tableau dans une expression RDL, créez le tableau dans une méthode d'une classe que vous définissez et ajoutez cette classe à la liste d'autorisation.
Pour créer un tableau dans une expression RDL, vous devez effectuer les opérations suivantes :
Définir une nouvelle classe et créer le tableau dans une méthode sur cette classe.
Ajoutez la classe à la liste verte.
Voir aussi
Fichier de configuration RSReportServer
Journal de suivi de service du serveur de rapports