Codezugriffssicherheit (cas)

Definition - Was bedeutet Code Access Security (CAS)?

Code Access Security (CAS) ist ein Sicherheitsmechanismus, mit dem die Common Language Runtime (CLR) des .NET Frameworks den verwalteten Code einschränken kann, um Vorgänge mit begrenzten Berechtigungen auszuführen.

CAS erzwingt Sicherheitsrichtlinien im .NET Framework, indem unbefugter Zugriff auf geschützte Ressourcen und Vorgänge verhindert wird. Im Gegensatz zu herkömmlichen Sicherheitsmethoden, bei denen Benutzeranmeldeinformationen vom Benutzer abgerufen werden, wurde CAS entwickelt, um die Probleme zu beheben, die beim Abrufen von Code aus externen Quellen auftreten, die Fehler und Schwachstellen enthalten. Diese Fehler und Schwachstellen können das System eines Benutzers für schädlichen Code anfällig machen, der möglicherweise Aufgaben ausführt, ohne dass der Benutzer dies weiß. CAS kennt und erlaubt nur die Operationen, die der Code eines bestimmten Benutzers ausführen kann und nicht. Diese Funktion gilt für den gesamten verwalteten Code, der auf die CLR abzielt.

CAS bietet evidenzbasierte Sicherheit, die auf einer Ebene über der vom Windows-Betriebssystem bereitgestellten Sicherheit basiert. Während Windows auf den Berechtigungen des Benutzers basiert, basiert CAS auf den Nachweisen für die Assembly. Die Assembly enthält die in der Sicherheitsrichtlinie definierten Berechtigungen und bildet die Grundlage dafür, dass Code die erforderlichen Aktionen ausführen kann.

Technische.me erklärt Code Access Security (CAS)

CAS basiert unter anderem auf folgenden Elementen:

  1. Berechtigungen: Dies sind die Grundrechte, die für den Zugriff auf eine geschützte Ressource oder die Ausführung einer geschützten Operation erforderlich sind.
  2. Berechtigungssatz: Dies ist ein Satz von Berechtigungen, z. B. "volles Vertrauen", "nichts", "Internet", "lokales Intranet" und andere.
  3. Codegruppe: Dies ist eine logische Gruppierung von Code mit einer bestimmten Bedingung für die Mitgliedschaft, z. B. LocalIntranet_zone und Internet_zone.
  4. Beweis: Dies sind Assembly-bezogene Informationen wie Anwendungsverzeichnis, Herausgeber, URL und Sicherheitszone.
  5. Sicherheitsrichtlinie: Dies ist eine Reihe von Regeln, die von einem Administrator konfiguriert wurden, um die Berechtigungen zu bestimmen, die für einen Code erteilt wurden, der hierarchisch auf vier Ebenen als Unternehmens-, Computer-, Benutzer- und Anwendungsdomäne ausgedrückt wird.

Die privilegierte Operation zum Ausführen von Code erfordert von der CLR eine oder mehrere Berechtigungen. Die tatsächliche Berechtigung wird anhand der in den Codegruppen festgelegten Berechtigungsvereinigung und anschließend anhand eines Schnittpunkts auf Richtlinienebene berechnet. Die CLR stellt sicher, dass die angeforderten Berechtigungen in den erteilten Berechtigungen der Methode dieser Assembly enthalten sind. Wenn keine Berechtigung erteilt wird, wird eine Sicherheitsausnahme ausgelöst.

CAS bietet zwei Sicherheitsmodi zum Definieren von Berechtigungen für Code:

  • Deklarative Sicherheit wird implementiert, indem Sicherheitsattribute auf Assembly-, Klassen- oder Mitgliedsebene definiert werden. Der deklarative Modus wird verwendet, wenn Aufrufe zur Kompilierungszeit ausgewertet werden müssen.
  • Imperative Sicherheit verwendet Laufzeitmethodenaufrufe, um Instanzen von Sicherheitsklassen zu erstellen. Der imperative Modus wird verwendet, wenn Anrufe zur Laufzeit ausgewertet werden müssen.

CAS weist Einschränkungen auf, einschließlich der Fehlfunktion einer Anwendung, die auf ein anderes System verschoben wurde, wenn die Sicherheitsrichtlinie anders ist. Darüber hinaus gibt es keine Kontrolle über nicht verwalteten Code und keine Kontrolle über die Entwicklung von Anwendungen, um den Anforderungen verschiedener Szenarien von Sicherheitseinstellungen auf Benutzersystemen gerecht zu werden.

Um die fein abgestimmte Sicherheitstechnologie von CAS effektiv zu nutzen, sollten Entwickler typsicheren Code schreiben, deklarative oder imperative Syntax basierend auf dem Kontext verwenden, Berechtigungen aus der Laufzeit für die Ausführung von Code anfordern und sichere Bibliotheken verwenden.