Freigeben über


Hostschutzattribute und Programmierung der CLR-Integration

Die CLR (Common Language Runtime) stellt Mechanismen zur Verfügung, um verwaltete Anwendungsprogrammierschnittstellen (Application Programming Interfaces, APIs), die Teil von .NET Framework sind, mit Anmerkungen in Form von bestimmten Attributen zu versehen, die für einen Host der CLR, wie SQL Server ab SQL Server 2005, von Interesse sein können. Beispiele für solche Hostschutzattribute sind:

  • SharedState, das angibt, ob die API die Fähigkeit zur Verfügung stellt, einen Freigabezustand (z. B. statische Klassenfelder) zu erstellen oder zu verwalten.

  • Synchronization, das angibt, ob die API die Fähigkeit zur Verfügung stellt, die Synchronisierung zwischen Threads auszuführen.

  • ExternalProcessMgmt, das angibt, ob die API eine Möglichkeit zur Kontrolle des Hostprozesses zur Verfügung stellt.

Anhand dieser Attribute gibt SQL Server eine Liste mit Hostschutzattributen an, die in der gehosteten Umgebung von der Codezugriffssicherheit (CAS) nicht zugelassen werden. Die CAS-Anforderungen werden von einem von drei SQL Server-Berechtigungssätzen angegeben: SAFE, EXTERNAL_ACCESS oder UNSAFE. Eine dieser drei Sicherheitsebenen wird beim Registrieren der Asssembly auf dem Server mit der CREATE ASSEMBLY-Anweisung festgelegt. Bei der Codeausführung innerhalb der Berechtigungssätze SAFE oder EXTERNAL_ACCESS müssen bestimmte Typen oder Elemente, auf die das System.Security.Permissions.HostProtectionAttribute-Attribut angewendet wurde, vermieden werden. Weitere Informationen finden Sie unter Erstellen von Assemblys und Beschränkungen des Programmiermodells für die CLR-Integration.

Das HostProtectionAttribute ist keine Sicherheitsberechtigung, sondern eher eine Möglichkeit zur Verbesserung der Zuverlässigkeit, da es bestimmte Codekonstrukte (Typen oder Methoden) erkennt, die für den Host möglicherweise nicht zulässig sind. Die Verwendung des HostProtectionAttribute erzwingt ein Programmiermodell, mit dem die Stabilität des Hosts besser geschützt werden kann.

Hostschutzattribute

Hostschutzattribute geben die Typen oder Elemente an, die sich nicht für das Hostprogrammiermodell eignen und die folgenden Zuverlässigkeitsrisiken darstellen (ansteigende Gefährdung):

  • Sie sind andernfalls ohne Auswirkung.

  • Sie können zur Destabilisierung von serververwaltetem Benutzercode führen.

  • Sie können zur Destabilisierung des Serverprozesses führen.

SQL Server lässt keinen Typ oder Element mit einem HostProtectionAttribute zu, das eine System.Security.Permissions.HostProtectionResource-Enumeration mit dem Wert ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization oder UI angibt. Dies verhindert, dass Assemblys Elemente aufrufen, die die Freigabe des Zustands aktivieren, Synchronisierungen durchführen, einen Ressourcenverlust bei der Beendigung hervorrufen oder die Integrität des SQL Server-Prozesses beeinträchtigen.

Unzulässige Typen und Elemente

In den folgenden Themen sind Typen und Elemente aufgeführt, deren HostProtectionResource-Werte in SQL Server nicht zulässig sind.

HinweisHinweis

Die Listen in diesen Themen wurden von den unterstützten Assemblys generiert. Weitere Informationen finden Sie unter Unterstützte .NET Framework-Bibliotheken.

In diesem Abschnitt

Siehe auch

Konzepte

CLR-Integration und Codezugriffssicherheit

Beschränkungen des Programmiermodells für die CLR-Integration

Erstellen von Assemblys