Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Standaard draait aangepaste assemblycode met de beperkte Execution-permissie. In sommige gevallen wil je misschien een aangepaste assembly implementeren die beveiligde oproepen maakt naar beschermde bronnen binnen je beveiligingssysteem (zoals een bestand of het register). Om dit te bereiken, moet u de volgende acties ondernemen:
Identificeer precies welke rechten je code nodig heeft om de beveiligde oproep te kunnen maken. Als deze methode deel uitmaakt van een Microsoft .NET Framework-bibliotheek, moet deze informatie worden opgenomen in de methodedocumentatie.
Pas de configuratiebestanden van het rapportserverbeleid aan om de aangepaste assembly de vereiste rechten te geven. Voor meer informatie over de configuratiebestanden van het beveiligingsbeleid, zie Using Reporting Services Security Policy Files.
Claim de vereiste rechten als onderdeel van de methode waarmee de beveiligde aanroep wordt uitgevoerd. Dit is vereist omdat de aangepaste assemblycode die door de report server wordt aangeroepen deel uitmaakt van de host assembly van de report expression, die standaard met Execution permission draait. De Execution-permissie-set maakt het mogelijk om code uit te voeren, maar niet om beschermde resources te gebruiken.
Markeer de aangepaste assembly met AllowPartiallyTrustedCallersAttribute als deze met een sterke naam is ondertekend. Dit is vereist omdat aangepaste assemblies worden aangeroepen vanuit een rapportexpressie die deel uitmaakt van de host assembly van de rapportageexpressie, die standaard geen FullTrust krijgt; Dus het is een "gedeeltelijk vertrouwde" beller. Voor meer informatie, zie Gebruik Strong-Named Aangepaste Assemblies.
Implementeer een Secure Call
Je kunt de beleidsconfiguratiebestanden aanpassen om je assembly-specifieke rechten te geven. Als je bijvoorbeeld een aangepaste assembly schrijft om valutaconversie te verwerken, moet je mogelijk de huidige valutawisselkoersen uit een bestand lezen. Om de snelheidsinformatie op te halen, moet je een extra beveiligingsrecht, FileIOPermission, toevoegen aan je permissie-set voor de assembly. U kunt de volgende extra invoer maken in het beleidsconfiguratiebestand:
<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>
Vervolgens voeg je een codegroep toe die naar die permissieset verwijst:
<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>
Om de juiste toestemming te verkrijgen voor je code, moet je die toestemming in je aangepaste assemblycode claimen. Als je bijvoorbeeld alleen-lezen toegang wilt toevoegen aan een XML-bestand, C:\CurrencyRates.xml, moet je de volgende code aan je methode toevoegen:
// 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");
...
Je kunt de bewering ook toevoegen als een methode-attribuut:
[FileIOPermissionAttribute(SecurityAction.Assert, Read=@"C:\CurrencyRates.xml")]
Voor meer informatie, zie ".NET Framework Security" in de .NET Framework Developer's Guide.