Sécuriser des rapports et des ressourcesSecure Reports and Resources

Vous pouvez définir la sécurité pour des rapports et des ressources individuels afin de contrôler le degré d'accès dont disposent les utilisateurs à ces éléments.You can set security for individual reports and resources to control the degree of access that users have to these items. Par défaut, seuls les utilisateurs qui sont membres du groupe intégré Administrateurs peuvent exécuter les rapports, afficher les ressources, modifier les propriétés et supprimer les éléments.By default, only users who are members of the Administrators built-in group can run reports, view resources, modify properties, and delete the items. Tous les autres utilisateurs possèdent des attributions de rôles créées pour eux qui autorisent l'accès à un rapport ou une ressource.All other users must have role assignments created for them that allow access to a report or resource.

Accès aux rapports et aux ressources en fonction des rôlesRole-based Access to Reports and Resources

Pour accorder l'accès aux rapports et aux ressources, vous pouvez autoriser les utilisateurs à hériter des attributions de rôles existantes d'un dossier parent ou à créer une nouvelle attribution de rôle sur l'élément proprement dit.To grant access to reports and resources, you can allow users to inherit existing role assignments from a parent folder or create a new role assignment on the item itself.

Dans la plupart des cas, vous voudrez probablement utiliser les autorisations qui sont héritées d'un dossier parent.In most cases, you will probably want to use the permissions that are inherited from a parent folder. Il est nécessaire d'établir des paramètres de sécurité sur les ressources et les rapports uniquement si vous voulez masquer le rapport ou la ressource aux utilisateurs qui n'ont pas besoin de savoir que le rapport ou la ressource existe, ou pour augmenter le niveau d'accès d'un rapport ou d'un élément.Setting security on individual reports and resources should only be necessary if you want to hide the report or resource from users who do not need to know that the report or resource exists, or to increase the level of access for a report or item. Ces objectifs ne sont pas mutuellement exclusifs.These objectives are not mutually exclusive. Vous pouvez limiter l'accès à un rapport à un plus petit nombre d'utilisateurs, et leur fournir - à tous ou à certains - des privilèges étendus pour gérer le rapport.You can restrict access to a report to a smaller set of users, and provide all or some of them with additional privileges to manage the report.

Il est possible que vous deviez créer plusieurs attributions de rôles pour atteindre vos objectifs.You may need to create multiple role assignments to achieve your objectives. Par exemple, supposons que vous ayez un rapport que vous vouliez rendre accessible à deux utilisateurs, Anne et Fernand, et au groupe des responsables des ressources humaines.For example, suppose you have a report that you want to make accessible to two users, Ann and Fernando, and to the Human Resource Managers group. Anne et Fernand doivent être en mesure de gérer le rapport, mais les membres responsables des ressources humaines ont uniquement besoin de l'exécuter.Ann and Fernando must be able to manage the report, but the Human Resource Managers members need only to run it. Pour répondre aux besoins de ces différents utilisateurs, vous devez créer trois attributions de rôles distinctes : une qui donne à Anne un rôle de gestionnaire de contenu du rapport, une qui donne à Fernand un rôle de gestionnaire de contenu du rapport et une qui permette au groupe des responsables des ressources humaines d'effectuer des tâches en affichage seul.To accommodate all of these users, you would create three separate role assignments: one to make Ann a content manager of the report, one to make Fernando a content manager of the report, and one to support view-only tasks for the Human Resource Managers group.

Une fois que vous avez défini la sécurité sur un rapport ou une ressource, ceux-ci conservent ces paramètres même si vous déplacez l'élément à un autre endroit.Once you set security on a report or resource, those settings stay with the item even if you move the item to a new location. Par exemple, si vous déplacez un rapport auquel seules quelques personnes sont autorisées à accéder, le rapport continue à n'être accessible qu'à ces mêmes personnes même si vous le déplacez dans un dossier à stratégie de sécurité relativement ouverte.For example, if you move a report that only a few people are authorized to access, the report continues to be available to just those users even if you move it to a folder that has a relatively open security policy.

Limitation des attaques par injection HTML dans un document ou un rapport publiéMitigating HTML Injection Attacks in a Published Report or Document

Dans Reporting ServicesReporting Services, les rapports et les ressources sont traités sous l’identité de sécurité de l’utilisateur qui exécute le rapport.In Reporting ServicesReporting Services, reports and resources are processed under the security identity of the user who is running the report. Si le rapport contient des expressions, un script, des éléments de rapports personnalisés ou des assemblys personnalisés, le code s'exécute sous les informations d'identification de l'utilisateur.If the report contains expressions, script, custom report items, or custom assemblies, the code runs under the user's credentials. Si une ressource est un document HTML qui contient un script, le script sera exécuté lorsque l'utilisateur ouvrira le document sur le serveur de rapports.If a resource is an HTML document that contains script, the script will run when the user opens the document on the report server. La possibilité d'exécuter un script ou du code dans un rapport est une fonction puissante associée à un certain degré de risque.The ability to run script or code within a report is a powerful feature that comes with a certain level of risk. Si le code est malveillant, le serveur de rapports et l'utilisateur qui exécute le rapport sont vulnérables à une attaque.If the code is malicious, the report server and the user who is running the report are vulnerable to attack.

Lorsque vous accordez l'accès à des rapports et des ressources qui sont traités en tant que code HTML, vous devez garder en mémoire le fait que les rapports sont traités en confiance totale et qu'un script potentiellement malveillant peut être envoyé au client.When granting access to reports and to resources that are processed as HTML, it is important to remember that reports are processed in full trust and that potentially malicious script might be sent to the client. En fonction des paramètres du navigateur, le client exécutera le code HTML au niveau de confiance qui est spécifié dans le navigateur.Depending on browser settings, the client will execute the HTML at the level of trust that is specified in the browser.

Vous pouvez limiter le risque d'exécution de script malveillant en prenant les précautions suivantes :You can mitigate the risk of running malicious script by taking the following precautions:

  • Soyez sélectif lorsque vous décidez quelles sont les personnes pouvant publier du contenu sur un serveur de rapports.Be selective when deciding who can publish content to a report server. Dans la mesure où il existe un risque de publication de contenu malveillant, vous devez restreindre les utilisateurs pouvant publier du contenu à un petit nombre d'utilisateurs de confiance.Because the potential for publishing malicious content exists, you should limit users who can publish content to a small number of trusted users.

  • Tous les éditeurs doivent éviter de publier des rapports et des ressources provenant de sources inconnues ou non approuvées.All publishers should avoid publishing reports and resources that come from unknown or untrusted sources. Si nécessaire, ouvrez le fichier dans un éditeur de texte et vérifiez qu'il ne contient pas d'URL et de script suspects.If necessary, open the file in a text editor and look for suspicious script and URLs.

Paramètres de rapport et injection de scriptReport Parameters and Script Injection

Les paramètres de rapport apportent une grande souplesse au niveau de la création et de l'exécution générale du rapport.Report Parameters provide flexibility for the overall report design and execution. Toutefois, cette souplesse peut, dans certains cas, être utilisée par un intrus au cours d'attaques par ruse.However, this same flexibility can, in some cases be used by an attacker in luring attacks. Pour réduire le risque d'exécution accidentelle de scripts malveillants, ouvrez les rapports rendus seulement à partir de sources approuvées.To mitigate the risk of inadvertently running malicious scripts, only open rendered reports from trusted sources. Il est recommandé de tenir compte du scénario suivant présentant une attaque potentielle par injection de script de convertisseur HTML :It is recommended you consider the following scenario that is a potential HTML Renderer script injection attack:

  1. Un rapport contient une zone de texte dont l'action du lien hypertexte est définie sur la valeur d'un paramètre comportant éventuellement un texte malveillant.A report contains a text box with the hyperlink action set to the value of a parameter which could contain malicious text.

  2. Le rapport est publié sur un serveur de rapports ou mis à disposition de telle façon que la valeur du paramètre de rapport est contrôlable par l'URL d'une page Web.The report is published to a report server or otherwise made available in such a way that the report parameter value can be controlled from the URL of a web page.

  3. Un intrus crée un lien vers la page web ou un serveur de rapports en spécifiant la valeur du paramètre sous la forme « javascript :<script malveillant ici > » et envoie ce lien à quelqu'un d’autre dans une attaque par ruse.An attacker creates a link to the web page or report server specifying the value of the parameter in the form "javascript:<malicious script here>" and sends that link to someone else in a luring attack.

Les rapports peuvent contenir des liens hypertexte incorporés dans la valeur de la propriété Action sur un élément de rapport ou une partie d’un élément de rapport.Reports can contain embedded hyperlinks in the value of the Action property on a report item or part of a report item. Les liens hypertexte peuvent être liés aux données extraites d'une source de données externe au moment du traitement du rapport.Hyperlinks can be bound to data that is retrieved from an external data source when the report is processed. Si un utilisateur mal intentionné modifie les données sous-jacentes, le lien hypertexte risque d'être utilisé pour écrire des exploits.If a malicious user modifies the underlying data, the hyperlink might be at risk for scripting exploits. Si un utilisateur clique sur le lien dans le rapport publié ou exporté, le script malveillant peut ensuite s'exécuter.If a user clicks the link in the published or exported report, malicious script could run.

Pour limiter le risque d'insertion de liens dans un rapport qui, par inadvertance, exécuterait des scripts malveillants, n'associez des liens hypertexte qu'avec des données de sources fiables.To mitigate the risk of including links in a report that inadvertently run malicious scripts, only bind hyperlinks to data from trusted sources. Vérifiez que les données issues des résultats de la requête et des expressions qui lient des données aux liens hypertexte ne créent pas de liens susceptibles d'être utilisés frauduleusement.Verify that data from the query results and the expressions that bind data to hyperlinks do not create links that can be exploited. Ainsi, ne fondez pas un lien hypertexte sur une expression qui concatène des données à partir de plusieurs champs de dataset.For example, do not base a hyperlink on an expression that concatenates data from multiple dataset fields. Si nécessaire, accédez au rapport et utilisez la commande « Afficher la source » pour rechercher la présence éventuelle d'URL et de scripts suspects.If necessary, browse to the report and use "View Source" to check for suspicious scripts and URLs.

Limitation des attaques par injection SQL dans un rapport paramétréMitigating SQL Injection Attacks in a Parameterized Report

Dans un rapport qui inclut un paramètre de type String, veillez à utiliser une liste de valeurs disponibles (également appelée liste de valeurs valides) et vérifiez que l’utilisateur qui exécute le rapport dispose uniquement des autorisations nécessaires à l’affichage des données du rapport.In any report that includes a parameter of type String, be sure to use an available values list (also known as a valid values list) and ensure that any user running the report has only the permissions required to view the data in the report. Lorsque vous définissez un paramètre de type String, la zone de texte qui apparaît vous permet d'entrer n'importe quelle valeur.When you define a parameter of type String, the user is presented with a text box that can take any value. Une liste de valeurs disponibles limite les valeurs susceptibles d'être entrées.An available values list limits the values that can be entered. Si le paramètre de rapport est lié à un paramètre de requête et vous n'utilisez pas une liste de valeurs disponibles, l'utilisateur d'un rapport peut taper la syntaxe SQL dans la zone de texte, ce qui peut exposer le rapport et votre serveur de rapports au risque d'une attaque par injection SQL.If the report parameter is tied to a query parameter and you do not use an available values list, it is possible for a report user to type SQL syntax into the text box, potentially opening the report and your server to a SQL injection attack. Si l'utilisateur dispose d'autorisations suffisantes pour exécuter la nouvelle instruction SQL, cela risque de générer des résultats indésirables sur le serveur.If the user has sufficient permissions to execute the new SQL statement, it may produce unwanted results on the server.

Si un paramètre de rapport n'est pas lié à un paramètre de requête et les valeurs de paramètre sont incluses dans le rapport, l'utilisateur d'un rapport peut taper la syntaxe de l'expression ou une URL dans la valeur de paramètre et rendre le rapport au format Excel ou HTML.If a report parameter is not tied to a query parameter and the parameter values are included in the report, it is possible for a report user to type expression syntax or a URL into the parameter value and render the report to Excel or HTML. Si un autre utilisateur affiche ensuite le rapport et clique sur le contenu du paramètre de rendu, celui-ci peut exécuter accidentellement le lien ou le script malveillant.If another user then views the report and clicks the rendered parameter contents, the user may inadvertently execute the malicious script or link.

Pour réduire le risque d'exécution accidentelle de scripts malveillants, ouvrez les rapports rendus uniquement à partir de sources approuvées.To mitigate the risk of inadvertently running malicious scripts, open rendered reports only from trusted sources.

Note

Les versions précédentes de la documentation contenaient un exemple de création d'une requête dynamique en tant qu'expression.In previous releases of the documentation, an example of creating a dynamic query as an expression was included. Ce type de requête crée une vulnérabilité aux attaques par injection SQL ; il est par conséquent déconseillé.This type of query creates a vulnerability to SQL injection attacks and therefore is not recommended.

Sécurisation des rapports confidentielsSecuring Confidential Reports

Les rapports qui contiennent des informations confidentielles doivent être sécurisés au niveau de l'accès aux données, en exigeant des utilisateurs qu'ils s'identifient pour accéder à des données sensibles.Reports that contain confidential information should be secured at the data-access level, by requiring users to provide credentials to access sensitive data. Pour plus d’informations, consultez Spécifier des informations d’identification et de connexion pour les sources de données de rapport.For more information, see Specify Credential and Connection Information for Report Data Sources. Vous pouvez également sécuriser un dossier pour le rendre inaccessible aux utilisateurs non autorisés.You can also secure a folder to make it inaccessible to unauthorized users. Pour plus d’informations, consultez Dossiers sécurisés.For more information, see Secure Folders.

Voir aussiSee Also

Créer et gérer des attributions de rôles Create and Manage Role Assignments
Configurer l'accès au Générateur de rapports Configure Report Builder Access
Octroi d'autorisations sur un serveur de rapports en mode natif Granting Permissions on a Native Mode Report Server
Sécuriser les éléments de source de données partagée Secure Shared Data Source Items
Stocker des informations d’identification dans une Source de données Reporting Services Store Credentials in a Reporting Services Data Source