Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Smart Clients in.NET: Leicht installieren, einfach verteilen, sicher betreiben Christof Sprenger Technologieberater.NET Strategy & Developer Group Microsoft.

Ähnliche Präsentationen


Präsentation zum Thema: "Smart Clients in.NET: Leicht installieren, einfach verteilen, sicher betreiben Christof Sprenger Technologieberater.NET Strategy & Developer Group Microsoft."—  Präsentation transkript:

1 Smart Clients in.NET: Leicht installieren, einfach verteilen, sicher betreiben Christof Sprenger Technologieberater.NET Strategy & Developer Group Microsoft GmbH

2 2 Agenda Motivation Definition des Begriffs Smart Client Grundlagen Versioning in.NET Security in.NET Einzelne Aspekte No-Touch Deployment Security und No-Touch Deployment Automatisches Update Zusammenfassung

3 3 Motivation

4 4 Thin Clients Applikation die mit einem Browser zu bedienen ist Denkbar einfaches Deployment Benutzbarkeit nicht gut wurde/wird aber immer besser Menu Bars Toolbars Keyboard Shortcuts Standard-UI Was ist mit State? Benutzereinstellungen Session Speichern von Dokumenten

5 5 Typische Thin Client Layer LayerPurposeUser State Thin Client User Interaction Current UI Web ServerUI Generation Session State Web Service Services/Logi c DatabaseData

6 6 Rich Clients Auch Desktop Applikationen genannt Jedes UI Feature verfügbar State Handling denkbar einfach Die Resourcen/Dienste des Betriebssystems und der Hardware sind vollständig nutzbar Prozessor, Festplatte, Graphik, Eingabegeräte, … Die Folge daraus: Bessere Responsiveness, Bessere Performance, Bessere Integrierbarkeit, …

7 7 Smart Clients Es gibt nicht nur die beiden Wege Rich (Fat) Clients Thin Clients Smart Client nutzen die Vorteile beider Architekturen Reichhaltiges UI Einfaches State Management Deployment über das Web Daten und Services über das Web

8 8 Smart Client Layer LayerPurposeUser State Smart Client User Interaction UI und Session Web Service Services/Logi c DatabaseData

9 9 Weitere mögliche Features Offline/Online Fähigkeit Logik beliebig auf Client oder Server ausführbar Auto Update

10 10.NET Framework & Smart Clients Was bietet.NET um das zu ermöglichen? Windows Forms für reichhaltiges UI Einfachen Zugriff auf Server Logik mit Web Services No Touch Deployment Zero Impact Install Sauberes Versioning von Komponenten Ende der DLL-Hell Security Modell Rechtezuweisung an Code (nicht nur Benutzer) Baukasten für Sandboxes ! ! ! !

11 11 Grundlagen: Versioning in.NET

12 12 Das Problem Eine Applikation wird installiert… … und läuft nicht, weil benötigte DLLs nicht gefunden werden oder nicht kompatibel sind … und läuft problemlos, aber andere Applikationen auf der Maschine haben plötzliche Probleme mit fehlenden oder inkompatiblen Versionen von benötigten DLLs

13 13 Was erreicht werden soll Verhinderung von "Nebenwirkungen" Neue Applikationen sollen bereits installierte Applikationen nicht negativ beeinflussen Zero Impact Install Unkompliziertes Deployment Installation durch Kopieren Verschieben von Applikationen Pflege der Software Bugfixes auf einfache Weise ausliefern Krisenmanagement: Was tun, wenn der Bugfix neue Bugs enthält? Hotfixes für einzelne Applikationen

14 14 Sorgenkind Registry Aufgabe der Registry Auffinden von gemeinsam genutzen Komponenten (Identity, Binding) Informationen über Komponenten speichern (Metadaten) Probleme Es gibt nur eine Registry nicht eine Pro Applikation Registry-Pflege bei Installation, Deinstallation und Wartung ist mühsam und fehleranfällig

15 15 Versionierungsärger Bisher: Der Highlander-Effekt Eine gemeinsam genutzte Komponente konnte nur einmal vorhanden sein Die Komponente musste deshalb abwärtskompatibel sein mit allen Vorgängerversionen Direkte Konsequenzen Aufwändiges Testen auf Kompabilität Was tun, wenn eine Applikation mit einer neuen Komponentenversion Probleme hatte? Die Folge war/ist die sogenannte DLL- Hell

16 16 Ein neues Komponentenmodell Komponenten unter.NET enthalten alle wichtigen Daten über sich selbst in Metadaten-Tabellen nehmen diese Informationen mit, wohin sie auch gehen Strong Names geben jeder Komponente eine eindeutige, sichere Identität Die Registry wird unnötig für Komponenten-Metadaten und Identität

17 17 Assembly Binding Laden von Komponenten Benötigte Komponenten werden vom CLR Loader über einen festgelegten Algorithmus gesucht (Assembly Binding Algorithm) Das Suchverhalten ist bei Bedarf pro Applikation konfigurierbar Die Registry wird unnötig für das Auffinden von Komponenten (Binding)

18 18 Assembly Manifest Das Manifest enthält Assembly name Version number Culture Strong name Information Public Key des Herstellers Liste aller FIles die das Assembly bilden Liste der Typen die Referenziert werden Liste von referenzierte Assemblies assembly's name, version, culture und public key

19 19 Strong Name Ein Strong Name einer Assembly besteht aus Dem einfachen textuellen Namen Einer Versionnummer (Major, Minor, Revision, Build) Culture Information (optional) Plus ein Public Key und eine Digitale Signature der Assembly Strong-Named Assemblies ermöglichen Uniqueness Versions-Abstammungslinien Integrity Check Damit die Kette nicht bricht können Strong- Named Assemblies nur wiederum andere Strong-Named Assemblies referenziern.

20 20 Der Ladevorgang Bestimmen der korrekten Version Konfigurationsdateien: application configuration, publisher policy, machine configuration. Überprüfung des Global Assembly Cache Lokalisieren der Datei Suche im Codebase Verzeichniss Sonst das sogenannte Probing Suche im Application Base Verzeichniss und in den Unterverzeichnissen mit dem Namen der Assembly und der Culture Suche im binpath Verzeichniss und in den Unterverzeichnissen mit dem Namen der Assembly und der Culture

21 21 Diagramm zum Ladevorgang

22 22 Grundlagen: Security in.NET

23 23 Das Problem

24 24 Mobiler Code heute Code aus diversen Quellen – speziell dem Internet/Intranet Code darf entweder nichts oder alles (was der Benutzer darf) Benutzer muss Entscheidung über vertrauenswürdigen Code "on the fly" treffen Kann er dies? Zertifikate helfen wenig

25 25 Code Access Security Granulares Sicherheitsmodell für "partially trusted" Code Orthogonal zu nutzerbasierter OS- Sicherheit Beruht auf Indizien ("evidence") über Assemblies auch evidence-based security genannt Verwaltung durch Sicherheitsregeln ("policies") CLR berücksichtigt bei Ausführung die dem Code zugestandenen Rechte ("permissions") Frei erweiterbar

26 26 Evidence Woher/Von Wem kommt dieser Code? Charakterisierung pro Assembly Ist unabhängig vom Ausführenden Stammt vom Host (Anwendung, IE, ASP.NET,...) oder vom Assembly selbst Die Base Class Library (BCL) definiert: Publisher (Authenticode-Zertifikate) Site (Website, von der Assembly geladen wird) Url Zone (IE-Sicherheitszone) StrongName ApplicationDirectory Hash

27 27 Permissions Was könnte dieser Code tun? Feingranulare Rechte, die an.NET- Code verliehen werden können Schützen Ressourcen & Operationen Checks zur Lauf- oder Compile-Zeit Verwendung: Vergeben durch Sicherheits-Policy Von Assembly angefordert Deklarativ & imperativ Sind unabhängig voneinander (orthogonal)

28 28 Permissions in der BCL FileIO FileDialog IsolatedStorage Environment Registry UI Printing Reflection Security Socket Web DNS OleDb SQLClient MessageQueue EventLog DirectoryServices … erweiterbar Execution, Assertion, Skip Verification, Unmanaged code, Control evidence, Control policy, Control principal, Control threads

29 29 Sicherheitsregeln Begriffe: Bedingung (membership condition): Boolesche Funktion, die Evidenz auswertet Permissionset: Gruppierung von Permissions (FullTrust, LocalIntranet,...) Codegroup: besteht aus einer membership condition und einem permission sets Bedingung ? P Codegruppe

30 30 Policy Level Codegruppen werden hierarchisch in sogenannten Policy Levels angeordnet Meist werden alle Child-CodeGroups untersucht nachdem eine Memership Condition zutrifft (Union Code Group)

31 31 Sicherheitsrichtlinien Richtlinien (policy levels): Permissionsets + Codegruppenhierarchie + vertrauenswürdige Assemblies Effektive Richtlinie: Schnittmenge der einzelnen Ebenen Enterprise policy Machine1 policy Machine2 policy User A User B User C User D

32 32 Demo.NET Konfiguration Configuration

33 33 Rechteanforderung Permission demand: Überprüfung, daß alle Aufrufer ausreichende Rechte haben stack walk: schützt gegen sog. "luring attack" Kann vorzeitig abgebrochen werden Assert(), Deny(), PermitOnly() Assembly A3 Assembly A2 Assembly A1 Assembly A4 Call Stack R2 R1 R3 R4 Dem Assembly gewährte Rechte R Methode in A4 fordert Permission P an P Vergleich von P mit den Rechten R aller aufrufenden Assemblies P P P

34 34 Imperative Sicherheitsprüfung Alle Permission-Objekte haben Demand() -Methode Ausführung zur Laufzeit wie normale Methode Vorteil: flexibel & variabel Public Sub New(fileName As String) ' Must fully qualify the path for the security check ' Must fully qualify the path for the security check Dim fullPath As String = _ Dim fullPath As String = _Directory.GetFullPathInternal(fileName) New FileIOPermission(FileIOPermissionAccess.Read, _ New FileIOPermission(FileIOPermissionAccess.Read, _fullPath).Demand() … '[rest of function] … '[rest of function] End Sub

35 35 Deklarative Sicherheitsprüfung Aktionen durch custom attributes beschrieben In den Metadaten abgespeichert Können mittels PERMVIEW.EXE oder Metadaten- APIs gelesen werden Check zur Lauf- oder Linkzeit Demand() zur Laufzeit LinkDemand(), InheritanceDemand() beim Linken Linkzeit-Aktions werden automatisch vom JIT-Compiler durchgeführt, wenn Aufrufer kompiliert oder Klasse geladen wird Für Laufzeit-Deklarationen erzeugt der JIT- Compiler Code, der die Sicherheitsprüfung durchführt

36 36 Deklarative Sicherheitsprüfung Nachteil: Deklarationen können keine Laufzeitvariablen enthalten _ _ Public Sub Foo() ' Subroutine implementation ' Subroutine implementation End Sub

37 37 Und jetzt alles zusammen … PolicyEvaluator Assembly A3 PermissionRequests SecurityPolicy Evidence G3 G3 Host Assembly A2 G2 G1 Assembly A1 Assembly A3

38 38 Demo Simple Applikation Über C:\.... Über \\localhost\c$\... Über \\ \c$\...

39 39 Starten von Applikationen über HTTP

40 40 No-Touch Deployment Der Assembly Loader ist in der Lage Assemblies über HTTP zu laden Assembly wird in den Download Cache kopiert und von dort ausgeführt Starten von Desktop Applikationen über einen Link im Browser

41 41 No-Touch Deployment Versioning greift Security greift Abhängige Assemblies werden nachgeladen Controls im Browser Ähnlich, aber nicht ganz das gleiche Sieht aus wie ActiveX Controls Jedoch anderes Security Modell Kommunikation mit HTML möglich

42 42 Demo TaskManager

43 43 Erster Download GET /foo.exe HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461;.NET CLR ) Host: localhost Connection: Keep-Alive HTTP/ OK Server: Microsoft-IIS/5.1 Date: Fri, 01 Feb :11:29 GMT Content-Type: application/octet-stream Accept-Ranges: bytes Last-Modified: Fri, 01 Feb :41:16 GMT ETag: "50aae089c1aac11:916" Content-Length: …

44 44 Folgende Downloads GET /foo.exe HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate If-Modified-Since: Fri, 01 Feb :41:16 GMT If-None-Match: "50aae089c1aac11:916" User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461;.NET CLR ) Host: localhost Connection: Keep-Alive HTTP/ Not Modified Server: Microsoft-IIS/5.1 Date: Fri, 01 Feb :42:03 GMT ETag: "a0fa92bc8aac11:916" Content-Length: 0

45 45 Wann wird was runtergeladen? Beim ersten Download kann die Runtime die Version nicht kennen Beim zweiten Download wird auch dann geladen wenn Datei neuer aber Version kleiner Abhängige Assemblies Zuerst wird überprüft ob die richtige Version im Cache GAC wird immer zuerst überprüft

46 46 Security und No-Touch Deployment

47 47 Security und No-Touch Deployment Applikationen, die über gestartet wurden sind im Normalfall in der Code Group Internet In Version 1.0 war dort das PermissionSet Internet eingetragen Im ServicePack 1 ist dort das PermissionSet Nothing eingetragen

48 48 Top-Level Code Groups Im Auslieferungszustand haben die Top- Level CodeGroups Membership-Conditions die sich an der Zone orientieren

49 49 Security Zones MyComputer_Zone PermissionSet: FullTrust LocalIntranet_Zone Permissions FileDialog IsolatedStorage Printing … Internet PermissionSet: Nothing

50 50 FileIO- und FileDialogPermission Die Permission FileIO ermöglicht Assemblies den Zugriff aufs FileSystem Dies ist meist zu viel FileIO findet sich nur im PermissionSet Everything Die Klasse FileDialog hat Methode OpenFile FileDialogPermission ist ausreichend Property FileName benötigt FileIOPermission

51 51 Rechte Erweitern Sicherheitsrichtlinien können nur den Administrator verändert werden Techniken Batchdatei mit caspol MSI Datei aus.NET Framework Configuration System Management Installer Projekt (RunInstallerAttribute) und die Klassen in System.Security.Policy

52 52 Create a new code group PermissionSet permSet1 = new NamedPermissionSet("Internet"); StrongNamePublicKeyBlob key = new StrongNamePublicKeyBlob(publicKey); IMembershipCondition membership1 = new StrongNameMembershipCondition(key, null, null); // Create the code group PolicyStatement policy1 = new PolicyStatement(permSet1); CodeGroup codeGroup1 = new UnionCodeGroup(membership1, policy1); codeGroup1.Description = More permissions for me; codeGroup1.Name = Foo"; // Add the code group machinePolicyLevel.RootCodeGroup.AddChild(codeGroup1);

53 53 Wrap Up No-Touch Deployment Einfache Installation Versioning greift Security greift Im Internet sehr restriktiv Gut geeignet für das Intranet

54 54 Automatisches Update

55 55 Versionen kontrollieren Wie kann man erreichen, dass immer neue Versionen auf den Clients verfügbar sind Was No-Touch Deployment nicht kann Offline arbeiten technisch schon, ist aber nicht praktikabel Zum Download einer neuen Version einer dependent Assembly ist ein neue Version der referenzierenden Assembly notwendig atomarer Download Download im Hintergrund

56 56.NET Updater Komponent.NET Komponente die automatisches Update erlaubt Artikel und Code auf Die Architektur der.NET Updater Komponente legt fest Where, When und How die Komponenten aktualisiert werden

57 57.NET Updater Where & When Where Es wird HTTP zum Download verwendet Internet, Intranet, Extranet Eine URL Andere Alternative BITS (siehe Artikel MSDN Magazine Februar 2003) When Thread, der meist wartet und zu bestimmten Intervallen aufwacht

58 58 Mögliche.NET Updater Hows Direct File Check Client vergleicht Datum Problem: ist nicht atomar Manifest Check Konfigurationsdatei auf dem Server Client vergleicht die enthaltene Versionsnummer oder Datum Ist atomar XML Web Service Check Logik, die serverseitig entscheidet ob Update verfügbar

59 59 Aufbau im Filesystem PROGRAM FILES MyApp AppStart.exe AppStart.exe.config V1.0 MyApp.exe V1.1 MyApp.exe Es wird immer AppStart.exe gestartet Die Configurationsdatei bestimmt Name des Folder und Name der EXE-Datei

60 60 Demo Updater Demo-Client starten Neue Version auf Server kopieren Manifest ändern Demo-Client erneut starten

61 61 Hinweis Demo verwendet DAV Windows XP bietet Background Intelligent Transfer Sevice (BITS) Siehe Artikel im MSDN Magazin Februar 2003

62 62 Und zum Schluss

63 63 Zusammenfassung Grundlagen bilden sauberes Komponentenmodell.NET Code Access Security.NET Deployment.NET Komponent Versioning Zusätzliche Techniken machen Applikationen smart Zugriff auf Web Services No Touch Deployment Automatic Update

64 64 Fragen und Antworten

65 65 Weitere Informationen Component Software, Beyond Object-oriented Programming Clemens Szyperski, Second Edition, Addison-Wesley, 2002.NET Zero Deployment Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients Chris Sells Return of the Rich Client Code Access Security and Distribution Features in.NET Enhance Client-Side Apps Jason Clark Increasing Permissions for Web-Deployed Windows Forms Applications Chris Sells DHTML and.NET, Hosting Secure Client Side Controls Jay Allen MSDN Magazine January 2001.NET Application Updater Component

66 66Empowerpeople through software any time, any place, and on any device. great

67 67


Herunterladen ppt "Smart Clients in.NET: Leicht installieren, einfach verteilen, sicher betreiben Christof Sprenger Technologieberater.NET Strategy & Developer Group Microsoft."

Ähnliche Präsentationen


Google-Anzeigen