Freigeben über


Codezugriffsberechtigungen und -sicherheit mit Visual Basic in .NET Framework

Aktualisiert: November 2007

In .NET Framework wird der Zugriff von Code auf geschützte Ressourcen und Operationen durch die Codezugriffssicherheit eingeschränkt. Jede Anwendung für die Common Language Runtime muss mit dem Sicherheitssystem der Laufzeit interagieren. Bei der Ausführung einer Anwendung wird diese automatisch ausgewertet, und ihr wird von der Laufzeit ein Berechtigungssatz zugewiesen. In Abhängigkeit von den zugewiesenen Berechtigungen wird die Anwendung entweder ordnungsgemäß ausgeführt, oder es wird eine Sicherheitsausnahme generiert.

Die lokalen Sicherheitseinstellungen für einen bestimmten Computer entscheiden letztendlich darüber, welche Berechtigungen dem Code zugewiesen werden. Da diese Einstellungen auf jedem Computer unterschiedlich ausfallen können, können Sie nie genau wissen, ob der Code die erforderlichen Berechtigungen für die Ausführung erhält. Weitere Informationen finden Sie unter Grundlagen der Codezugriffssicherheit.

Codezugriffsberechtigungen

Codezugriffsberechtigungsobjekte werden verwendet, um Ressourcen und Operationen vor der Verwendung durch nicht autorisierte Benutzer zu schützen. Sie sind grundlegender Bestandteil der Verfahren, mit denen die Common Language Runtime Sicherheitsbeschränkungen für verwalteten Code durchsetzt.

Mit Codezugriffsberechtigungen kann ein Benutzer auf eine geschützte Ressource wie eine Datei zugreifen oder eine geschützte Aktion wie den Zugriff auf verwalteten Code ausführen. Der Code kann sämtliche Codezugriffsberechtigungen anfordern. Die Laufzeit bestimmt jedoch, ob die entsprechende Berechtigung gewährt wird. Alle Codezugriffsberechtigungen sind von der CodeAccessPermission-Klasse abgeleitet und verfügen daher über die gleichen Methoden: Assert, Demand, Deny, PermitOnly, IsSubSetOf, Intersect und Union.

Von .NET Framework bereitgestellte Berechtigungen

In dieser Tabelle sind die von .NET Framework bereitgestellten Codezugriffsberechtigungen aufgeführt.

Berechtigungsklasse

Erlaubt

AspNetHostingPermission

Zugriff auf Ressourcen in ASP.NET-Hostumgebungen.

DirectoryServicesPermission

Zugriff auf die System.DirectoryServices-Klassen.

DnsPermission

Zugriff auf DNS-Server (Domain Name System) in einem Netzwerk.

EnvironmentPermission

Lesen aus und Schreiben in Umgebungsvariablen.

EventLogPermission

Lesen aus und Schreiben in Ereignisprotokolldienste.

FileDialogPermission

Lesen aus und Schreiben in Dateien mittels eines Dialogfelds Öffnen.

FileIOPermission

Lesen aus und Schreiben in Dateien oder Verzeichnisse.

IsolatedStorageFilePermission

Lesen aus und Schreiben in Dateien oder Verzeichnisse in isoliertem Speicher.

MessageQueuePermission

Zugreifen auf Meldungswarteschlangen über die verwalteten Message Queuing-Schnittstellen (auch bekannt als MSMQ).

OdbcPermission

Zugreifen auf ODBC-Datenquellen (Open Database Connectivity).

OleDbPermission

Zugreifen auf Datenbanken über OLE DB.

OraclePermission

Zugreifen auf Oracle-Datenbanken.

PerformanceCounterPermission

Zugreifen auf Leistungsindikatoren.

PrintingPermission

Zugreifen auf Drucker.

ReflectionPermission

Bestimmen von Informationen über einen Typ zur Laufzeit.

RegistryPermission

Lesen, Schreiben, Erstellen oder Löschen von Registrierungsschlüsseln und -werten.

SecurityPermission

Ausführen, Assert-Berechtigungen, Aufrufen von nicht verwaltetem Code, Überspringen der Überprüfung und weitere sicherheitsrelevante Rechte.

ServiceControllerPermission

Zugreifen auf ausgeführte oder beendete Dienste.

SocketPermission

Herstellen oder Akzeptieren von Verbindungen über eine Transportadresse.

SqlClientPermission

Zugreifen auf SQL-Datenbanken.

UIPermission

Zugreifen auf Funktionen der Benutzeroberfläche.

WebPermission

Herstellen oder Akzeptieren von Verbindungen über eine Webadresse.

Erstellen eigener Berechtigungen

.NET Framework stellt einen Satz von Codezugriffsberechtigungsklassen bereit, die eine bestimmte Gruppe von Ressourcen und Operationen schützen. Hierbei liegt der Schwerpunkt auf den durch .NET Framework bereitgestellten Ressourcen. Die integrierten Codezugriffsberechtigungen sind für die meisten Umgebungen geeignet. In einigen Situationen empfiehlt es sich jedoch, eine eigene Klasse von Codezugriffsberechtigungen zu definieren. Weitere Informationen finden Sie unter Erstellen von eigenen Codezugriffsberechtigungen.

Identitätsberechtigungen

Identitätsberechtigungen stellen Eigenschaften dar, die eine Assembly kennzeichnen. Die Common Language Runtime erteilt einer Assembly beim Laden Identitätsberechtigungen auf Grundlage der Informationen, die sie über die Assembly abruft. Weitere Informationen finden Sie unter Identitätsberechtigungen.

Rollenbasierte Berechtigungen

Welcher Zugriff in Geschäftsanwendungen auf Daten oder Ressourcen gewährt wird, ist häufig von den Anmeldeinformationen eines Benutzers abhängig. Normalerweise überprüfen diese Anwendungen die Rolle eines Benutzers und gestatten gemäß dieser Rolle einen Ressourcenzugriff. Die Common Language Runtime unterstützt die rollenbasierte Autorisierung über ein Windows-Konto oder eine benutzerdefinierte Identität. Weitere Informationen finden Sie unter Rollenbasierte Sicherheit.

Sicherheitsaufgaben

In der folgenden Tabelle werden Aufgaben aufgeführt, die mit Berechtigungen und der Sicherheit in Zusammenhang stehen.

Aktion

Thema

Anfordern der Berechtigung zum Zugriff auf nicht verwalteten Code

Gewusst wie: Anfordern von Berechtigungen für den Zugriff auf nicht verwalteten Code

Anfordern von optionalen Berechtigungen

Gewusst wie: Anfordern optionaler Berechtigungen mit dem RequestOptional-Flag

Anfordern der Berechtigung für einen benannten Berechtigungssatz

Gewusst wie: Anfordern von Berechtigungen für einen benannten Berechtigungssatz

Anfordern von mit XML codierten Berechtigungen

Anfordern von codierten XML-Berechtigungen

Ablehnen von Berechtigungen

Gewusst wie: Ablehnen von Berechtigungen mithilfe des RequestRefuse-Flags

Ausführen einer obligatorischen Sicherheitsüberprüfung

Gewusst wie: Ausführen von obligatorischen Sicherheitsüberprüfungen

Ausführen einer deklarativen Sicherheitsüberprüfung

Durchführen deklarativer Sicherheitsüberprüfungen

Überschreiben einer Sicherheitsüberprüfung

Überschreiben von Sicherheitsüberprüfungen

Freigeben einer Bibliothek mit teilweise vertrauenswürdigem Code

Freigeben einer Bibliothek mit teilweise vertrauenswürdigem Code

Anfordern von voller Vertrauenswürdigkeit für Typen innerhalb einer AllowPartiallyTrustedCallersAttribute-Assembly

Erzwingen vollständiger Vertrauenswürdigkeit für Typen in einer AllowPartiallyTrustedCallersAttribute-Assembly

Erstellen von WindowsIdentity- und WindowsPrincipal-Objekten

Gewusst wie: Erstellen eines WindowsPrincipal-Objekts

Erstellen von GenericPrincipal- und GenericIdentity-Objekten

Gewusst wie: Erstellen von GenericPrincipal-Objekten und GenericIdentity-Objekten

Das .NET Framework-Sicherheitsrichtlinienmodell

Das .NET Framework-Sicherheitsrichtlinienmodell besteht aus fünf Elementen. Sie lauten:

  • Sicherheitsrichtlinienebenen: Organisation, Computer, Benutzer und Anwendungsdomäne.

  • Codegruppen, die in Form einer Hierarchie innerhalb des Unternehmens, der Computer und der Benutzerrichtlinienebenen vorhanden sind.

  • Benannte Berechtigungssätze, die den einzelnen Codegruppen zugeordnet sind.

  • Beweise, die Informationen über die Identität von Code bereitstellen.

  • Anwendungsdomänenhosts, die Beweise über Code für die Common Language Runtime bereitstellen.

Sicherheitsrichtlinienebenen

.NET Framework stellt vier Sicherheitsrichtlinienebenen bereit, um die einer Assembly oder Anwendungsdomäne zu gewährenden Berechtigungen zu berechnen. Jede Ebene enthält eine eigene Hierarchie von Codegruppen und Berechtigungssätzen. Die Laufzeit berechnet den zu gewährenden Berechtigungssatz als Summe aller Berechtigungen, die von allen beteiligten Ebenen in einer Richtlinie gewährt werden.

Die Ebenen sind:

  • Unternehmensrichtlinie. Gilt für sämtlichen verwalteten Code in einer Organisation mit verteilter Organisationskonfigurationsdatei.

  • Computerrichtlinie. Gilt für sämtlichen verwalteten Code auf dem Computer.

  • Benutzerrichtlinie. Gilt für Code in allen Prozessen, die beim Start der Common Language Runtime dem aktuellen Benutzer des Betriebssystems zugeordnet sind.

  • Anwendungsdomänenrichtlinie. Gilt für verwalteten Code in der Anwendungsdomäne des Hosts.

Weitere Informationen finden Sie unter Sicherheitsrichtlinienebenen.

Codegruppen

Eine Codegruppe ist eine logische Gruppierung von Code mit einer angegebenen Bedingung für die Mitgliedschaft. Jeglicher Code, der die Mitgliedschaftsbedingung erfüllt, ist in der Gruppe enthalten. Codegruppen sind Berechtigungssätze zugeordnet, die bei der Festlegung von Richtlinien ausgewertet werden. Weitere Informationen finden Sie unter Codegruppen.

Benannte Berechtigungssätze

Ein benannter Berechtigungssatz ist ein Satz von Berechtigungen, der von Administratoren einer Codegruppe zugeordnet werden kann. Ein benannter Berechtigungssatz besteht aus mindestens einer Berechtigung sowie einem Namen und einer Beschreibung für den Berechtigungssatz. Ein bestimmter Berechtigungssatz kann mehreren Codegruppen zugeordnet werden.

In dieser Tabelle werden die von der Common Language Runtime bereitgestellten benannten Berechtigungssätze aufgeführt.

Name

Beschreibung

Nothing

Keine Berechtigungen (Code kann nicht ausgeführt werden).

Execution

Berechtigung zum Ausführen, aber keine Berechtigungen zur Verwendung von geschützten Ressourcen.

Internet

Der für Inhalte unbekannten Ursprungs geeignete Berechtigungssatz in den Standardrichtlinien.

Local Intranet

Der innerhalb einer Organisation angewendete Berechtigungssatz in den Standardrichtlinien.

Everything

Alle (integrierten) Standardberechtigungen, mit Ausnahme der Berechtigung, die Überprüfung zu überspringen.

FullTrust

Uneingeschränkter Zugriff auf alle Ressourcen

Weitere Informationen finden Sie unter Benannte Berechtigungssätze.

Beweise

Beweise sind die Informationen, die die Common Language Runtime verwendet, um auf der Basis von Sicherheitsrichtlinien Entscheidungen zu treffen. Die Beweise zeigen der Laufzeit an, dass der Code über bestimmte Eigenschaften verfügt. Dazu können Anwendungsverzeichnis, Herausgeber, Site und URL zählen. Weitere Informationen finden Sie unter Beweise.

Anwendungsdomänenhosts

Jede .NET Framework-Anwendung wird in einer Anwendungsdomäne ausgeführt und von einem Host gesteuert, der die Anwendungsdomäne erstellt und Assemblys in diese lädt. Zu den Anwendungsdomänen zählen:

  • Browserhosts. Führen Code im Kontext einer Website aus.

  • Benutzerdefinierte Hosts. Erstellen Domänen und laden Assemblys (einschließlich dynamischer Assemblys) in Domänen.

  • Serverhosts. Führen Code aus, der an einen Server übermittelte Anforderungen behandelt.

  • Shellhosts. Starten Anwendungen (EXE-Dateien) aus der Shell.

In dieser Tabelle werden Aufgaben aufgeführt, die mit Anwendungsdomänen in Zusammenhang stehen:

Aktion

Thema

Erstellen einer Anwendungsdomäne

Gewusst wie: Erstellen einer Anwendungsdomäne

Festlegen einer Sicherheitsrichtlinie auf Anwendungsdomänenebene

Festlegen von Sicherheitsrichtlinien auf Anwendungsdomänenebene

Konfigurieren einer Anwendungsdomäne

Gewusst wie: Konfigurieren einer Anwendungsdomäne

Aufrufen von Funktionen in einer bestimmten Anwendungsdomäne

Calling Functions in a Specific Application Domain

Abrufen von Setupinformationen aus einer Anwendungsdomäne

Abrufen von Setupinformationen aus einer Anwendungsdomäne

Entladen einer Anwendungsdomäne

Gewusst wie: Entladen einer Anwendungsdomäne

Weitere Informationen finden Sie unter AppDomain, Anwendungsdomänenhosts und Programmieren mit Anwendungsdomänen.

Siehe auch

Aufgaben

Problembehandlung von Ausnahmen zur Codezugriffssicherheit

Konzepte

Isolation nach Benutzer, Domäne und Assembly

Weitere Ressourcen

Konfigurieren der Sicherheitsrichtlinien mit dem .NET Framework Configuration-Tool (Mscorcfg.msc)

Konfigurieren der Sicherheitsrichtlinien mit dem Sicherheitsrichtlinientool für den Codezugriff (Caspol.exe)