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.
Par défaut, le code assembleur personnalisé s’exécute avec le jeu limité de permissions d’exécution . Dans certains cas, vous pourriez vouloir implémenter un assembleur personnalisé qui effectue des appels sécurisés vers des ressources protégées au sein de votre système de sécurité (comme un fichier ou le registre). Pour y parvenir, vous devez effectuer les actions suivantes :
Identifiez les autorisations exactes dont votre code a besoin pour effectuer l’appel sécurisé. Si cette méthode fait partie d’une bibliothèque Microsoft .NET Framework, ces informations doivent être incluses dans la documentation de la méthode.
Modifiez les fichiers de configuration des politiques du serveur de rapports afin d’accorder à l’assembleur personnalisé les autorisations requises. Pour plus d’informations sur les fichiers de configuration des politiques de sécurité, voir Utiliser les Reporting Services Security Policy Files.
Affirmer les autorisations requises dans le cadre de la méthode de l’appel sécurisé. Cela est nécessaire car le code assembleur personnalisé appelé par le serveur de rapports fait partie de l’assemblage hôte de l’expression de rapport, qui s’exécute par défaut avec la permission d’exécution . Le jeu de permissions d’exécution permet à code de s’exécuter, mais pas d’utiliser des ressources protégées.
Marquez l’assemblage personnalisé avec AllowPartiallyTrustedCallersAttribute si elle est signée avec un nom fort. Cela est nécessaire car les assemblages personnalisés sont appelés à partir d’une expression de rapport faisant partie de l’assemblage hôte de l’expression de rapport, qui, par défaut, ne bénéficie pas de FullTrust ; C’est donc un appelant « partiellement digne de confiance ». Pour plus d’informations, voir Utilisation Strong-Named assemblages personnalisés.
Implémenter un appel sécurisé
Vous pouvez modifier les fichiers de configuration de la politique pour accorder à votre assemblage des autorisations spécifiques. Par exemple, si vous écriviez un assemblage personnalisé pour gérer la conversion de devise, vous pourriez devoir lire les taux de change actuels à partir d’un fichier. Pour récupérer les informations de vitesse, il faudrait ajouter une permission de sécurité supplémentaire, FileIOPermission, à votre ensemble de permissions pour l’assemblage. Vous pouvez faire l’entrée supplémentaire suivante dans le fichier de configuration de la politique :
<PermissionSet class="NamedPermissionSet"
version="1"
Name="CurrencyRatesFilePermissionSet"
Description="A special permission set that grants read access to my currency rates file.">
<IPermission class="FileIOPermission"
version="1"
Read="C:\CurrencyRates.xml"/>
<IPermission class="SecurityPermission"
version="1"
Flags="Execution, Assertion"/>
</PermissionSet>
Vous ajoutez ensuite un groupe de code qui fait référence à cet ensemble de permissions :
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="CurrencyRatesFilePermissionSet"
Name="MyNewCodeGroup"
Description="A special code group for my custom assembly.">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\MSSQL\Reporting Services\ReportServer\bin\CurrencyConversion.dll"/>
</CodeGroup>
Pour que votre code obtienne l’autorisation appropriée, vous devez faire valoir cette autorisation dans votre code d’assemblage personnalisé. Par exemple, si vous souhaitez ajouter un accès en lecture seule à un fichier XML, C:\CurrencyRates.xml, vous devez ajouter le code suivant à votre méthode :
// C#
FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\CurrencyRates.xml");
try
{
permission.Assert();
// Load the XML currency rates file
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\CurrencyRates.xml");
...
Vous pouvez aussi ajouter l’assertion comme attribut de méthode :
[FileIOPermissionAttribute(SecurityAction.Assert, Read=@"C:\CurrencyRates.xml")]
Pour plus d'informations, consultez « .NET Framework Security » dans le Guide du développeur du .NET Framework.