2008-12-17 5 views
17

Könnte jemand bitte erklären? Ich konnte nichts im Internet finden, alles spricht davon, wie man es irgendwie machen kann, aber nichts sagt genau, was es ist.Was ist eine teilweise vertrauenswürdige Assembly/Anwendung/Code/etc in .NET?

Auch was ist eine vollständig vertrauenswürdige Baugruppe und wie unterscheiden sie sich voneinander?

Ich habe eine MS-Zertifizierungsprüfung und das ist das einzige Thema, das ich einfach nicht verstehe.

EDIT: Danke Leute. Jetzt verstehe ich die Sicherheit in .NET besser. Ich konnte meine Zertifizierungsprüfung bestehen.

Antwort

11

Ein full-trust assembly verfügt über einen uneingeschränkten Satz von code access security Berechtigungen, mit denen der Code auf alle Ressourcentypen zugreifen und privilegierte Vorgänge ausführen kann, die nur der Sicherheit des Betriebssystems unterliegen. Wenn beispielsweise Benutzer Bob nicht auf Datei Y zugreifen kann, kann auch keine vollständig vertrauenswürdige Assembly in Bobs Benutzerbereich ausgeführt werden.

Ein partial-trust assembly bedeutet, dass der Code mit weniger als voller Vertrauenswürdigkeit ausgeführt wird. Das .NET Framework verfügt über mehrere vordefinierte trust levels, die Sie direkt verwenden oder an Ihre spezifischen Sicherheitsanforderungen anpassen können. Sie können beispielsweise verhindern, dass eine Assembly auf SQL-Datenbanken zugreift, indem Sie SQLClientPermission zurückweisen.

Das Vertrauensniveau einer Baugruppe kann auch durch ihren Ursprung verringert werden. Zum Beispiel ist Code, der von einer Netzwerkfreigabe kommt (in älteren Versionen von .NET), weniger vertrauenswürdig als Code, der vom lokalen Computer kommt, und ist daher in seiner Fähigkeit eingeschränkt, privilegierte Operationen auszuführen.

15

.NET implementiert ein Sicherheitsmodell namens code access security. Nicht verwalteter Code wird mit den Berechtigungen und Rechten des Benutzers ausgeführt, der die Anwendung startet, selbst wenn der Code zufällig aus bösartigen Quellen stammt.

Der verwaltete Code muss Beweise von seinem Ursprung zur Verfügung stellen; Es gibt verschiedene Möglichkeiten, dies zu tun (z. B. Code wird mit einem bestimmten Schlüssel signiert, Code wurde von einer bestimmten URL heruntergeladen, Code lebt in einem bestimmten Verzeichnis auf der Festplatte usw.). Auf dieser Grundlage werden Assemblies in Gruppen zusammengefasst, für die Richtlinien angewendet werden. Eine Richtlinie kann einer Codegruppe bestimmte Berechtigungen gewähren, hauptsächlich im Hinblick auf den Zugriff auf Systemressourcen (Ausführen von DNS-Suchen, Öffnen von Netzwerkverbindungen, Zugriff auf "isolierten Speicher", Zugreifen auf das lokale Dateisystem (alles oder nur ausgewählte Verzeichnisse) die Registrierung, Zugriff auf Netzwerkfreigaben usw.). Es gibt ein Tool in der Systemsteuerung, mit dem Sie solche Richtlinien definieren können.

Wenn eine Assembly versucht, eine eingeschränkte Operation auszuführen, wird eine Berechtigungsprüfung durchgeführt. Wenn der Zugriff gewährt wird, wird der Vorgang fortgesetzt. Wenn die Überprüfung fehlschlägt, wird eine Ausnahme ausgelöst. Die Überprüfung beinhaltet typischerweise eine Stapelüberquerung (d. H. Alle Anrufer müssen für diese Operation vertrauenswürdig sein), aber es gibt Ausnahmen.

Als Sonderfall kann man einer Baugruppe "Full Trust" zuweisen und alle Berechtigungen gewähren. Obwohl ich den Ausdruck "teilweises Vertrauen" noch nicht gehört habe, würde ich annehmen, dass er sich auf Versammlungen bezieht, die zwar einige Rechte, aber nicht Volles Vertrauen haben.

Bitte haben Sie Verständnis dafür, dass dies nur ein Überblick ist - es gibt viel mehr über die Codezugriffssicherheit zu sagen.

+2

Beachten Sie, dass selbst eine FullTrust-Assembly immer noch durch die Betriebssystemsicherheit eingeschränkt ist. Wenn beispielsweise Benutzer Bob nicht auf Datei Y zugreifen kann, wird auch keine vollständig vertrauenswürdige Assembly in Bobs Benutzerbereich ausgeführt. – RoadWarrior

0

Vielleicht hilft etwas Kontext.

Denken Sie an etwas wie Durchsuchen Stackoverflow.Es gibt den Code aus dem Browser selbst, der alles auf Ihrem Computer tun kann (z. B. Dateien löschen) und es gibt den JavaScript-Code der Website. Der JavaScript-Code kann nichts mit Ihrem Computer tun, außer den raffinierten Fade-Effekten und einigen anderen Display-Zaubern.

.net hat die Fähigkeit, eine solche Unterscheidung zwischen lokalen Anwendungen und Remote-Anwendungen bereitzustellen. Sie können eine Anwendung schreiben, die auf dem lokalen Computer ausgeführt wird und alles auf dem lokalen Computer ausführen kann. Und diese Anwendung kann eine Funktion haben, die Erweiterung DLL aus dem Internet herunterladen. Diese Erweiterung kann Berechnungen durchführen und die Anzeige manipulieren. Aber der Code in ihnen möchte in der Lage sein, Dateien zu löschen. Weil es nicht vertrauenswürdig ist.

Die Details sind falsch, aber das ist die Idee (soweit ich es verstehe).

Verwandte Themen