Hostschutzattribute und CLR-Integrationsprogrammierung
Gilt für:SQL Server
Die Common Language Runtime (CLR) stellt einen Mechanismus zum Kommentieren verwalteter Anwendungsprogrammierschnittstellen (APPLICATION Programming Interfaces, APIs) bereit, die Teil von .NET Framework sind. Diese Attribute sind möglicherweise für einen Host der CLR interessant, z. B. SQL Server. Beispiele für solche Hostschutzattribute sind:
SharedState
, der angibt, ob die API die Möglichkeit zum Erstellen oder Verwalten des freigegebenen Zustands (z. B. statische Klassenfelder) verfügbar macht.Synchronization
, der angibt, ob die API die Möglichkeit zur Ausführung der Synchronisierung zwischen Threads verfügbar macht.ExternalProcessMgmt
, der angibt, ob die API eine Möglichkeit zum Steuern des Hostprozesses verfügbar macht.
Aufgrund dieser Attribute gibt SQL Server eine Liste von HPAs an, die in der gehosteten Umgebung durch Codezugriffssicherheit (CAS) unzulässig sind. Die CAS-Anforderungen werden durch einen von drei SQL Server-Berechtigungssätzen angegeben: SAFE
, EXTERNAL_ACCESS
oder UNSAFE
. Eine dieser drei Sicherheitsstufen wird angegeben, wenn die Assembly auf dem Server mithilfe der CREATE ASSEMBLY
-Anweisung registriert ist. Code, der innerhalb der SAFE
oder EXTERNAL_ACCESS
Berechtigungssätze ausgeführt wird, muss bestimmte Typen oder Member vermeiden, auf die das attribut System.Security.Permissions.HostProtectionAttribute
angewendet wurde. Weitere Informationen finden Sie unter Erstellen einer Assembly und CLR-Integrationsprogrammiermodelleinschränkungen.
Die HostProtectionAttribute
ist keine Sicherheitsberechtigung, da sie bestimmte Codekonstrukte, Typen oder Methoden identifiziert, die der Host möglicherweise nicht zulassen kann, um die Zuverlässigkeit zu verbessern. Die Verwendung der HostProtectionAttribute
erzwingt ein Programmiermodell, das die Stabilität des Hosts schützt.
Hostschutzattribute
HPAs identifizieren Typen oder Member, die nicht in das Hostprogrammiermodell passen, und stellen die folgenden zunehmenden Zuverlässigkeitsrisiken dar:
- 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 verbietet die Verwendung eines Typs oder Elements mit einem HostProtectionAttribute
, der eine System.Security.Permissions.HostProtectionResource
Enumeration mit dem Wert ExternalProcessMgmt
, ExternalThreading
, MayLeakOnAbort
, SecurityInfrastructure
, SelfAffectingProcessMgmnt
, SelfAffectingThreading
, SharedState
, Synchronization
oder UI
angibt. 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 Artikeln werden Typen und Member identifiziert, deren HostProtectionResource
Werte SQL Server unzulässig ist.
Die Listen in diesen Artikeln wurden aus den unterstützten Assemblys generiert. Weitere Informationen finden Sie unter Unterstützten .NET Framework-Bibliotheken.
In diesem Abschnitt
Artikel | Beschreibung |
---|---|
Unzulässige Typen und Member in Microsoft.VisualBasic.dll | Listet die Typen und Elemente in Microsoft.VisualBasic.dll auf, deren Hostschutzattributwerte nicht zugelassen werden. |
Unzulässige Typen und Member in mscorlib.dll | Listet die Typen und Elemente in mscorlib.dll auf, deren Hostschutzattributwerte nicht zugelassen werden. |
Unzulässige Typen und Member in System.dll | Listet die Typen und Elemente in System.dll auf, deren Hostschutzattributwerte nicht zugelassen werden. |
Unzulässige Typen und Member in System.Data.dll | Listet die Typen und Elemente in System.Data.dll auf, deren Hostschutzattributwerte nicht zugelassen werden. |
Unzulässige Typen und Member in System.Core.dll | Listet die Typen und Elemente in System.Core.dll auf, deren Hostschutzattributwerte nicht zugelassen werden. |