Hostschutzattribute und Programmierung der CLR-Integration
Die CLR (Common Language Runtime) stellt Mechanismen zur Verfügung, um verwaltete Schnittstellen für die Anwendungsprogrammierung (Application Programming Interfaces oder API), 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, interessant 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.
Hinweis |
---|
Die Listen in diesen Themen wurden aus den unterstützten Assemblys der .NET Framework-Version 2.0 SP1 generiert. Weitere Informationen finden Sie unter Unterstützte .NET Framework-Bibliotheken. |
In diesem Abschnitt
Unzulässige Typen und Elemente in "Microsoft.VisualBasic.dll"
Listet die Typen und Elemente in Microsoft.VisualBasic.dll auf, deren Hostschutzattributwerte nicht zulässig sind.Unzulässige Typen und Elemente in "mscorlib.dll"
Listet die Typen und Elemente in mscorlib.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.Unzulässige Typen und Elemente in "System.dll"
Listet die Typen und Elemente in System.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.Unzulässige Typen und Elemente in "System.Data.dll"
Listet die Typen und Elemente in System.Data.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.Unzulässige Typen und Elemente in 'System.Core.dll'
Listet die Typen und Elemente in System.Core.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.