Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Standardmäßig läuft benutzerdefinierter Assemblercode mit der eingeschränkten Ausführungsberechtigung . In manchen Fällen möchten Sie vielleicht eine benutzerdefinierte Assembler implementieren, die sichere Aufrufe zu geschützten Ressourcen in Ihrem Sicherheitssystem (wie einer Datei oder dem Register) vornimmt. Um dies zu erreichen, müssen Sie folgende Maßnahmen ergreifen:
Identifizieren Sie genau die Berechtigungen, die Ihr Code benötigt, um den sicheren Anruf zu tätigen. Wenn diese Methode Teil einer Microsoft .NET Framework-Bibliothek ist, sollten diese Informationen in der Methodendokumentation enthalten sein.
Ändern Sie die Konfigurationsdateien der Report Server Policy, um der benutzerdefinierten Assembly die erforderlichen Berechtigungen zu gewähren. Weitere Informationen zu den Konfigurationsdateien der Sicherheitsrichtlinien finden Sie unter Using Reporting Services Security Policy Files.
Aktivieren Sie die erforderlichen Berechtigungen als Teil der Methode, mit der der sichere Aufruf durchgeführt wird. Dies ist erforderlich, da der benutzerdefinierte Assemblercode, der vom Berichtsserver aufgerufen wird, Teil der Host-Assembly des Berichtsausdrucks ist, die standardmäßig mit Ausführungsberechtigung ausgeführt wird. Das Ausführungs-Rechtenset ermöglicht Code-Ausführen, aber nicht die Nutzung geschützter Ressourcen.
Markiere die benutzerdefinierte Assembly mit AllowPartiallyTrustedCallersAttribut, wenn sie mit einem starken Namen signiert ist. Dies ist erforderlich, da benutzerdefinierte Assemblies aus einem Berichtsausdruck aufgerufen werden, der Teil der Berichtsausdrucks-Host-Assembly ist, die standardmäßig kein FullTrust erhält; Daher handelt es sich um einen "teilweise vertrauenswürdigen" Anrufer. Weitere Informationen finden Sie unter Verwendung Strong-Named benutzerdefinierten Assemblies.
Implementierung eines sicheren Aufrufs
Du kannst die Richtlinienkonfigurationsdateien so anpassen, dass sie deiner Assembler spezifische Berechtigungen gewähren. Wenn Sie zum Beispiel eine benutzerdefinierte Assembly zur Währungsumrechnung schreiben, müssen Sie möglicherweise die aktuellen Wechselkurse aus einer Datei ablesen. Um die Rate-Informationen abzurufen, müssten Sie eine zusätzliche Sicherheitsberechtigung, FileIOPermission, zu Ihrem Berechtigungssatz für die Assembly hinzufügen. Sie können folgenden zusätzlichen Eintrag in der Richtlinienkonfigurationsdatei vornehmen:
<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>
Dann fügen Sie eine Codegruppe hinzu, die auf diesen Rechtsprechungssatz verweist:
<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>
Damit dein Code die entsprechende Berechtigung erhält, musst du diese Berechtigung in deinem benutzerdefinierten Assemblercode aktivieren. Wenn Sie beispielsweise einen Schreibzugriff auf eine XML-Datei hinzufügen möchten, müssen Sie C:\CurrencyRates.xmlfolgenden Code zu Ihrer Methode hinzufügen:
// 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");
...
Sie können die Behauptung auch als Methodenattribut hinzufügen:
[FileIOPermissionAttribute(SecurityAction.Assert, Read=@"C:\CurrencyRates.xml")]
Weitere Informationen finden Sie unter ".NET Framework Security" im .NET Framework Developer's Guide.