Activer et désactiver sandboxing RDLEnable and Disable RDL Sandboxing

La fonctionnalité Sandboxing RDL (Report Definition Language) vous permet de détecter et restreindre l'utilisation de types spécifiques de ressources, par les locataires individuels, dans un environnement où plusieurs locataires utilisent une batterie de serveurs Web unique de serveurs de rapports.The RDL (Report Definition Language) Sandboxing feature lets you detect and restrict the usage of specific types of resources, by individual tenants, in an environment of multiple tenants that use a single web farm of report servers. Citons pour exemple un scénario de services d'hébergement où vous pouvez maintenir une batterie de serveurs Web uniques de serveurs de rapports utilisés par plusieurs locataires, et peut-être différentes sociétés.An example of this is a hosting services scenario where you might maintain a single web farm of report servers that are used by multiple tenants, and perhaps different companies. En tant qu'administrateur de serveur de rapports, vous pouvez activer cette fonctionnalité pour aider à accomplir les objectifs suivants :As a report server administrator, you can enable this feature to help achieve the following objectives:

  • Restreindre la taille des ressources externes.Restrict external resource sizes. Les ressources externes incluent les images, fichiers .xslt et données cartographiques.External resources include images, .xslt files, and map data.

  • Lors de la publication des rapports, limiter les types et membres utilisés dans le texte d'expression.At report publish time, limit types and members that are used in expression text.

  • Lors du traitement des rapports, limiter la longueur du texte et la taille de la valeur de retour pour les expressions.At report processing time, limit the length of the text and the size of the return value for expressions.

    Lorsque le Sandboxing RDL est activé, les fonctionnalités suivantes sont désactivées :When RDL Sandboxing is enabled, the following features are disabled:

  • Code personnalisé dans le <Code > élément d’une définition de rapport.Custom code in the <Code> element of a report definition.

  • Mode de compatibilité descendante RDL pour les éléments de rapport personnalisé SQL Server 2005 Reporting Services (SSRS)SQL Server 2005 Reporting Services (SSRS) .RDL backward compatibility mode for SQL Server 2005 Reporting Services (SSRS)SQL Server 2005 Reporting Services (SSRS) custom report items.

  • Paramètres nommés dans les expressionsNamed parameters in expressions.

    Cette rubrique décrit chaque élément de la < RDLSandboxing> élément dans le fichier RSReportServer.Config.This topic describes each element in the <RDLSandboxing> element in the RSReportServer.Config file. Pour plus d’informations sur la modification de ce fichier, consultez Modifier un fichier de configuration Reporting Services (RSreportserver.config).For more information about how to modify this file, see Modify a Reporting Services Configuration File (RSreportserver.config). Un journal des traces de serveur enregistre l'activité liée à la fonctionnalité Sandboxing RDL.A server trace log records activity related to the RDL Sandboxing feature. Pour plus d’informations sur les fichiers des traces, consultez Journal des traces du service Report Server.For more information about trace logs, see Report Server Service Trace Log.

Exemple de configurationExample Configuration

L’exemple suivant montre les paramètres et les exemples de valeurs pour le < RDLSandboxing> élément dans le fichier RSReportServer.Config.The following example shows the settings and example values for the <RDLSandboxing> element in the RSReportServer.Config file.

<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 configurationConfiguration Settings

Le tableau suivant contient des informations sur les paramètres de configuration.The following table provides information about configuration settings. Les paramètres sont présentés dans l'ordre dans lequel ils apparaissent dans le fichier de configuration.Settings are presented in the order in which they appear in the configuration file.

ParamètreSetting DescriptionDescription
MaxExpressionLengthMaxExpressionLength Quantité maximale de caractères autorisés dans les expressions RDL.Maximum number of characters allowed in RDL expressions.

Par défaut : 1000Default: 1000
MaxResourceSizeMaxResourceSize Quantité maximale de Ko autorisés pour une ressource externe.Maximum number of KB allowed for an external resource.

Valeur par défaut : 100Default: 100
MaxStringResultLengthMaxStringResultLength Quantité maximale de caractères autorisés dans une valeur de retour pour une expression RDL.Maximum number of characters allowed in a return value for an RDL expression.

Par défaut : 1000Default: 1000
MaxArrayResultLengthMaxArrayResultLength Quantité maximale d'éléments autorisés dans un tableau de valeurs retourné pour une expression RDL.Maximum number of items allowed in an array return value for an RDL expression.

Valeur par défaut : 100Default: 100
TypesTypes Liste des membres à autoriser dans les expressions RDL.The list of members to allow within RDL expressions.
AllowAllow Type ou jeu de types à autoriser dans les expressions RDL.A type or set of types to allow in RDL expressions.
Espace de nomsNamespace Attribut pour Allow qui est l’espace de noms contenant un ou plusieurs types qui s’appliquent à Valeur.Attribute for Allow that is the namespace that contains one or more types that apply to Value. Cette propriété n'est pas sensible à la casse.This property is case-insensitive.
AllowNewAllowNew Attribut booléen pour autoriser qui contrôle si les nouvelles instances du type sont autorisés à être créée dans les expressions RDL ou dans un fichier RDL <classe > élément.Boolean attribute for Allow that controls whether new instances of the type are allowed to be created in RDL expressions or in an RDL <Class> element.

Remarque : Quand RDLSandboxing est activé, de nouveaux tableaux ne peuvent pas être créés dans les expressions RDL, indépendamment de la valeur de AllowNew.Note: When RDLSandboxing is enabled, new arrays cannot be created in RDL expressions, regardless of the setting of AllowNew.
ValueValue Valeur pour Allow qui est le nom du type à autoriser dans les expressions RDL.Value for Allow that is the name of the type to allow in RDL expressions. La valeur \* indique que tous les types dans l’espace de noms sont autorisés.The value \* indicates that all types in the namespace are allowed. Cette propriété n'est pas sensible à la casse.This property is case-insensitive.
MembresMembers Pour obtenir la liste des types qui sont inclus dans le <Types > élément, la liste des noms de membres qui ne sont pas autorisés dans les expressions RDL.For the list of types that are include in the <Types> element, the list of member names that are not allowed in RDL expressions.
RefuserDeny Nom d'un membre qui n'est pas autorisé dans les expressions RDL.The name of a member that is not allowed in RDL expressions. Cette propriété n'est pas sensible à la casse.This property is case-insensitive.

Remarque : Quand Deny est spécifié pour un membre, tous les membres portant ce nom pour tous les types ne sont pas autorisés.Note: When Deny is specified for a member, all members with this name for all types are not allowed.

Utilisation des expressions lorsque le Sandboxing RDL est activéWorking with Expressions when RDL Sandboxing is Enabled

Vous pouvez modifier la fonctionnalité Sandboxing RDL afin d'aider à gérer les ressources utilisées par une expression des manières suivantes :You can modify the RDL Sandboxing feature to help manage the resources that are used by an expression in the following ways:

  • Limitez le nombre de caractères utilisés pour une expression.Restrict the number of characters that are used for an expression.

  • Limitez la taille du résultat retourné par une expression.Restrict the size of the result returned by an expression.

  • Autorisez une liste spécifique de types qui peuvent être utilisés dans une expression.Allow a specific list of types that can be used in an expression.

  • Limitez la liste de membres par nom pour la liste des types autorisés qui peuvent être utilisés dans une expression.Restrict the list of members by name for the list of allowed types that can be used in an expression.

  • La fonctionnalité Sandboxing RDL vous permet de créer une liste de types approuvés et une liste de membres refusés.The RDL Sandboxing feature enables you to create a list of approved types and a list of denied members. La liste des types approuvés porte le nom de liste verte.The list of approved types is called an allow list. La liste des membres refusés porte le nom de liste rouge.The list of denied members is called a block list.

Note

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.In the report definition, a computer cannot know the type of each instances of an expression reference. Lorsque vous ajoutez un membre à la liste rouge, vous refusez tous les membres de ce nom parmi tous les types dans la liste verte.When you add a member to the block list, you are denying all members of that name across all types in the allow list.

Les résultats d'expression RDL sont vérifiés au moment de l'exécution.RDL expression results are verified at run time. Les expressions RDL sont vérifiées dans la définition de rapport lorsque le rapport est publié.RDL expressions are verified in the report definition when the report is published. Contrôlez le journal des traces du serveur de rapports afin de détecter toute violation.Monitor the report server trace log for violations. Pour plus d’informations, consultez Report Server Service Trace Log.For more information, see Report Server Service Trace Log.

Utilisation des typesWorking with Types

Lorsque vous ajoutez un type à la liste verte, vous contrôlez les points d'entrée suivants pour accéder aux expressions RDL :When you add a type to the allow list, you are controlling the following entry points to access RDL expressions:

  • Membres statiques d'un type.Static members of a type.

  • Nouvelle méthode Visual BasicVisual Basic New .The Visual BasicVisual Basic New method.

  • Le <Classes > élément dans la définition de rapport.The <Classes> element in the report definition.

  • Membres que vous avez ajoutés à la liste rouge pour un type dans la liste verte.Members that you have added to the block list for a type in the allow list.

    La liste verte ne contrôle pas les points d'entrée suivants :The allow list does not control the following entry points:

  • Datasets du rapport.Report datasets. Les champs dans les datasets de rapport retournés à partir de requêtes peuvent contenir tout type RDL valide.Fields in report datasets that are returned from queries might contain any valid RDL type.

  • des paramètres de rapport ;Report parameters. Les valeurs de paramètres fournies par l'utilisateur peuvent contenir tout type RDL valide.User-supplied parameter values might contain any valid RDL type.

  • Membres d'un type actif qui ne sont pas dans la liste rouge.Members of an enabled type that are not in the block list. Par défaut, tous les membres de tous les types dans la liste verte sont activés.By default, all members of all types in the allow list are enabled. Lorsque vous ajoutez un nom de membre à la liste rouge, vous refusez tous les membres avec ce nom parmi tous les types figurant dans la liste verte.When you add a member name to the block list, you are denying all members with that name across all types that are in the allow list.

    Pour activer un membre d'un type mais refuser un membre avec le même nom pour un type différent, vous devez effectuer les opérations suivantes :To enable a member of one type but deny a member with the same name for a different type, you must do the following:

  • Ajouter un <Deny > , élément pour le nom du membre.Add a <Deny> element for the member name.

  • 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.Create a proxy member with a different name on a class in a custom assembly for the member that you want to enable.

  • Ajouter cette classe nouvelle à la liste verte.Add that new class to the allow list.

    Pour ajouter des fonctions Visual BasicVisual Basic .NET Framework à la liste autorisée, ajoutez les types correspondants de l’espace de noms Microsoft.VisualBasic à cette liste.To add Visual BasicVisual Basic .NET Framework functions to the allow list, add the corresponding types from the Microsoft.VisualBasic namespace to the allow list.

    Pour ajouter des mots clés du type Visual BasicVisual Basic .NET Framework à la liste verte, ajoutez le type CLR correspondant à la liste verte.To add Visual BasicVisual Basic .NET Framework type keywords to the allow list, add the corresponding CLR type to the allow list. Par exemple, pour utiliser le Visual BasicVisual Basic (mot clé) de .NET Framework entier, ajoutez le fragment XML suivant à la <RDLSandboxing > élément :For example, to use the Visual BasicVisual Basic .NET Framework keyword Integer, add the following XML fragment to the <RDLSandboxing> element:

<Allow Namespace="System">Int32</Allow>  

Pour ajouter un type générique ou un type nullable Visual BasicVisual Basic .NET Framework à la liste autorisée, vous devez procéder comme suit :To add a generic or a Visual BasicVisual Basic .NET Framework nullable type to the allow list, you must do the following:

  • Créer un type de proxy pour le type nullable générique ou Visual BasicVisual Basic .NET Framework.Create a proxy type for the generic or Visual BasicVisual Basic .NET Framework nullable type.

  • Ajouter le type de proxy à la liste verte.Add the proxy type to the allow list.

    L'ajout d'un type d'un assembly personnalisé à la liste verte n'accorde pas implicitement l'autorisation Exécuter sur l'assembly.Adding a type from a custom assembly to the allow list does not implicitly grant execute permission on the assembly. Vous devez modifier spécifiquement le fichier de sécurité d'accès du code et fournir l'autorisation Exécuter à votre assembly.You must specifically modify the code access security file and provide execute permission to your assembly. Pour plus d’informations, consultez Sécurité d’accès du code dans Reporting Services.For more information, see Code Access Security in Reporting Services.

En conservant le <refuser > liste de membresMaintaining the <Deny> List of Members

Lorsque vous ajoutez un nouveau type à la liste verte, vous utilisez la liste suivante pour déterminer quand vous devrez peut-être mettre à jour la liste rouge de membres :When you add a new type to the allow list, use the following list to determine when you might have to update the block list of members:

  • Lorsque vous mettez à jour un assembly personnalisé avec une version qui introduit de nouveaux types.When you update a custom assembly with a version that introduces new types.

  • Lorsque vous ajoutez des membres aux types dans la liste verte.When you add members to the types in the allow list.

  • Quand vous mettez à jour le .NET Framework.NET Framework sur le serveur de rapports.When you update the .NET Framework.NET Framework on the report server.

  • Lorsque vous effectuez une mise à niveau du serveur de rapports vers une version ultérieure de Reporting ServicesReporting Services.When you upgrade the report server to a later version of Reporting ServicesReporting 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.When you update a report server to handle a later RDL schema, because new members might have been added to RDL types.

Utilisation des opérateurs et de NewWorking with Operators and New

Par défaut, les opérateurs de langage Visual BasicVisual Basic .NET Framework, à l’exception de New, sont toujours autorisés.By default, Visual BasicVisual Basic .NET Framework language operators, except for New, are always allowed. Le nouveau opérateur est contrôlée par le AllowNew de l’attribut le <Autoriser > élément.The New operator is controlled by the AllowNew attribute on the <Allow> element. Les autres opérateurs de langage, comme l’opérateur d’accesseur de collection par défaut !Other language operators, such as the default collection accessor operator ! et les macros de conversion de type de Visual BasicVisual Basic .NET Framework, comme CInt, sont toujours autorisés.and Visual BasicVisual Basic .NET Framework cast macros such as CInt, are always allowed.

L'ajout d'opérateurs à une liste rouge, y compris des opérateurs personnalisés, n'est pas pris en charge.Adding operators to a block list, including custom operators, is not supported. Pour exclure des opérateurs pour un type, vous devez effectuer les opérations suivantes :To exclude operators for a type, you must do the following:

  • Créer un type de proxy qui n'implémente pas les opérateurs que vous souhaitez exclure.Create a proxy type that does not implement the operators that you want to exclude.

  • Ajouter le type de proxy à la liste verte.Add the proxy type to the allow list.

    Pour créer un tableau dans une expression RDL, créez le tableau dans une méthode sur une classe que vous définissez et ajoutez cette classe à la liste verte.To create a new array in an RDL expression, create the array in a method on a class that you define, and add that class to the allow list.

    Pour créer un tableau dans une expression RDL, vous devez effectuer les opérations suivantes :To create a new array in an RDL expression, you must do the following:

  • Définir une nouvelle classe et créer le tableau dans une méthode sur cette classe.Define a new class and create the array in a method on that class.

  • Ajouter la classe à la liste verte.Add the class to the allow list.

Voir aussiSee Also

Fichier de configuration RSReportServer.config RsReportServer.config Configuration File
Journal des traces du service Report Server Report Server Service Trace Log