Poznáváme C# a Microsoft .NET – 76. díl – CAS

Minulý díl poodhalil základní koncepty zabezpečení platformy .NET. My se dnes začneme zabývat konceptem CAS – Code Access Security, což v češtině znamená zabezpečení přístupu ke kódu.
Poznáváme C# a Microsoft .NET – 76. díl – CAS

Použití CAS

Smyslem CAS je řízení přístupu k chráněným prostředkům, jako jsou síť, místní disk, proměnné prostředí atd. Primárním účelem ovšem není ochrana těchto prostředků před uživateli aplikace, ale ochrana před zlomyslným kódem, který si například můžeme stáhnout z internetu či jiného nedůvěryhodného umístění. Tento systém zabezpečení běží neustále na pozadí a kontroluje zda-li všichni volající v zásobníku volání mají přístup k danému prostředku.

Pokud tomu tak není je vyhozena bezpečnostní výjimka. Možná některé z vás zarazilo ono neustálé procházení zásobníku volání a kontrola oprávnění a položili jste si otázku „A co výkon?“. Ano toto procházení zásobníku volání si bere svou daň v podobě výkonu, ale je to velmi důležité, jinak by totiž mohla assembly, která nemá dostatečnou důvěru a tedy i práva, využít volání jiné assembly s vyšší důvěrou a zneužít ji k narušení bezpečnosti.

Kromě této automatické práci na pozadí jsme schopni tento systém zabezpečení i využít na úrovni našich zdrojových kódů. Můžeme zjistit, jestli jsou v daném kontextu k dispozici potřebná oprávnění a podle toho reagovat chováním aplikace, nebo můžeme povolit či zakázat přístup k určitému prostředku ostatním assembly. Možnosti jsou opravdu bohaté a s většinou se pokusíme v rámci článků o bezpečnosti seznámit. Nyní přejděme k pojmům, se kterými jsme se seznámili v minulém díle, tedy ke kódovým skupinám a sadám oprávnění a podívejme se na ně blíže.

Kódové skupiny

K tomu, aby běhové prostředí CLR vědělo jaké oprávnění má přidělit assembly v době kdy ji zavádí do paměti, musí zjistit do jaké kódové skupiny daná assembly patří. Oprávnění totiž nejsou definována pro jednotlivé assembly, ale pro jejich skupiny, což konfiguraci zabezpečení činí velmi příjemnou. To jaké assembly budou patřit do jakých skupin, může být určeno několika různými cestami. Vždy je totiž potřeba přesně definovat podle jaké vlastnosti budou assembly přiřazovány k určité kódové skupině. Těmito vlastnostmi mohou být například:

  • Zóna – zóna odkud assembly pochází (Internet, Intranet, Lokální počítač, Důvěryhodné server…)
  • Server – server odkud assembly pochází
  • Silný název assembly
  • Vydavatel assembly
  • URL – URL odkud assembly pochází
  • Aplikační adresář – znamená, že assembly pochází z adresáře aplikace nebo z adresáře vnořeného

Nejčastěji používanou vlastností používanou pro určení členství v určité skupině je zóna, vydavatel assembly či silné jméno.

Po instalaci .NET frameworku je již několik kódových skupin předpřipraveno. Všechny tyto předpřipravené skupiny mají jako podmínku členství použitu právě zmíněnou zónu. Pro případy, kdy chceme přiřadit oprávnění assembly na základě jiných podmínek než je zóna původu musíme definovat vlastní kódovou skupinu. Při definici vlastní kódové skupiny totiž určujeme podmínku členství jednotlivých assembly do dané skupiny. Touto podmínkou může být právě jedna z možných vlastností. Assembly samozřejmě může splňovat více podmínek členství kódových skupin a tím pádem může být členem více různých kódových skupin.

Ke konfiguraci zabezpečení platformy .NET můžeme použít dvou cest. Tou první je utilita caspol.exe, se kterou se pracuje pomocí příkazového řádku a druhá cesta je představována modulem snap-in do konzoly MMC. Podle mého názoru je konfigurace příjemnější pomocí modulu, ale každý nechť činí konfiguraci podle svého gusta.

Konfigurace kódových skupin probíhá na třech různých úrovních a to na úrovni Enterprise (podniková – rozlehlá síť), Machine (počítače) a User (uživatele), což se projeví při výpočtu efektivních oprávnění pro danou assembly. Na to se podíváme později. Implicitně jsou kódové skupiny definovány pouze na úrovni počítače, tudíž oprávnění definována pouze pro ně.

Klepněte pro větší obrázek

Karta podmínka členství ve skupině v modulu snap-in ke správě zabezpečení .NET frameworku

Klepněte pro větší obrázek

Založení nové kódové skupiny pomocí modulu snap-in

Sady oprávnění

Již tedy víme, že běhové prostředí CLR při každém zavádění assembly do paměti shromažďuje legitimaci assembly a na základě těchto informací přiřadí assembly do jednotlivých skupin. To jaké operace je umožněno kódům v assembly provádět je definováno pomocí sad oprávnění. Sada oprávnění jsou to z důvodu, že v .NET frameworku se k jednotlivým kódovým skupinám neasociují jednotlivá oprávnění, ale přidružují se k blokům, které mohou obsahovat několik oprávnění. Každá kódová skupina definuje, kterou sadu oprávnění získá kód, který do ní patří.

Klepněte pro větší obrázek

Karta zobrazující přidruženou sadu oprávnění k určité kódové skupině

Tyto sady tedy obsahují výčet oprávnění pro vykovávání přístupů k prostředkům, mezi nejpoužívanější patří například tyto typy oprávnění:

  • FileIOPermission – oprávnění pro práci se soubory a s adresáři
  • DnsPermission – oprávnění pro práci se službou DNS
  • EventLogPermission – oprávnění pro práci z protokolem událostí
  • EnvironmentPermission – oprávnění pro práci s proměnnými prostředí
  • OleDbPermission – oprávnění k přístupu k databázím pomocí rozhraní OLE DB
  • PrintingPermission – oprávnění k tisku
  • ReflectionPermission – oprávnění k používání mechanismu reflexe
  • RegistryPermission – oprávnění k používání registrů systému Windows
  • SecurityPermission – oprávnění ke spouštění kódu, využívání mechanismu zabezpečení, volání neřízeného kódu…
  • SqlClientPermission – oprávnění k využívání funkčnost datového poskytovatele pro SQL server
  • SocketPermission – oprávnění k přijímání či vytváření spojení transportní vrstvy protokolu TCP/IP
  • UIPermission – oprávnění k využívání uživatelského rozhraní
  • WebPermission – oprávnění k přístupu ke zdrojům pomocí protokolu HTTP

Stejně jako v případě kódových skupin jsou i oprávnění definována na třech úrovních (Uživatel, počítač, podniková síť). Na úrovní počítače jsou po instalaci prostředí .NET vytvořeny základní sady oprávnění:

  • FullTrust – Tato sada oprávnění uděluje kódu neomezený přístup k chráněným prostředkům. Jinými slovy pokud je assembly členem kódové skupiny, ke které je přidružena tato sada oprávnění, může její kód provádět takřka vše.
  • SkipVerification – Umožňuje přeskočit ověřování bezpečnostním systémem
  • Execution – Povoluje spouštění kódu v assembly avšak ne přístup k chráněným prostředkům
  • Nothing -Tato sada neobsahuje žádné oprávnění ani oprávnění na spouštění kódu assembly
  • LocalIntranet – Výchozí sada oprávnění pro kód pocházející z místního intranetu
  • Internet – Výchozí sada oprávnění pro kód pocházející z internetu
  • Everything – Tato sada oprávnění obsahuje všechna oprávnění kromě oprávnění přeskočit ověřování

Klepněte pro větší obrázek

Zobrazení sady oprávnění

Klepněte pro větší obrázek

Založení nové sady oprávnění

Výsledná oprávnění kódu

Jak jsem zmínil o pár řádek výše, tak assembly může patřit do několika různých kódových skupin. Jelikož každá kódová skupina má k sobě přidruženu jednu sadu oprávnění je otázkou, jaké má vlastně assembly výsledná oprávnění, pokud patří do různých kódových skupin. Navíc ještě když můžou být kódové skupiny definovány na třech úrovních. Není to ale vůbec složité. Na jedné úrovni jsou celková oprávnění sjednocením všech oprávnění, které jsou jednotlivým skupinám přiřazena. Lze tedy jinými slovy říci, že každým členstvím ve skupině assembly přibývají oprávnění.

Pokud nám do tohoto výpočtu celkových oprávnění vstoupí ještě různé úrovně, na kterých mohou kódové skupiny a sady oprávnění existovat, musíme vědět to, že výsledná práva jsou průnikem celkových oprávnění na jednotlivých úrovních. To znamená, že na nižších úrovních mohou být jednotlivá oprávnění překryta, což velmi zpříjemňuje práci správcům, kteří jsou díky této vlastnosti schopni určit specifická oprávnění pro konkrétní uživatele.

Příštím dílem se již začneme zaobírat programovým využitím systému zabezpečení.

Témata článku: Software, Microsoft, Internet, Programování, Snap, Daný řádek, Reflex, Nejpoužívanější síť

5 komentářů

Nejnovější komentáře

  • Kris 28. 7. 2006 9:55:50
    Zdravim,
    chcel by som sa opytat, ci je mozne nejako programovo zmenit...
  • gully, gully 12. 7. 2006 10:55:19
    Diky. Abych se priznal, zatim jsem o teto moznosti neuvazoval.
  • SneakerXZ 6. 7. 2006 14:21:59
    Šikovna věc ta offline verze, ale neuvažujete taky do exportu do PDF?...
Určitě si přečtěte

Jak vybrat monitor k počítači: nenechte se zlákat nepodstatnými parametry

Jak vybrat monitor k počítači: nenechte se zlákat nepodstatnými parametry

** Na jaké parametry se zaměřit a kde vás výrobci chtějí nachytat ** Monitory se stále více specifikují pro konkrétní určení ** Náročný hráč nebo profesionální grafik mají různé požadavky

20.  6.  2017 | Tomáš Holčík | 32

Dlouhodobý test HTC Vive: co vám recenze o virtuální realitě neřeknou

Dlouhodobý test HTC Vive: co vám recenze o virtuální realitě neřeknou

** Ani hry se sebelepší grafikou vás nevtáhnou tolik, jako ve virtuální realitě ** Pro sledování filmů není VR ani zdaleka ideální ** I první generace je skvělá, stále však působí jako prototyp

20.  6.  2017 | Stanislav Janů | 22

11 tipů, jak efektivně a přesně sledovat počasí pomocí internetu

11 tipů, jak efektivně a přesně sledovat počasí pomocí internetu

** Sledujte počasí z více zdrojů a podrobněji, přesněji tak určíte, jaké počasí vás potká na dovolené ** Na webu najdete hromadu pokročilých předpovědí počasí, ale i specializované meteorologické služby ** Vybrali jsme 14 služeb na počasí, které se vám můžou hodit

23.  6.  2017 | Jakub Čížek | 18

Jak unikají informace o nových iPhonech? Třeba podprsenkami čínských pracovnic

Jak unikají informace o nových iPhonech? Třeba podprsenkami čínských pracovnic

** Na černém trhu mohou zaměstnanci továren za kradené součástky inkasovat částku ve výši ročního platu ** Velké množství informací je vyneseno i z centrály Applu ** Díly jsou pašovány v botách, podprsenkách i odpadem

21.  6.  2017 | Stanislav Janů | 24


Aktuální číslo časopisu Computer

Bojujeme proti Fake News

Dva velké testy: fotoaparáty a NASy

Co musíte vědět o změně evropského roamingu

Radíme s výběrem základní desky