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.
Jeder Code, der von einem Berichtsserver ausgeführt wird, muss Teil einer bestimmten Codezugriffssicherheitsrichtlinie sein. Diese Sicherheitsrichtlinien bestehen aus Codegruppen, die Nachweise einer Gruppe benannter Berechtigungssätze zuordnen. Häufig werden Codegruppen einem benannten Berechtigungssatz zugeordnet, der die zulässigen Berechtigungen für Code in dieser Gruppe angibt. Die Laufzeit verwendet Nachweise, die von einem vertrauenswürdigen Host oder vom Ladeprogramm bereitgestellt werden, um zu bestimmen, zu welchen Codegruppen der Code gehört, und daher welche Berechtigungen zum Erteilen des Codes. Reporting Services hält diese Sicherheitsrichtlinienarchitektur gemäß der Definition der Common Language Runtime (CLR) von Microsoft .NET Framework ein. In den folgenden Abschnitten werden die verschiedenen Codetypen in Reporting Services und die ihnen zugeordneten Richtlinienregeln beschrieben.
Berichtsserverassemblys
Berichtsserverassemblys sind solche, die Code enthalten, der Teil des Reporting Services-Produkts ist. Reporting Services wird mithilfe von Assemblys mit verwaltetem Code geschrieben; Alle diese Assemblys sind stark benannt (d. a. digital signiert). Die Codegruppen für diese Assemblys werden mithilfe der StrongNameMembershipCondition definiert, die Anhand von Informationen zu öffentlichen Schlüsseln für den starken Namen der Assembly Nachweise bereitstellt. Der Codegruppe wird der Berechtigungssatz "FullTrust " gewährt.
Berichtsservererweiterungen (Rendering, Daten, Übermittlung und Sicherheit)
Berichtsservererweiterungen sind benutzerdefinierte Daten-, Übermittlungs-, Rendering- und Sicherheitserweiterungen, die Sie oder andere Drittanbieter erstellen, um die Funktionalität von Reporting Services zu erweitern. Sie müssen fullTrust diesen Erweiterungen oder Assemblycode in den Richtlinienkonfigurationsdateien erteilen, die der Reporting Services-Komponente zugeordnet sind, die Sie erweitern. Als Teil von Reporting Services ausgelieferte Erweiterungen werden mit dem öffentlichen Schlüssel des Berichtsservers signiert und erhalten den FullTrust-Berechtigungssatz .
Von Bedeutung
Sie müssen die Reporting Services-Richtlinienkonfigurationsdateien ändern, um FullTrust für alle Erweiterungen von Drittanbietern zuzulassen. Wenn Sie keine Codegruppe mit FullTrust für Ihre benutzerdefinierten Erweiterungen hinzufügen, können sie nicht vom Berichtsserver verwendet werden.
Weitere Informationen zu den Richtlinienkonfigurationsdateien in Reporting Services finden Sie unter Verwenden von Reporting Services-Sicherheitsrichtliniendateien.
In Berichten verwendete Ausdrücke
Berichtsausdrücke sind Inlinecodeausdrücke oder benutzerdefinierte Methoden, die im Code-Element einer Berichtsdefinitionssprachendatei enthalten sind. Es gibt eine Codegruppe, die bereits in den Richtliniendateien konfiguriert ist, die diesen Ausdrücken standardmäßig die Ausführungsberechtigung erteilt. Die Codegruppe sieht wie folgt aus:
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="Execution"
Name="Report_Expressions_Default_Permissions"
Description="This code group grants default permissions for code in report expressions and Code element. ">
<IMembershipCondition
class="StrongNameMembershipCondition"
version="1"
PublicKeyBlob="002400..."
/>
</CodeGroup>
Mit der Ausführungsberechtigung kann Code ausgeführt (ausgeführt), aber keine geschützten Ressourcen verwendet werden. Alle In einem Bericht gefundenen Ausdrücke werden in einer Assembly (als "Ausdruckshost"-Assembly bezeichnet) kompiliert, die als Teil des kompilierten Berichts gespeichert wird. Wenn der Bericht ausgeführt wird, lädt der Berichtsserver die Hostassembly des Ausdrucks und führt Aufrufe an diese Assembly aus, um Ausdrücke auszuführen. Ausdruckshostassemblys werden mit einem bestimmten Schlüssel signiert, der zum Definieren der Codegruppe für alle Ausdruckshosts verwendet wird.
Berichtsausdrücke verweisen auf Berichtsobjektmodellsammlungen (Felder, Parameter usw.) und führen einfache Aufgaben wie arithmetische und Zeichenfolgenvorgänge aus. Code, der diese einfachen Vorgänge ausführt, erfordert nur die Ausführungsberechtigung . Standardmäßig werden benutzerdefinierte Methoden im Code-Element und allen benutzerdefinierten Assemblys die Ausführungsberechtigung in Reporting Services erteilt. Daher ist für die meisten Ausdrücke die aktuelle Konfiguration nicht erforderlich, dass Sie Sicherheitsrichtliniendateien ändern. Um zusätzliche Berechtigungen für Ausdruckshostassemblys zu erteilen, muss ein Administrator die Richtlinienkonfigurationsdateien des Berichtsservers und Berichts-Designers ändern und die Codegruppe für Berichtsausdrücke ändern. Da es sich um eine globale Einstellung handelt, wirkt sich das Ändern von Standardberechtigungen für die Ausdruckshosts auf alle Berichte aus. Aus diesem Grund wird dringend empfohlen, den gesamten Code zu platzieren, der zusätzliche Sicherheit in einer benutzerdefinierten Assembly erfordert. Nur dieser Assembly werden die erforderlichen Berechtigungen erteilt.
Von Bedeutung
Code, der externe Assemblys oder geschützte Ressourcen aufruft, sollte in eine benutzerdefinierte Assembly für die Verwendung in Berichten integriert werden. Dadurch erhalten Sie mehr Kontrolle über die von Ihrem Code angeforderten und bestätigten Berechtigungen. Sie sollten keine Aufrufe an sichere Methoden innerhalb des Code-Elements ausführen. Auf diese Weise müssen Sie dem Berichtsausdruckshost FullTrust gewähren und allen benutzerdefinierten Code vollzugriff auf die CLR gewähren.
Vorsicht
Erteilen Sie der Codegruppe für einen Berichtsausdruckshost nicht FullTrust . Wenn Sie dies tun, aktivieren Sie alle Berichtsausdrücke, um geschützte Systemaufrufe zu tätigen.
Benutzerdefinierte Assemblys, auf die in Berichten verwiesen wird
Einige Berichtsausdrücke können Codeassemblys von Drittanbietern aufrufen, auch in Reporting Services als benutzerdefinierte Assemblys bezeichnet. Der Berichtsserver erwartet, dass diese Assemblys mindestens die Ausführungsberechtigung in den Richtlinienkonfigurationsdateien besitzen. Standardmäßig gewähren Richtliniendateien, die mit Reporting Services ausgeliefert werden, allen Assemblys ab der Zone "Mein Computer" die Ausführungsberechtigung . Sie können bei Bedarf zusätzliche Berechtigungen für benutzerdefinierte Assemblys erteilen.
In einigen Fällen müssen Sie möglicherweise einen Vorgang ausführen, der bestimmte Codeberechtigungen in einem Berichtsausdruck erfordert. Dies bedeutet in der Regel, dass ein Berichtsausdruck einen Aufruf einer gesicherten CLR-Bibliotheksmethode ausführen muss (z. B. eine, die auf Dateien oder die Systemregistrierung zugreift). In der .NET Framework-Dokumentation werden die Codeberechtigungen beschrieben, die erforderlich sind, um diesen sicheren Aufruf zu tätigen. um den Aufruf auszuführen, muss dem aufrufenden Code diese spezifischen, sicheren Berechtigungen erteilt werden. Wenn Sie den Aufruf aus einem Berichtsausdruck oder dem Code-Element ausführen, muss der Ausdruckshostassembly die entsprechenden Berechtigungen erteilt werden. Nachdem Sie dem Ausdruckshost jedoch die Berechtigungen erteilt haben, wird nun der gesamte Code, der in einem beliebigen Ausdruck in einem Bericht ausgeführt wird, dieser bestimmten Berechtigung erteilt. Es ist viel sicherer, den Aufruf aus einer benutzerdefinierten Assembly zu tätigen und dieser benutzerdefinierten Assembly die spezifischen Berechtigungen zu gewähren.
Siehe auch
Code Access Security in Reporting Services (Codezugriffssicherheit in Reporting Services)
Sichere Entwicklung (Reporting Services)