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.
Codezugriffssicherheitszentren in diesen Kernkonzepten: Nachweise, Codegruppen und benannte Berechtigungssätze. In Reporting Services verfügen die Berichts-Manager-, Berichts-Designer- und Berichtsserverkomponenten über eine Richtliniendatei, die die Codezugriffssicherheit für benutzerdefinierte Assemblys sowie Daten, Übermittlung, Rendering und Sicherheitserweiterungen konfiguriert. In den folgenden Abschnitten finden Sie eine Übersicht über die Codezugriffssicherheit. Ausführlichere Informationen zu den themen, die in diesem Abschnitt behandelt werden, finden Sie unter "Sicherheitsrichtlinienmodell" in der Dokumentation zum Microsoft .NET Framework SDK.
Reporting Services verwendet Codezugriffssicherheit, da der Berichtsserver zwar auf ASP.NET Technologie basiert, aber es gibt einen wesentlichen Unterschied zwischen einer typischen ASP.NET Anwendung und dem Berichtsserver. Eine typische ASP.NET Anwendung führt keinen Benutzercode aus. Im Gegensatz dazu verwendet Reporting Services eine offene und erweiterbare Architektur, mit der Benutzer mithilfe des Codeelements der Berichtsdefinitionssprache programmieren und spezielle Funktionen in einer benutzerdefinierten Assembly für die Verwendung in Berichten entwickeln können. Darüber hinaus können Entwickler leistungsstarke Erweiterungen entwerfen und bereitstellen, die die Funktionen des Berichtsservers verbessern. Mit dieser Leistungsfähigkeit und Flexibilität ist es erforderlich, so viel Schutz und Sicherheit wie möglich zu bieten.
Reporting Services-Entwickler können jede .NET Framework-Assembly in ihren Berichten verwenden und alle Funktionen von Assemblys, die im globalen Assemblycache bereitgestellt werden, nativ aufrufen. Das einzige, was der Berichtsserver steuern kann, ist, welche Berechtigungen für Berichtsausdrücke und geladene benutzerdefinierte Assemblys erteilt werden. In Reporting Services erhalten benutzerdefinierte Assemblys standardmäßig Execute-only-Berechtigungen.
Beweise
Nachweise sind die Informationen, die die Common Language Runtime (CLR) verwendet, um eine Sicherheitsrichtlinie für Codeassemblys zu ermitteln. Nachweise deuten auf die Laufzeit hin, für die code ein bestimmtes Merkmal aufweist. Zu den allgemeinen Nachweisformen gehören digitale Signaturen und der Speicherort einer Assembly. Nachweise können auch so gestaltet werden, dass sie andere Informationen darstellen, die für die Anwendung aussagekräftig sind.
Sowohl Assemblys als auch Anwendungsdomänen erhalten Berechtigungen basierend auf Nachweisen. Der Speicherort einer Assembly, auf die Reporting Services zugreifen möchte, ist z. B. eine gängige Form von Nachweisen für schwach benannte Assemblys. Dies wird als URL-Nachweis bezeichnet. URL-Nachweise für eine benutzerdefinierte Datenverarbeitungserweiterung, die auf einem Berichtsserver bereitgestellt wird, kann "C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll" sein. Der starke Name oder die digitale Signatur einer Assembly ist eine weitere häufige Form von Beweismitteln. In diesem Fall sind die Nachweise die Öffentlichen Schlüsselinformationen für eine Assembly.
Codegruppen
Eine Codegruppe ist eine logische Gruppierung von Code, die eine angegebene Bedingung für die Mitgliedschaft aufweist. Jeder Code, der die Mitgliedschaftsbedingung erfüllt, ist in der Gruppe enthalten. Administratoren konfigurieren eine Sicherheitsrichtlinie, indem Codegruppen und die zugehörigen Berechtigungssätze verwaltet werden.
Eine Mitgliedschaftsbedingung für eine Codegruppe basiert auf Nachweisen. Beispielsweise basiert eine URL-Mitgliedschaft für eine Codegruppe auf URL-Nachweisen. Die Common Language Runtime (CLR) verwendet identifizierungsmerkmale wie URL-Nachweise, um den Code zu beschreiben und zu bestimmen, ob die Mitgliedschaftsbedingung einer Gruppe erfüllt wurde. Wenn beispielsweise die Mitgliedschaftsbedingung einer Codegruppe "Code in der Assembly C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll" lautet, überprüft die Laufzeit die Nachweise, um festzustellen, ob der Code von diesem Speicherort stammt. Ein Beispiel für einen Konfigurationseintrag für diesen Codegruppentyp könnte wie folgt aussehen:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"
/>
</CodeGroup>
Sie sollten mit Ihrem Systemadministrator oder Anwendungsbereitstellungsexperten zusammenarbeiten, um den Typ der Codezugriffssicherheit und Codegruppen zu bestimmen, die ihre benutzerdefinierten Assemblys oder Reporting Services-Erweiterungen erfordern.
Benannte Berechtigungssätze
Ein benannter Berechtigungssatz ist eine Gruppe von Berechtigungen, die Administratoren einer Codegruppe zuordnen können. Die meisten benannten Berechtigungssätze bestehen aus mindestens einer Berechtigung, einem Namen und einer Beschreibung für den Berechtigungssatz. Administratoren können benannte Berechtigungssätze verwenden, um die Sicherheitsrichtlinie für Codegruppen einzurichten oder zu ändern. Mehrere Codegruppen können demselben benannten Berechtigungssatz zugeordnet werden. Die CLR stellt integrierte benannte Berechtigungssätze bereit; darunter sind Nothing, Execution, Internet, LocalIntranet, Everything und FullTrust.
Hinweis
Benutzerdefinierte Daten-, Übermittlungs-, Rendering- und Sicherheitserweiterungen in Reporting Services müssen unter dem Berechtigungssatz "FullTrust " ausgeführt werden. Arbeiten Sie mit Ihrem Systemadministrator zusammen, um die entsprechenden Codegruppen- und Mitgliedschaftsbedingungen für Ihre Reporting Services-Erweiterungen hinzuzufügen.
Sie können eigene benutzerdefinierte Berechtigungsstufen für benutzerdefinierte Assemblys zuordnen, die Sie mit Berichten verwenden. Wenn Sie beispielsweise zulassen möchten, dass eine Assembly auf eine bestimmte Datei zugreifen kann, können Sie einen neuen benannten Berechtigungssatz mit einem bestimmten Datei-E/A-Zugriff erstellen und dann der Codegruppe die Berechtigung zuweisen. Der folgende Berechtigungssatz gewährt schreibgeschützten Zugriff auf die Datei MyFile.xml:
<PermissionSet class="NamedPermissionSet"
version="1"
Name="MyNewFilePermissionSet"
Description="A special permission set that grants read access to my file.">
<IPermission class="FileIOPermission"
version="1"
Read="C:\MyFile.xml"/>
<IPermission class="SecurityPermission"
version="1"
Flags="Assertion, Execution"/>
</PermissionSet>
Eine Codegruppe, die Sie diesem Berechtigungssatz erteilen, sieht möglicherweise wie folgt aus:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="MyNewFilePermissionSet"
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\Reporting Services\ReportServer\bin\MyCustomAssembly.dll"/>
</CodeGroup>