Hoofdstuk 11 - Les 1

CAS (code Access Security) is een beveiligingssysteem die het toestaat administrators en ontwikkelaars controle te nemen over applicatie authorisatie op dezelfde wijze hoe zij altijd gebruikers hebben geauthoriseerd. Met CAS kan je toestaan dat 1 application leest en schrijft naar het register terwijl je lezen en schrijven naar het register van aan andere applicatie verbied. Dezelfde bronnen kunnen worden geauthoriseerd die normaal gesproken ook kunnen worden geauthoriseerd met het systeems role-base security (RBS).
Er zijn systeem bronnen die kunnen worden beveiligd die geen RBS hebben. Bijvoorbeeld web verzoeken versturen of DNS verzoeken. Met CAS kunnen dit soort dingen worden geauthoriseerd.
CAS kan enkel toegepast worden bij applicaties die in het .NET Framework draaien. Applicaties die zonder CAS draaien zijn gelimiteerd tot de RBS restricties. Als via CAS restricties zijn gekoppeld aan een applicatie dan wordt deze applicatie als partially trusted beschouwd. Sommige assemblies zijn vrijgesteld van CAS checks en worden daardoor fully trusted beschouwd. Fully assemblies, zoals unmanaged code, kunnen elke systeem bron raadplegen waar de gebruiker rechten toe heeft.

CAS identificeert assemblies door gebruik te maken van evidence. Bij evidence kan gedacht worden aan bijv. de locatie waar de assembly draait, de hash van de assembly, de assembly’s signature. De evidence van een assembly bepaald in welke code groep het hoort. Code groups geven een assembly een permission set.
Evidence is de informatie die runtime wordt verzameld over een assembly om te bepalen tot welke code groep een assembly behoort. Vormen van evidence:
  • Application directory
  • Hash
  • Publisher
  • Site
  • Strong name
  • URL
  • Zone

Er zijn twee soorten evidence: host evidence en assembly evidence. Host evidence beschrijft de herkomst van de assembly, bijv. applicatie map, URL of site. Ook kan host evidence de identiteit van de assembly beschrijven, bijv. hash, Publisher of strong name. Assembly evidence is custum user of ontwikkelaars evidence.

Een permission is een CAS access control entry. Bijv. de bestands dialoog permission bepaalt of een assembly de gebruiker een open, opslaan als of geen dialgoogvenster mag laten zien. Standaard zijn er 19 permissions beschikbaar om aan te passen in de .NET Framework 2.0 configuration tool. Elke correspondeert met twee members van het System.Security.Permissions namespace. Een voor imperatief gebruik en een voor declaratief gebruik.
Een permission set is een CAS ACL (Access Control List). Voorbeeld, het standaard Internet permission set bevat de volgende permissies:
  • Bestands dialoog
  • Isolated Storgae File
  • Beveiliging
  • User interface
  • Printen

De LocalIntranet zone bevat meer permissies, gebaseerd op de theorie dat code die draait op het lokale netwerk meer vertrouwen verdient dan een stuk code die uitgevoerd wordt vanaf internet:
  • Omgevingsvariabelen
  • Bestands dialoog
  • Reflection
  • Beveiliging
  • User interface
  • DNS
  • Printen
Het .NET Framework kent 7 standaard permissie sets.

Code groups zijn autorisatie instrumenten die assemblies associeren met permission sets. Code groups bieden eenzelfde service aan CAS als gebruikersgroepen bieden aan RBS. Voorbeeld, als een administrator een groep gebruikers toegang wilt geven tot een map, maakt de administrator een groep zet hier de gebruikers in en geeft deze groep rechten op de map. Code groups werken op dezelfde manier behalve dat er geen handmatige individuele permissions hoeven worden gezet op een assembly. In plaats hiervan is de lidmaatschap van een groep is bepaald door de evidence die wordt meegeleverd bij de assembly. Voorbeeld, code die wordt gedraaid vanaf internet moet lid zijn van de Internet_Zone groep.
Code groups maken gebruik van centrale permission sets. Er kunnen geen specifieke permissions voor een code Group gezet worden. Een code Group moet geassocieerd zijn met een permission set.
Het lijkt onvoldoende om een maar 1 type evidence en 1 permission set voor een code group te zetten, maar het is mogelijk om een assembly lid te maken van meerdere code groups. De assembly ontvangt alle permissions die zijn toegewezen op elke code Group (the Union of the permission sets). Bovendien kunnen code groups genest worden. Standaard zijn er 5 code groups.

Een security policy een logische groepering van code groups en permission sets. Security policies bieden administrators de flexibelheid om CAS instellingen te configureren op meerdere nivieaus. Standaard zijn er vier niveaus: Enterprise, Machine, User en Application.
Enterprise is het hoogste security policy niveau. Het beschrijft de policy voor de gehele enterprise. Machine policy is de een na hoogste security policy en is van toepassing op alle code die uitgevoerd wordt op een compuiter. User policy is het derde niveau en bepaalt de permissions op gebruikersniveau. Runtime worden de permissions bepaalt en de strengste policy wordt gehanteerd.

CAS is volledig onafhankelijk van OS security. Er moet een apparte tool worden gebruikt om CAS te beheren: .NET Framework 20.0 Configuration Tool.

CAS werkt bovenop het bestaande OS security. Bij het uitvoeren van een actie wordt zowel naar CAS als naar de OS security gekeken en datgeen met de minste rechten wordt toegepast.

Met Caspol.exe (Code Access Security Policy Tool)kan de Machine, User, Enterprise en CAS policies worden bekeken en aangepast. Caspol biedt dezelfde functionaliteit als de .NET Framework 20.0 Configuration Tool, maar dan via de command line.
Caspol -addfulltrust "C:\Program files\Mine\mine.exe" assemblyname.exe
Bovenstaande command line geeft full trust op mine.exe.

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren