Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Common Language Runtime (CLR) unterstützt ein Sicherheitsmodell, das als Codezugriffssicherheit für verwalteten Code bezeichnet wird. In diesem Modell werden Assemblys Berechtigungen auf Grundlage der Identität des Codes gewährt. Weitere Informationen finden Sie im Abschnitt "Code Access Security" im .NET Framework Software Development Kit.
Die Sicherheitsrichtlinie, die die Berechtigungen für Assemblys bestimmt, wird an drei verschiedenen Stellen definiert:
Computerrichtlinie: Dies ist die Richtlinie, die für den gesamten verwalteten Code gilt, der auf dem Computer ausgeführt wird, auf dem SQL Server installiert ist.
Benutzerrichtlinie: Dies ist die Richtlinie, die für verwalteten Code gilt, der von einem Prozess gehostet wird. Für den SQL Server-Dienst wird ausgeführt.
Hostrichtlinie: Dies ist die Richtlinie, die vom Host der CLR (in diesem Fall SQL Server) eingerichtet wird, der für verwalteten Code in diesem Host ausgeführt wird.
Der von der CLR unterstützte Codezugriffs-Sicherheitsmechanismus basiert auf der Annahme, dass die Laufzeit sowohl vollständig vertrauenswürdigen als auch teilweise vertrauenswürdigen Code hosten kann. Die ressourcen, die durch CLR-Codezugriffssicherheit geschützt sind, werden in der Regel von verwalteten Anwendungsprogrammierschnittstellen umschlossen, die die entsprechende Berechtigung erfordern, bevor der Zugriff auf die Ressource zugelassen wird. Die Anforderung für die Berechtigung wird nur erfüllt, wenn alle Aufrufer (auf Assemblyebene) im Aufrufstapel über die entsprechende Ressourcenberechtigung verfügen.
Der Satz von Codezugriffssicherheitsberechtigungen, die verwaltetem Code gewährt werden, wenn sie in SQL Server ausgeführt werden, gewährt eine Reihe von Berechtigungen für eine assembly, die in SQL Server geladen wurde, und der letztendliche Satz von Berechtigungen, die dem Benutzercode erteilt werden, kann durch die Richtlinien auf Benutzer- und Computerebene weiter eingeschränkt werden.
Berechtigungssätze auf SQL Server-Hostrichtlinienebene
Der Satz von Codezugriffssicherheitsberechtigungen, die Assemblys von der SQL Server-Hostrichtlinienebene gewährt werden, wird durch den Berechtigungssatz bestimmt, der beim Erstellen der Assembly angegeben wurde. Es gibt drei Berechtigungssätze: SAFEEXTERNAL_ACCESS und UNSAFE (mit der option PERMISSION_SETCREATE ASSEMBLY (Transact-SQL)) angegeben.
SQL Server. Diese Richtlinie ist nicht für die Standardanwendungsdomäne gedacht, die wirksam wäre, wenn SQL Server eine Instanz der CLR erstellt.
Die feste SQL Server-Richtlinie für Systemassemblys und die vom Benutzer angegebene Richtlinie für Benutzerassemblys.
Die feste Richtlinie für CLR-Assemblys und SQL Server-Systemassemblys gewährt ihnen voll vertrauenswürdig.
Der vom Benutzer angegebene Teil der SQL Server-Hostrichtlinie basiert auf dem Assemblybesitzer, der einen von drei Berechtigungs-Buckets für jede Assembly angibt. Weitere Informationen zu den unten aufgeführten Sicherheitsberechtigungen finden Sie im .NET Framework SDK.
SICHER
Nur interne Berechnungen und lokaler Datenzugriff sind zulässig.
SAFE ist der restriktivste Berechtigungssatz. Code, der von einer Assembly mit SAFE Berechtigungen ausgeführt wird, kann nicht auf externe Systemressourcen wie Dateien, Das Netzwerk, Umgebungsvariablen oder die Registrierung zugreifen.
SAFE Assemblys verfügen über die folgenden Berechtigungen und Werte:
| Erlaubnis | Wert(e)/Beschreibung |
|---|---|
SecurityPermission |
Execution: Berechtigung zum Ausführen von verwaltetem Code. |
SqlClientPermission |
Context connection = true, : context connection = yesNur die Kontextverbindung kann verwendet werden, und die Verbindungszeichenfolge kann nur einen Wert von "context connection=true" oder "context connection=yes" angeben.AllowBlankPassword = false: Leere Kennwörter sind nicht zulässig. |
EXTERNAL_ACCESS
EXTERNAL_ACCESS Assemblys verfügen über die gleichen Berechtigungen wie SAFE Assemblys, mit der zusätzlichen Möglichkeit, auf externe Systemressourcen wie Dateien, Netzwerke, Umgebungsvariablen und die Registrierung zuzugreifen.
EXTERNAL_ACCESS Assemblys verfügen außerdem über die folgenden Berechtigungen und Werte:
| Erlaubnis | Wert(e)/Beschreibung |
|---|---|
DistributedTransactionPermission |
Unrestricted: Verteilte Transaktionen sind zulässig. |
DNSPermission |
Unrestricted: Berechtigung zum Anfordern von Informationen von Domänennamenservern. |
EnvironmentPermission |
Unrestricted: Vollzugriff auf System- und Benutzerumgebungsvariablen ist zulässig. |
EventLogPermission |
Administer: Die folgenden Aktionen sind zulässig: Erstellen einer Ereignisquelle, Lesen vorhandener Protokolle, Löschen von Ereignisquellen oder Protokollen, Reagieren auf Einträge, Löschen eines Ereignisprotokolls, Überwachen von Ereignissen und Zugreifen auf eine Auflistung aller Ereignisprotokolle. |
FileIOPermission |
Unrestricted: Vollzugriff auf Dateien und Ordner ist zulässig. |
KeyContainerPermission |
Unrestricted: Vollzugriff auf Schlüsselcontainer ist zulässig. |
NetworkInformationPermission |
Access: Pinging ist zulässig. |
RegistryPermission |
Ermöglicht Leserechten HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIGund HKEY_USERS. |
SecurityPermission |
Assertion: Fähigkeit, zu bestätigen, dass alle Aufrufer dieses Codes über die erforderliche Berechtigung für den Vorgang verfügen.ControlPrincipal: Möglichkeit zum Bearbeiten des Prinzipalobjekts.Execution: Berechtigung zum Ausführen von verwaltetem Code.SerializationFormatter: Möglichkeit zum Bereitstellen von Serialisierungsdiensten. |
| SmtpPermission |
Access: Ausgehende Verbindungen mit SMTP-Hostport 25 sind zulässig. |
SocketPermission |
Connect: Ausgehende Verbindungen (alle Ports, alle Protokolle) für eine Transportadresse sind zulässig. |
SqlClientPermission |
Unrestricted: Vollzugriff auf die Datenquelle ist zulässig. |
StorePermission |
Unrestricted: Vollzugriff auf X.509-Zertifikatspeicher ist zulässig. |
WebPermission |
Connect: Ausgehende Verbindungen mit Webressourcen sind zulässig. |
UNSICHER
UNSAFE ermöglicht den uneingeschränkten Zugriff auf Ressourcen sowohl innerhalb als auch außerhalb von SQL Server. Code, der in einer UNSAFE Assembly ausgeführt wird, kann auch nicht verwalteten Code aufrufen.
UNSAFE Assemblys werden FullTrustangegeben.
Von Bedeutung
SAFE ist die empfohlene Berechtigungseinstellung für Assemblys, die Berechnungs- und Datenverwaltungsaufgaben ausführen, ohne auf Ressourcen außerhalb von SQL Server zuzugreifen.
EXTERNAL_ACCESS Assemblys werden standardmäßig als SQL Server-Dienstkonto ausgeführt, die Berechtigung zum Ausführen EXTERNAL_ACCESS sollte nur für Anmeldeinformationen erteilt werden, die als Dienstkonto ausgeführt werden. Aus Sicherheitsgründen sind EXTERNAL_ACCESS und UNSAFE Assemblys identisch.
EXTERNAL_ACCESS Assemblys bieten jedoch verschiedene Zuverlässigkeits- und Robustitätsschutzfunktionen, die sich nicht in UNSAFE Assemblys befinden. Durch Angeben UNSAFE des Codes in der Assembly können unzulässige Vorgänge für sql Server ausgeführt werden. Weitere Informationen zum Erstellen von CLR-Assemblys in SQL Server finden Sie unter Verwalten von CLR-Integrationsassemblys.
Zugreifen auf externe Ressourcen
Wenn ein benutzerdefinierter Typ (USER-Defined Type, UDT), eine gespeicherte Prozedur oder ein anderer Konstruktassembly mit dem SAFE Berechtigungssatz registriert ist, kann verwalteter Code, der im Konstrukt ausgeführt wird, nicht auf externe Ressourcen zugreifen. Wenn jedoch entweder die EXTERNAL_ACCESS oder UNSAFE Berechtigungssätze angegeben werden, und verwalteter Code versucht, auf externe Ressourcen zuzugreifen, wendet SQL Server die folgenden Regeln an:
| Wenn | Dann |
|---|---|
| Der Ausführungskontext entspricht einer SQL Server-Anmeldung. | Versuche, auf externe Ressourcen zuzugreifen, werden verweigert, und eine Sicherheitsausnahme wird ausgelöst. |
| Der Ausführungskontext entspricht einer Windows-Anmeldung, und der Ausführungskontext ist der ursprüngliche Aufrufer. | Auf die externe Ressource wird unter dem Sicherheitskontext des SQL Server-Dienstkontos zugegriffen. |
| Der Anrufer ist nicht der ursprüngliche Anrufer. | Der Zugriff wird verweigert, und eine Sicherheitsausnahme wird ausgelöst. |
| Der Ausführungskontext entspricht einer Windows-Anmeldung, und der Ausführungskontext ist der ursprüngliche Aufrufer und der Aufrufer wurde als Identitätswechsel bezeichnet. | Access verwendet den Sicherheitskontext des Anrufers; nicht das Dienstkonto. |
Berechtigungssatzzusammenfassung
Das folgende Diagramm fasst die Einschränkungen und Berechtigungen zusammen, die den SAFE, EXTERNAL_ACCESSund UNSAFE Berechtigungssätzen erteilt wurden.
SAFE |
EXTERNAL_ACCESS |
UNSAFE |
|
Code Access Security Permissions |
Nur ausführen | Ausführen + Zugriff auf externe Ressourcen | Uneingeschränkt (einschließlich P/Invoke) |
Programming model restrictions |
Ja | Ja | Keine Einschränkungen |
Verifiability requirement |
Ja | Ja | Nein |
Local data access |
Ja | Ja | Ja |
Ability to call native code |
Nein | Nein | Ja |
Siehe auch
Sicherheit der CLR-Integration
Hostschutzattribute und CLR-Integrationsprogrammierung
Einschränkungen des CLR-Integrationsprogrammierungsmodells
Gehostete CLR-Umgebung