Anfordern von Berechtigungen

Aktualisiert: November 2007

Durch das Anfordern von Berechtigungen können Sie die Laufzeit informieren, welche Operationen für Code zulässig sein sollen. Sie fordern Berechtigungen für eine Assembly an, indem Sie Attribute (deklarative Syntax) im Gültigkeitsbereich der Assembly des Codes platzieren. Nach Erstellen der Assembly speichert der Sprachcompiler die angeforderten Berechtigungen im Assemblymanifest. Zur Ladezeit untersucht die Laufzeit die Berechtigungsanforderungen und wendet Regeln der Sicherheitsrichtlinie an, um zu bestimmen, welche Berechtigungen der Assembly gewährt werden sollen. Anforderungen können nur bewirken, dass die Laufzeit Code Berechtigungen verweigert. Sie bewirken nicht, dass die Laufzeit dem Code zusätzliche Berechtigungen erteilt. Die endgültige Kontrolle über die maximalen Berechtigungen, die Code erteilt werden können, liegt stets bei der lokalen Verwaltungsrichtlinie.

Obwohl Code zum Kompilieren nicht unbedingt Berechtigungen anfordern muss, gibt es für das Anfordern von Berechtigungen durch Code wichtige Gründe:

  • Das Anfordern von Berechtigungen erhöht die Wahrscheinlichkeit, dass der Code ordnungsgemäß ausgeführt wird, wenn die Ausführung zulässig ist. Code, der einen Mindestsatz von Berechtigungen erfordert, wird ohne den Erhalt dieser Berechtigungen nicht ausgeführt. Wenn Sie keinen Mindestberechtigungssatz angeben, muss der Code sämtliche Situationen ordnungsgemäß behandeln, es sei denn, dass er durch fehlende Berechtigungen an der Ausführung gehindert wird.

  • Das Anfordern von Berechtigungen trägt dazu bei, dass dem Code nur die erforderlichen Berechtigungen erteilt werden. Wenn dem Code keine zusätzlichen Berechtigungen erteilt werden, kann er keine Ressourcen beschädigen, die durch diese zusätzlichen Berechtigungen geschützt sind, selbst wenn ein Missbrauch durch bösartigen Code vorliegt oder der Code Fehler enthält, die zur Beschädigung von Ressourcen führen können. Sie sollten über die erforderlichen Berechtigungen für den Code hinaus keine Berechtigungen anfordern.

  • Das Anfordern von Berechtigungen informiert Administratoren über die Mindestberechtigungen, die für die Anwendung benötigt werden, sodass sie die Sicherheitsrichtlinien entsprechend anpassen können. Administratoren können mit dem Permissions View-Tool (Permview.exe) Assemblys untersuchen und die Sicherheitsrichtlinie so einrichten, dass die erforderlichen Berechtigungen gewährt werden. Wenn Sie die erforderlichen Berechtigungen für die Anwendung nicht explizit anfordern, kann Permissions View keine Informationen über die benötigten Berechtigungen für die Anwendung zurückgeben. Die Verwaltung der Anwendung ist schwierig, wenn dem Administrator diese Informationen nicht bekannt sind.

Durch das Anfordern von Berechtigungen wird die Laufzeit informiert, welche Berechtigungen für die ordnungsgemäße Ausführung der Anwendung erforderlich sind und welche nicht gewünscht werden. Greift eine Anwendung beispielsweise auf die lokale Festplatte ohne isolierte Speicherung zu, ist dafür FileIOPermission erforderlich. Wenn der Code FileIOPermission nicht anfordert und die lokalen Sicherheitseinstellungen diese Berechtigung für die Anwendung nicht zulassen, wird eine Sicherheitsausnahme ausgelöst, wenn die Anwendung versucht, auf die Festplatte zu schreiben. Selbst wenn die Anwendung die Ausnahme behandeln kann, ist das Schreiben auf die Festplatte nicht möglich. Dieses Verhalten kann für einen Benutzer ärgerlich sein, beispielsweise, wenn es sich bei der Anwendung um einen Text-Editor handelt, mit dem er bereits seit längerer Zeit arbeitet. Wenn die Anwendung jedoch FileIOPermission anfordert und die lokalen Sicherheitseinstellungen FileIOPermission für die Anwendung nicht zulassen, generiert die Anwendung diese Ausnahme beim Start, und dem Benutzer kann keine Arbeit verloren gehen. Wenn die Anwendung FileIOPermission anfordert und es sich um eine vertrauenswürdige Anwendung handelt, kann der Administrator die Sicherheitsrichtlinie so anpassen, dass die Ausführung von der Remotefreigabe zulässig ist.

Wenn der Code nicht auf geschützte Ressourcen zugreift oder geschützte Operationen ausführt, müssen keine Berechtigungen angefordert werden. Eine Berechtigungsanforderung ist z. B. nicht erforderlich, wenn der Code lediglich ein Ergebnis aus den an ihn übergebenen Eingaben berechnet, ohne dabei Ressourcen zu verwenden. Wenn der Code auf geschützte Ressourcen zugreift, jedoch nicht die erforderlichen Berechtigungen anfordert, kann die Ausführung trotzdem zulässig sein. Sie kann jedoch an einem bestimmten Punkt fehlschlagen, wenn auf eine Ressource zugegriffen werden soll, für die keine Berechtigungen bestehen.

Zum Anfordern von Berechtigungen müssen Sie wissen, welche Ressourcen und geschützten Operationen der Code verwendet sowie welche Berechtigungen diese Ressourcen und Operationen schützen. Darüber hinaus müssen Sie sämtliche Ressourcen verfolgen, auf die von Methoden der Klassenbibliotheken zugegriffen wird, die von den Komponenten aufgerufen werden. Eine Liste der Codezugriffsberechtigungen in .NET Framework finden Sie im Abschnitt Berechtigungen.

In der folgenden Tabelle werden die Typen der Berechtigungsanforderungen beschrieben.

Berechtigungsanforderung

Beschreibung

Mindestberechtigungen (RequestMinimum)

Berechtigungen, über die der Code zum Ausführen verfügen muss.

Optionale Berechtigungen (RequestOptional)

Berechtigungen, die der Code verwenden kann, die jedoch für die effiziente Ausführung nicht erforderlich sind. Diese Anforderung weist implizit alle anderen nicht speziell angeforderten Berechtigungen zurück.

Verweigerte Berechtigungen (RequestRefuse)

Berechtigungen, die dem Code keinesfalls erteilt werden sollen, selbst wenn die Sicherheitsrichtlinie die Erteilung zulässt.

Ausführen einer der oben aufgeführten Anforderungen für integrierte Berechtigungssätze (Anfordern von integrierten Berechtigungssätzen).

Integrierte Berechtigungssätze, u. a. Nothing, Execution, FullTrust, Internet, LocalIntranet und SkipVerification.

Ausführen einer der oben aufgeführten Anforderungen für XML-codierte Berechtigungssätze (Anfordern von codierten XML-Berechtigungen).

XML-Darstellung eines gewünschten Berechtigungssatzes, entweder eine Zeichenfolge mit dem XML-codierten Berechtigungssatz oder der Speicherort einer XML-Datei mit dem codierten Berechtigungssatz.

Wenn Sie die benötigten Berechtigungen mithilfe von RequestMinimum angeben, wird dem Code jede erforderliche Berechtigung erteilt, die von der Sicherheitsrichtlinie zugelassen wird. Die Ausführung des Codes ist nur zulässig, wenn ihm alle erforderlichen Berechtigungen erteilt werden.

Die Anforderung optionaler Berechtigungen ohne die Anforderung der erforderlichen Berechtigungen kann die einer Assembly erteilten Berechtigungen in einigen Fällen erheblich einschränken. Angenommen, die Sicherheitsrichtlinie erteilt normalerweise Assembly A die Berechtigungen, die dem benannten Berechtigungssatz Everything zugewiesen sind. Wenn der Entwickler von Assembly A Berechtigung A als optional anfordert und keine erforderlichen Berechtigungen anfordert, wird Assembly A entweder die Berechtigung A erteilt (sofern die Sicherheitsrichtlinien dies zulassen), oder ihr werden gar keine Berechtigungen erteilt.

Siehe auch

Aufgaben

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

Konzepte

Grundlagen der Codezugriffssicherheit

Assemblymanifest

Sicherheitsberechtigungen

Anfordern von codierten XML-Berechtigungen

Sicherheitsrichtlinie

Referenz

FileIOPermission

SecurityAction.RequestMinimum

SecurityAction.RequestOptional

RequestRefuse

Weitere Ressourcen

Codezugriffssicherheit