Hostschutzattribute und Programmierung der CLR-Integration
Die Common Language Runtime (CLR) bietet einen Mechanismus zum Kommentieren verwalteter ApIs (Application Programming Interfaces), die Teil der .NET Framework sind, mit bestimmten Attributen, die für einen Host der CLR von Interesse sein können, z. B. SQL Server, beginnend mit SQL Server 2005. 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.
Angesichts dieser Attribute gibt SQL Server eine Liste der HPAs an, die in der gehosteten Umgebung durch Codezugriffssicherheit (Code Access Security, CAS) nicht zulässig sind. Die CAS-Anforderungen werden durch einen 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 einer Assembly und Einschränkungen für das Programmiermodell 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 die Verwendung eines Typs oder Members, der über einen HostProtectionAttribute
verfügt, der eine System.Security.Permissions.HostProtectionResource
-Enumeration mit dem Wert ExternalProcessMgmt
, , ExternalThreading
, MayLeakOnAbort
SecurityInfrastructure
, SelfAffectingProcessMgmnt
, Synchronization
SelfAffectingThreading
SharedState
oder UI
angibt, nicht zu. Dies verhindert, dass Assemblys Member aufrufen, die die Freigabe des Zustands aktivieren, Synchronisierungen durchführen, möglicherweise ein Ressourcenleck bei Beendigung verursachen, oder Auswirkungen auf die Integrität des SQL Server-Prozesses haben.
Unzulässige Typen und Member
In den folgenden Themen werden Typen und Member identifiziert, deren HostProtectionResource
Werte durch SQL Server nicht zulässig sind.
Hinweis
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
Unzulässige Typen und Elemente in "Microsoft.VisualBasic.dll"
Listet die Typen und Elemente in Microsoft.VisualBasic.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.
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.
Weitere Informationen
CLR-Integration und Codezugriffssicherheit
Beschränkungen des Programmiermodells für die CLR-Integration
Erstellen von Assemblys