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 |
---|---|
Zugriff auf Ressourcen in ASP.NET-Hostumgebungen. |
|
Zugriff auf die System.DirectoryServices-Klassen. |
|
Zugriff auf DNS-Server (Domain Name System) in einem Netzwerk. |
|
Lesen aus und Schreiben in Umgebungsvariablen. |
|
Lesen aus und Schreiben in Ereignisprotokolldienste. |
|
Lesen aus und Schreiben in Dateien mittels eines Dialogfelds Öffnen. |
|
Lesen aus und Schreiben in Dateien oder Verzeichnisse. |
|
Lesen aus und Schreiben in Dateien oder Verzeichnisse in isoliertem Speicher. |
|
Zugreifen auf Meldungswarteschlangen über die verwalteten Message Queuing-Schnittstellen (auch bekannt als MSMQ). |
|
Zugreifen auf ODBC-Datenquellen (Open Database Connectivity). |
|
Zugreifen auf Datenbanken über OLE DB. |
|
Zugreifen auf Oracle-Datenbanken. |
|
Zugreifen auf Leistungsindikatoren. |
|
Zugreifen auf Drucker. |
|
Bestimmen von Informationen über einen Typ zur Laufzeit. |
|
Lesen, Schreiben, Erstellen oder Löschen von Registrierungsschlüsseln und -werten. |
|
Ausführen, Assert-Berechtigungen, Aufrufen von nicht verwaltetem Code, Überspringen der Überprüfung und weitere sicherheitsrelevante Rechte. |
|
Zugreifen auf ausgeführte oder beendete Dienste. |
|
Herstellen oder Akzeptieren von Verbindungen über eine Transportadresse. |
|
Zugreifen auf SQL-Datenbanken. |
|
Zugreifen auf Funktionen der Benutzeroberfläche. |
|
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.
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 |
|
Festlegen einer Sicherheitsrichtlinie auf Anwendungsdomänenebene |
Festlegen von Sicherheitsrichtlinien auf Anwendungsdomänenebene |
Konfigurieren einer Anwendungsdomäne |
|
Aufrufen von Funktionen in einer bestimmten Anwendungsdomäne |
|
Abrufen von Setupinformationen aus einer Anwendungsdomäne |
|
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)