Freigeben über


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_ACCESSoder 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, MayLeakOnAbortSecurityInfrastructure, SelfAffectingProcessMgmnt, SynchronizationSelfAffectingThreadingSharedStateoder UIangibt, 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